|
14 | 14 | NESTED_ENTRY KiSystemStartup
|
15 | 15 | PROLOG_END KiSystemStartup
|
16 | 16 |
|
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 |
23 | 19 | ldr sp, [a1, #LpbInterruptStack]
|
24 |
| - mov r8, #0 |
25 |
| - mov r9, #0 |
26 |
| - mov r10, #0 |
27 | 20 |
|
28 | 21 | /* 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 |
32 | 23 | ldr sp, [a1, #LpbInterruptStack]
|
33 |
| - mov r8, #0 |
34 |
| - mov r9, #0 |
35 |
| - mov r10, #0 |
36 | 24 |
|
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 |
43 | 27 | ldr sp, [a1, #LpbPanicStack]
|
44 | 28 |
|
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 |
51 | 31 | ldr sp, [a1, #LpbPanicStack]
|
52 | 32 |
|
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 |
59 | 35 | ldr sp, [a1, #LpbKernelStack]
|
60 | 36 |
|
61 | 37 | /* Go to C code */
|
|
0 commit comments