[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
This commit is contained in:
Sir Richard 2010-02-09 01:54:14 +00:00
parent acb344ee2a
commit 60fd785e82

View file

@ -14,61 +14,53 @@
NESTED_ENTRY KiSystemStartup NESTED_ENTRY KiSystemStartup
PROLOG_END KiSystemStartup PROLOG_END KiSystemStartup
// /* Put us in FIQ mode */
// Put us in FIQ mode
//
b .
mrs r3, cpsr mrs r3, cpsr
orr r3, r1, #CPSR_FIQ_MODE orr r3, r1, #CPSR_FIQ_MODE
msr cpsr, r3 msr cpsr, r3
// /* Set FIQ stack and registers */
// Set FIQ stack and registers ldr sp, [a1, #LpbInterruptStack]
//
ldr sp, [a2, #LpbInterruptStack]
mov r8, #0 mov r8, #0
mov r9, #0 mov r9, #0
mov r10, #0 mov r10, #0
// /* Repeat for IRQ mode */
// Put us in ABORT 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 mrs r3, cpsr
orr r3, r1, #CPSR_ABORT_MODE orr r3, r1, #CPSR_ABORT_MODE
msr cpsr, r3 msr cpsr, r3
// /* Set panic stack */
// Set panic stack ldr sp, [a1, #LpbPanicStack]
//
ldr sp, [a2, #LpbPanicStack]
// /* Put us in UND (Undefined) mode */
// Put us in UND (Undefined) mode
//
mrs r3, cpsr mrs r3, cpsr
orr r3, r1, #CPSR_UND_MODE orr r3, r1, #CPSR_UND_MODE
msr cpsr, r3 msr cpsr, r3
// /* Set panic stack */
// Set panic stack ldr sp, [a1, #LpbPanicStack]
//
ldr sp, [a2, #LpbPanicStack]
// /* Put us into SVC (Supervisor) mode */
// Put us into SVC (Supervisor) mode
//
mrs r3, cpsr mrs r3, cpsr
orr r3, r1, #CPSR_SVC_MODE orr r3, r1, #CPSR_SVC_MODE
msr cpsr, r3 msr cpsr, r3
// /* Switch to boot kernel stack */
// Switch to boot kernel stack ldr sp, [a1, #LpbKernelStack]
//
ldr sp, [a2, #LpbKernelStack]
// /* Go to C code */
// Go to C code
//
b KiInitializeSystem b KiInitializeSystem
ENTRY_END KiSystemStartup ENTRY_END KiSystemStartup
/* EOF */