- Start major ARM port cleanup:

- Make use of the SARCH rbuild parameter to define the target board (default to ARM VersatilePB for now)
  - Make official ARM include directory (include/reactos/arm) and move the ARM DDK there
  - Start creating header files for different target board components.
- Update halfuncs in NDK with one missing function, and temporarily, one ARM function.

svn path=/trunk/; revision=33979
This commit is contained in:
ReactOS Portable Systems Group 2008-06-15 06:14:02 +00:00
parent a52eaf94d5
commit b300ac4364
8 changed files with 147 additions and 9 deletions

View file

@ -12,9 +12,15 @@
<define name="_ARM_" />
<define name="__arm__" />
<include>include/reactos/arm</include>
<property name="WINEBUILD_FLAGS" value="--kill-at"/>
<property name="NTOSKRNL_SHARED" value="-Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -shared"/>
<if property="SARCH" value="versatile">
<define name="BOARD_CONFIG_VERSATILE"/>
</if>
<if property="OPTIMIZE" value="1">
<compilerflag>-Os</compilerflag>
<compilerflag>-ftracer</compilerflag>

View file

@ -14,15 +14,16 @@
<!--
Sub-architecture to build for. Specify one of:
Sub-architecture (board) to build for. Specify one of:
kurobox versatile
-->
<property name="SARCH" value="" />
<property name="SARCH" value="versatile" />
<!--
Which CPU ReactOS should be optimized for. Specify one of:
armv4, armv4t, armv5, armv5te
armv5te
See GCC manual for more CPU names and which CPUs GCC can optimize for.
-->

View file

@ -137,6 +137,12 @@ HalBeginSystemInterrupt(
PKIRQL OldIrql
);
VOID
FASTCALL
HalClearSoftwareInterrupt(
IN KIRQL Request
);
NTHALAPI
BOOLEAN
NTAPI
@ -162,6 +168,13 @@ HalEndSystemInterrupt(
ULONG Vector
);
#ifdef _ARM_ // FIXME: ndk/arm? armddk.h?
ULONG
HalGetInterruptSource(
VOID
);
#endif
NTHALAPI
VOID
NTAPI

View file

@ -0,0 +1,58 @@
/*
* PROJECT: ReactOS Kernel
* LICENSE: GPL - See COPYING in the top level directory
* FILE: include/reactos/arm/targets/pl011.h
* PURPOSE: PL011 Registers and Constants
* PROGRAMMERS: ReactOS Portable Systems Group
*/
/* GLOBALS ********************************************************************/
//
// UART Registers
//
#define UART_BASE (PVOID)0xE00F1000 /* HACK: freeldr mapped it here */
#define UART_PL01x_DR (UART_BASE + 0x00)
#define UART_PL01x_RSR (UART_BASE + 0x04)
#define UART_PL01x_ECR (UART_BASE + 0x04)
#define UART_PL01x_FR (UART_BASE + 0x18)
#define UART_PL011_IBRD (UART_BASE + 0x24)
#define UART_PL011_FBRD (UART_BASE + 0x28)
#define UART_PL011_LCRH (UART_BASE + 0x2C)
#define UART_PL011_CR (UART_BASE + 0x30)
#define UART_PL011_IMSC (UART_BASE + 0x38)
//
// LCR Values
//
typedef union _PL011_LCR_REGISTER
{
ULONG Todo;
} PL011_LCR_REGISTER, *PPL011_LCR_REGISTER;
#define UART_PL011_LCRH_WLEN_8 0x60
#define UART_PL011_LCRH_FEN 0x10
//
// FCR Values
//
typedef union _PL011_FCR_REGISTER
{
ULONG Todo;
} PL011_FCR_REGISTER, *PPL011_FCR_REGISTER;
#define UART_PL011_CR_UARTEN 0x01
#define UART_PL011_CR_TXE 0x100
#define UART_PL011_CR_RXE 0x200
//
// LSR Values
//
typedef union _PL011_LSR_REGISTER
{
ULONG Todo;
} PL011_LSR_REGISTER, *PPL011_LSR_REGISTER;
#define UART_PL01x_FR_RXFE 0x10
#define UART_PL01x_FR_TXFF 0x20

View file

@ -0,0 +1,20 @@
/*
* PROJECT: ReactOS Kernel
* LICENSE: GPL - See COPYING in the top level directory
* FILE: include/reactos/arm/targets/pl190.h
* PURPOSE: PL190 Registers and Constants
* PROGRAMMERS: ReactOS Portable Systems Group
*/
/* GLOBALS ********************************************************************/
//
// VIC Registers
//
#define VIC_BASE (PVOID)0xE0040000 /* HACK: freeldr mapped it here */
#define VIC_INT_STATUS (VIC_BASE + 0x00)
#define VIC_INT_ENABLE (VIC_BASE + 0x10)
#define VIC_INT_CLEAR (VIC_BASE + 0x14)
#define VIC_SOFT_INT (VIC_BASE + 0x18
#define VIC_SOFT_INT_CLEAR (VIC_BASE + 0x1C)

View file

@ -0,0 +1,46 @@
/*
* PROJECT: ReactOS Kernel
* LICENSE: GPL - See COPYING in the top level directory
* FILE: include/reactos/arm/targets/pl011.h
* PURPOSE: SB804 Registers and Constants
* PROGRAMMERS: ReactOS Portable Systems Group
*/
/* GLOBALS ********************************************************************/
//
// Timer Registers
//
#define TIMER_BASE(x) (PVOID)(0xE00E2000 + (x * 0x1000)) /* HACK: freeldr mapped it here */
#define TIMER0_LOAD TIMER_BASE(0, 0x00)
#define TIMER0_VALUE TIMER_BASE(0, 0x04)
#define TIMER0_CONTROL TIMER_BASE(0, 0x08)
#define TIMER0_INT_CLEAR TIMER_BASE(0, 0x0C)
#define TIMER0_INT_STATUS TIMER_BASE(0, 0x10)
#define TIMER0_INT_MASK TIMER_BASE(0, 0x14)
#define TIMER0_BACKGROUND_LOAD TIMER_BASE(0, 0x18)
#define TIMER1_LOAD TIMER_BASE(1, 0x00)
#define TIMER1_VALUE TIMER_BASE(1, 0x04)
#define TIMER1_CONTROL TIMER_BASE(1, 0x08)
#define TIMER1_INT_CLEAR TIMER_BASE(1, 0x0C)
#define TIMER1_INT_STATUS TIMER_BASE(1, 0x10)
#define TIMER1_INT_MASK TIMER_BASE(1, 0x14)
#define TIMER1_BACKGROUND_LOAD TIMER_BASE(1, 0x18)
//
// Control Register
//
typedef union _SP804_CONTROL_REGISTER
{
struct
{
ULONG Wrap:1;
ULONG Wide:1;
ULONG Prescale:2;
ULONG Reserved:1;
ULONG Interrupt:1;
ULONG Periodic:1;
ULONG Enabled:1;
};
ULONG AsUlong;
} SP804_CONTROL_REGISTER, *PSP804_CONTROL_REGISTER;

View file

@ -27,12 +27,6 @@ KiSystemCall(
/* FUNCTIONS ******************************************************************/
ULONG
HalGetInterruptSource(VOID);
VOID FASTCALL
HalClearSoftwareInterrupt(IN KIRQL Request);
VOID
KiIdleLoop(VOID)
{