[ros-diffs] [sir_richard] 45507: [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).

sir_richard at svn.reactos.org sir_richard at svn.reactos.org
Tue Feb 9 02:54:15 CET 2010


Author: sir_richard
Date: Tue Feb  9 02:54:14 2010
New Revision: 45507

URL: http://svn.reactos.org/svn/reactos?rev=45507&view=rev
Log:
[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).

Modified:
    trunk/reactos/ntoskrnl/ke/arm/boot.s

Modified: trunk/reactos/ntoskrnl/ke/arm/boot.s
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/arm/boot.s?rev=45507&r1=45506&r2=45507&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/ke/arm/boot.s [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ke/arm/boot.s [iso-8859-1] Tue Feb  9 02:54:14 2010
@@ -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 */




More information about the Ros-diffs mailing list