diff --git a/reactos/hal/halarm/generic/hal.c b/reactos/hal/halarm/generic/hal.c index 20e6e29d94c..019d084005f 100644 --- a/reactos/hal/halarm/generic/hal.c +++ b/reactos/hal/halarm/generic/hal.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -135,13 +136,15 @@ HalAdjustResourceList( } +/* + * @implemented + */ BOOLEAN NTAPI HalAllProcessorsStarted(VOID) { - UNIMPLEMENTED; - - return TRUE; + /* Do nothing */ + return TRUE; } @@ -733,17 +736,32 @@ HalQueryDisplayParameters( UNIMPLEMENTED; } +#define RTC_DATA (PVOID)0xE00E8000 BOOLEAN NTAPI -HalQueryRealTimeClock( - PTIME_FIELDS Time) +HalQueryRealTimeClock(IN PTIME_FIELDS Time) { - UNIMPLEMENTED; - return FALSE; + LARGE_INTEGER LargeTime; + ULONG Seconds; + + // + // Query the RTC value + // + Seconds = READ_REGISTER_ULONG(RTC_DATA); + + // + // Convert to time + // + RtlSecondsSince1970ToTime(Seconds, &LargeTime); + + // + // Convert to time-fields + // + RtlTimeToTimeFields(&LargeTime, Time); + return TRUE; } - ULONG NTAPI HalReadDmaCounter( diff --git a/reactos/ntoskrnl/config/arm/cmhardwr.c b/reactos/ntoskrnl/config/arm/cmhardwr.c new file mode 100644 index 00000000000..b7a0291084d --- /dev/null +++ b/reactos/ntoskrnl/config/arm/cmhardwr.c @@ -0,0 +1,25 @@ +/* + * PROJECT: ReactOS Kernel + * LICENSE: GPL - See COPYING in the top level directory + * FILE: ntoskrnl/config/arm/cmhardwr.c + * PURPOSE: Configuration Manager - ARM Specific Code + * PROGRAMMERS: ReactOS Portable Systems Group + */ + +/* INCLUDES ******************************************************************/ + +#include "ntoskrnl.h" +#define NDEBUG +#include "debug.h" + +/* GLOBALS *******************************************************************/ + +/* FUNCTIONS *****************************************************************/ + +NTSTATUS +NTAPI +CmpInitializeMachineDependentConfiguration(IN PLOADER_PARAMETER_BLOCK LoaderBlock) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} diff --git a/reactos/ntoskrnl/ex/init.c b/reactos/ntoskrnl/ex/init.c index cea276535a1..c9243ff9d4a 100644 --- a/reactos/ntoskrnl/ex/init.c +++ b/reactos/ntoskrnl/ex/init.c @@ -1265,12 +1265,6 @@ Phase1InitializationDiscard(IN PVOID Context) OBJECT_ATTRIBUTES ObjectAttributes; HANDLE KeyHandle, OptionHandle; PRTL_USER_PROCESS_PARAMETERS ProcessParameters = NULL; -#ifdef _ARM_ - DPRINT1("*** Phase 1 Initialization Thread\n"); - DPRINT1("Beginning consistency checks...\n"); - // CHECK STACKS, IRQLS, DISPATCHER AND MAKE SURE WE ARE GOOD TO GO! - //while (TRUE); -#endif /* Allocate the initialization buffer */ InitBuffer = ExAllocatePoolWithTag(NonPagedPool, diff --git a/reactos/ntoskrnl/ke/arm/kiinit.c b/reactos/ntoskrnl/ke/arm/kiinit.c index 0d5f3182977..d4ecb96c13c 100644 --- a/reactos/ntoskrnl/ke/arm/kiinit.c +++ b/reactos/ntoskrnl/ke/arm/kiinit.c @@ -40,6 +40,16 @@ DebugService(IN ULONG ServiceType, arm_kprintf("%s", Buffer); } +VOID +NTAPI +KiInitMachineDependent(VOID) +{ + // + // There is nothing to do on ARM + // + return; +} + VOID NTAPI KiInitializeKernel(IN PKPROCESS InitProcess, diff --git a/reactos/ntoskrnl/ke/arm/stubs_asm.s b/reactos/ntoskrnl/ke/arm/stubs_asm.s index 8e2b242e01a..1fa2da22bca 100644 --- a/reactos/ntoskrnl/ke/arm/stubs_asm.s +++ b/reactos/ntoskrnl/ke/arm/stubs_asm.s @@ -45,9 +45,7 @@ GENERATE_ARM_STUB KeDisableInterrupts GENERATE_ARM_STUB KiDispatchException GENERATE_ARM_STUB KiSwapProcess GENERATE_ARM_STUB KeSwitchKernelStack -GENERATE_ARM_STUB KiInitMachineDependent GENERATE_ARM_STUB KiComputeTimerTableIndex -GENERATE_ARM_STUB CmpInitializeMachineDependentConfiguration // // Traps, Debugging and Execeptions diff --git a/reactos/ntoskrnl/ke/arm/trap.s b/reactos/ntoskrnl/ke/arm/trap.s index b282d662080..e7170cd525a 100644 --- a/reactos/ntoskrnl/ke/arm/trap.s +++ b/reactos/ntoskrnl/ke/arm/trap.s @@ -400,7 +400,7 @@ CopyLoop: cmp r6, #4 //strne sp, [r5], #4 //subne r6, r6, #1 - beq . + bge . // // Now do the system call diff --git a/reactos/ntoskrnl/ke/arm/trapc.c b/reactos/ntoskrnl/ke/arm/trapc.c index 161e8451758..57243d5c1ee 100644 --- a/reactos/ntoskrnl/ke/arm/trapc.c +++ b/reactos/ntoskrnl/ke/arm/trapc.c @@ -492,13 +492,27 @@ KiSystemService(IN PKTHREAD Thread, if (ArgumentCount > 4) { // - // FIXME: Validate the user stack + // Check where the stack is // - + if (Thread->PreviousMode == UserMode) + { + // + // FIXME: Validate the user stack + // + Argument = (PULONG)TrapFrame->UserSp; + } + else + { + // + // We were called from the kernel + // + Argument = (PULONG)TrapFrame->SvcSp; + } + // // Copy the rest // - Argument = (PULONG)TrapFrame->UserSp; + DPRINT1("Stack: %p\n", Argument); for (i = 4; i < ArgumentCount; i++) { // diff --git a/reactos/ntoskrnl/ntoskrnl-generic.rbuild b/reactos/ntoskrnl/ntoskrnl-generic.rbuild index b5e1fd572ce..d3ee6313b61 100644 --- a/reactos/ntoskrnl/ntoskrnl-generic.rbuild +++ b/reactos/ntoskrnl/ntoskrnl-generic.rbuild @@ -126,6 +126,11 @@ cmhardwr.c + + + cmhardwr.c + + cmhardwr.c