Skip to content

Commit 8aff466

Browse files
author
evb
committed
- Fix wrong initialization of different modes and stacks.
svn path=/trunk/; revision=45532
1 parent 0505129 commit 8aff466

File tree

1 file changed

+9
-33
lines changed

1 file changed

+9
-33
lines changed

reactos/ntoskrnl/ke/arm/boot.s

Lines changed: 9 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -14,48 +14,24 @@
1414
NESTED_ENTRY KiSystemStartup
1515
PROLOG_END KiSystemStartup
1616

17-
/* Put us in FIQ mode */
18-
mrs r3, cpsr
19-
orr r3, r1, #CPSR_FIQ_MODE
20-
msr cpsr, r3
21-
22-
/* Set FIQ stack and registers */
17+
/* Put us in FIQ mode, set IRQ stack */
18+
msr cpsr_c, #CPSR_FIQ_MODE
2319
ldr sp, [a1, #LpbInterruptStack]
24-
mov r8, #0
25-
mov r9, #0
26-
mov r10, #0
2720

2821
/* Repeat for IRQ mode */
29-
mrs r3, cpsr
30-
orr r3, r1, #CPSR_IRQ_MODE
31-
msr cpsr, r3
22+
msr cpsr_c, #CPSR_IRQ_MODE
3223
ldr sp, [a1, #LpbInterruptStack]
33-
mov r8, #0
34-
mov r9, #0
35-
mov r10, #0
3624

37-
/* Put us in ABORT mode */
38-
mrs r3, cpsr
39-
orr r3, r1, #CPSR_ABORT_MODE
40-
msr cpsr, r3
41-
42-
/* Set panic stack */
25+
/* Put us in ABORT mode and set the panic stack */
26+
msr cpsr_c, #CPSR_ABORT_MODE
4327
ldr sp, [a1, #LpbPanicStack]
4428

45-
/* Put us in UND (Undefined) mode */
46-
mrs r3, cpsr
47-
orr r3, r1, #CPSR_UND_MODE
48-
msr cpsr, r3
49-
50-
/* Set panic stack */
29+
/* Repeat for UND (Undefined) mode */
30+
msr cpsr_c, #CPSR_UND_MODE
5131
ldr sp, [a1, #LpbPanicStack]
5232

53-
/* Put us into SVC (Supervisor) mode */
54-
mrs r3, cpsr
55-
orr r3, r1, #CPSR_SVC_MODE
56-
msr cpsr, r3
57-
58-
/* Switch to boot kernel stack */
33+
/* Put us into SVC (Supervisor) mode and set the kernel stack */
34+
msr cpsr_c, #CPSR_SVC_MODE
5935
ldr sp, [a1, #LpbKernelStack]
6036

6137
/* Go to C code */

0 commit comments

Comments
 (0)