From 60fd785e82db87191332f4aeb039958485193f72 Mon Sep 17 00:00:00 2001 From: Sir Richard Date: Tue, 9 Feb 2010 01:54:14 +0000 Subject: [PATCH] [NTOS]: Forgot to setup an IRQ stack, the kernel was working by magic since in previous incarnations of the ARM port, 0xFFFFyyyy was mapped, so a stack of 0 worked (going downwards). [NTOS]: Now FreeLDR just calls the KiSystemStartup routine correctly, without any "magic", so fix the code to use a1 instead of a2 (argument 1/2). svn path=/trunk/; revision=45507 --- reactos/ntoskrnl/ke/arm/boot.s | 56 +++++++++++++++------------------- 1 file changed, 24 insertions(+), 32 deletions(-) diff --git a/reactos/ntoskrnl/ke/arm/boot.s b/reactos/ntoskrnl/ke/arm/boot.s index 48fd667bf9a..bd6e8a80e32 100644 --- a/reactos/ntoskrnl/ke/arm/boot.s +++ b/reactos/ntoskrnl/ke/arm/boot.s @@ -14,61 +14,53 @@ NESTED_ENTRY KiSystemStartup PROLOG_END KiSystemStartup - // - // Put us in FIQ mode - // - b . + /* Put us in FIQ mode */ mrs r3, cpsr orr r3, r1, #CPSR_FIQ_MODE msr cpsr, r3 - // - // Set FIQ stack and registers - // - ldr sp, [a2, #LpbInterruptStack] + /* Set FIQ stack and registers */ + ldr sp, [a1, #LpbInterruptStack] mov r8, #0 mov r9, #0 mov r10, #0 - // - // Put us in ABORT mode - // + /* Repeat for IRQ mode */ + mrs r3, cpsr + orr r3, r1, #CPSR_IRQ_MODE + msr cpsr, r3 + ldr sp, [a1, #LpbInterruptStack] + mov r8, #0 + mov r9, #0 + mov r10, #0 + + /* Put us in ABORT mode */ mrs r3, cpsr orr r3, r1, #CPSR_ABORT_MODE msr cpsr, r3 - // - // Set panic stack - // - ldr sp, [a2, #LpbPanicStack] + /* Set panic stack */ + ldr sp, [a1, #LpbPanicStack] - // - // Put us in UND (Undefined) mode - // + /* Put us in UND (Undefined) mode */ mrs r3, cpsr orr r3, r1, #CPSR_UND_MODE msr cpsr, r3 - // - // Set panic stack - // - ldr sp, [a2, #LpbPanicStack] + /* Set panic stack */ + ldr sp, [a1, #LpbPanicStack] - // - // Put us into SVC (Supervisor) mode - // + /* Put us into SVC (Supervisor) mode */ mrs r3, cpsr orr r3, r1, #CPSR_SVC_MODE msr cpsr, r3 - // - // Switch to boot kernel stack - // - ldr sp, [a2, #LpbKernelStack] + /* Switch to boot kernel stack */ + ldr sp, [a1, #LpbKernelStack] - // - // Go to C code - // + /* Go to C code */ b KiInitializeSystem ENTRY_END KiSystemStartup + +/* EOF */