mirror of
https://github.com/reactos/reactos.git
synced 2024-08-30 07:08:19 +00:00
[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:
parent
acb344ee2a
commit
60fd785e82
|
@ -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 */
|
||||||
|
|
Loading…
Reference in a new issue