From 8aff466da397a3cc354b80fab0034c290e396aad Mon Sep 17 00:00:00 2001 From: evb Date: Tue, 9 Feb 2010 18:05:01 +0000 Subject: [PATCH] - Fix wrong initialization of different modes and stacks. svn path=/trunk/; revision=45532 --- reactos/ntoskrnl/ke/arm/boot.s | 42 ++++++++-------------------------- 1 file changed, 9 insertions(+), 33 deletions(-) diff --git a/reactos/ntoskrnl/ke/arm/boot.s b/reactos/ntoskrnl/ke/arm/boot.s index bd6e8a80e32..eff065cacbc 100644 --- a/reactos/ntoskrnl/ke/arm/boot.s +++ b/reactos/ntoskrnl/ke/arm/boot.s @@ -14,48 +14,24 @@ NESTED_ENTRY KiSystemStartup PROLOG_END KiSystemStartup - /* Put us in FIQ mode */ - mrs r3, cpsr - orr r3, r1, #CPSR_FIQ_MODE - msr cpsr, r3 - - /* Set FIQ stack and registers */ + /* Put us in FIQ mode, set IRQ stack */ + msr cpsr_c, #CPSR_FIQ_MODE ldr sp, [a1, #LpbInterruptStack] - mov r8, #0 - mov r9, #0 - mov r10, #0 /* Repeat for IRQ mode */ - mrs r3, cpsr - orr r3, r1, #CPSR_IRQ_MODE - msr cpsr, r3 + msr cpsr_c, #CPSR_IRQ_MODE 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 */ + /* Put us in ABORT mode and set the panic stack */ + msr cpsr_c, #CPSR_ABORT_MODE ldr sp, [a1, #LpbPanicStack] - /* Put us in UND (Undefined) mode */ - mrs r3, cpsr - orr r3, r1, #CPSR_UND_MODE - msr cpsr, r3 - - /* Set panic stack */ + /* Repeat for UND (Undefined) mode */ + msr cpsr_c, #CPSR_UND_MODE ldr sp, [a1, #LpbPanicStack] - /* Put us into SVC (Supervisor) mode */ - mrs r3, cpsr - orr r3, r1, #CPSR_SVC_MODE - msr cpsr, r3 - - /* Switch to boot kernel stack */ + /* Put us into SVC (Supervisor) mode and set the kernel stack */ + msr cpsr_c, #CPSR_SVC_MODE ldr sp, [a1, #LpbKernelStack] /* Go to C code */