@@ -21,15 +21,17 @@ __start:
2121 mrs x0 , tpidr_el1
2222 cbz x0 , .L__cpu_0 / * .L prefix is the local label in ELF * /
2323
24+ #ifndef RT_AMP_SLAVE
2425 / * cpu id > 0 , stop * /
2526 / * cpu id == 0 will also goto here after returned from entry() if possible * /
2627.L__current_cpu_idle:
2728 wfe
2829 b .L__current_cpu_idle
30+ #endif
2931
3032.L__cpu_0:
3133 / * set stack before our code , Define stack pointer for current exception level * /
32- adr x1 , __start
34+ adr x1 , .el_stack_top
3335
3436 / * set up EL1 * /
3537 mrs x0 , CurrentEL / * CurrentEL Register. bit 2 , 3 . Others reserved * /
@@ -114,13 +116,11 @@ __start:
114116 sub x3 , x3 , # 1
115117 b .L__clean_bss_loop_1
116118
117- .L__jump_to_entry: / * jump to C code , should not return * /
119+ .L__jump_to_entry: / * jump to C code , should not return * /
118120 bl mmu_tcr_init
119121
120- adr x1 , __start / * install early page table * /
121- ldr x0 , =~ 0x1fffff
122- and x0 , x1 , x0
123- add x1 , x0 , # 0x1000
122+ adr x0 , .early_mmu_table / * install early page table * /
123+ add x1 , x0 , # 0x1000
124124
125125 msr ttbr0_el1 , x0
126126 msr ttbr1_el1 , x1
@@ -133,8 +133,8 @@ __start:
133133#else
134134 mov x3 , 0
135135#endif
136-
137- ldr x2 , = 0x40000000 / * map 1G memory for kernel space * /
136+
137+ ldr x2 , = 0x01000000 / * map 16M memory for kernel space * /
138138 bl rt_hw_mem_setup_early
139139
140140 ldr x30 , =after_mmu_enable / * set LR to after_mmu_enable function , it's a v_addr * /
@@ -168,7 +168,7 @@ after_mmu_enable:
168168
169169 mov x0 , # 1
170170 msr spsel , x0
171- adr x1 , __start
171+ adr x1 , .el_stack_top
172172 mov sp , x1 / * sp_el1 set to _start * /
173173
174174 b rtthread_startup
@@ -181,7 +181,7 @@ after_mmu_enable:
181181. global _secondary_cpu_entry
182182_secondary_cpu_entry:
183183 bl rt_hw_cpu_id_set
184- adr x1 , __start
184+ adr x1 , .el_stack_top
185185
186186 / * set up EL1 * /
187187 mrs x0 , CurrentEL / * CurrentEL Register. bit 2 , 3 . Others reserved * /
@@ -203,7 +203,7 @@ _secondary_cpu_entry:
203203.L__not_in_el3_cpux: / * running at EL2 or EL1 * /
204204 cmp x0 , # 4 / * 0x04 0100 EL1 * /
205205 beq .L__in_el1_cpux / * EL1 - > 5 : * /
206-
206+
207207 mrs x0 , hcr_el2
208208 bic x0 , x0 , # 0xff
209209 msr hcr_el2 , x0
@@ -246,9 +246,7 @@ _secondary_cpu_entry:
246246
247247 bl mmu_tcr_init
248248
249- adr x1 , __start / * GET & setup early page table * /
250- ldr x0 , =~ 0x1fffff
251- and x0 , x1 , x0
249+ adr x0 , .early_mmu_table / * GET & setup early page table * /
252250 add x1 , x0 , # 0x1000
253251
254252 msr ttbr0_el1 , x0
@@ -288,9 +286,18 @@ after_mmu_enable_cpux:
288286 msr spsel , x0
289287 mrs x0 , tpidr_el1
290288 / * each cpu init stack is 8k * /
291- adr x1 , __start
289+ adr x1 , .el_stack_top
292290 sub x1 , x1 , x0 , lsl # 13
293291 mov sp , x1 / * in EL1. Set sp to _start * /
294292
295293 b rt_hw_secondary_cpu_bsp_start
296294#endif
295+
296+ . align 12
297+ .early_mmu_table:
298+ .space ( 4096 * 2 )
299+
300+ . align 12
301+ .el_stack:
302+ .space ( 8192 )
303+ .el_stack_top:
0 commit comments