Commit | Line | Data |
---|---|---|
6fa3eb70 S |
1 | #include <asm/memory.h> |
2 | #include <mach/mt_reg_base.h> | |
3 | ||
4 | @ Aliases for mode encodings - do not change | |
5 | .equ MODE_USR, 0x10 | |
6 | .equ MODE_FIQ, 0x11 | |
7 | .equ MODE_IRQ, 0x12 | |
8 | .equ MODE_SVC, 0x13 | |
9 | .equ MODE_MON, 0x16 @ A-profile (Security Extensions) only | |
10 | .equ MODE_ABT, 0x17 | |
11 | .equ MODE_UND, 0x1B | |
12 | .equ MODE_SYS, 0x1F | |
13 | .equ MODE_HYP, 0x1A | |
14 | ||
15 | .equ TTBCR_EAE, (1<<31) @ Are we using LPAE? | |
16 | ||
17 | .equ PFR0_THUMB_EE_SUPPORT, (1<<12) | |
18 | ||
19 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
20 | ||
21 | ||
22 | @ This function takes three arguments | |
23 | @ r0: Destination start address (must be word aligned) | |
24 | @ r1: Source start address (must be word aligned) | |
25 | @ r2: Number of words to copy | |
26 | @ Return value is updated destination pointer (first unwritten word) | |
27 | ||
28 | .global copy_words | |
29 | copy_words: | |
30 | .func | |
31 | push {r3} | |
32 | cmp r2, #0 | |
33 | beq 1f | |
34 | 2: | |
35 | ldr r3, [r1], #4 | |
36 | str r3, [r0], #4 | |
37 | subs r2, r2, #1 | |
38 | bne 2b | |
39 | 1: | |
40 | pop {r3} | |
41 | bx lr | |
42 | ||
43 | .endfunc | |
44 | ||
45 | ||
46 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
47 | .global save_performance_monitors | |
48 | ||
49 | save_performance_monitors: | |
50 | .func | |
51 | push {r4, r8, r9, r10} | |
52 | ||
53 | mrc p15,0,r8,c9,c12,0 @ PMon: Control Register | |
54 | bic r1,r8,#1 | |
55 | mcr p15,0,r1,c9,c12,0 @ disable counter updates from here | |
56 | isb @ 0b0 => PMCR<0> | |
57 | mrc p15,0,r9,c9,c12,5 @ PMon: Event Counter Selection Register | |
58 | mrc p15,0,r10,c9,c12,1 @ PMon: Count Enable Set Reg | |
59 | stm r0!, {r8-r10} | |
60 | mrc p15,0,r8,c9,c12,2 @ PMon: Count Enable Clear Register | |
61 | mrc p15,0,r9,c9,c13,0 @ PMon: Cycle Counter Register | |
62 | mrc p15,0,r10,c9,c12,3 @ PMon: Overflow flag Status Register | |
63 | stm r0!, {r8-r10} | |
64 | mrc p15,0,r8,c9,c14,1 @ PMon: Interrupt Enable Set Registern | |
65 | mrc p15,0,r9,c9,c14,2 @ PMon: Interrupt Enable Clear Register | |
66 | stm r0!, {r8-r9} | |
67 | mrc p15,0,r8,c9,c12,0 @ Read PMon Control Register | |
68 | ubfx r9,r8,#11,#5 @ extract # of event counters, N | |
69 | tst r9, r9 | |
70 | beq 1f | |
71 | ||
72 | mov r8,#0 | |
73 | 0: | |
74 | mcr p15,0,r8,c9,c12,5 @ PMon: select CounterN | |
75 | isb | |
76 | mrc p15,0,r3,c9,c13,1 @ PMon: save Event Type Register | |
77 | mrc p15,0,r4,c9,c13,2 @ PMon: save Event Counter Register | |
78 | stm r0!, {r3,r4} | |
79 | add r8,r8,#1 @ increment index | |
80 | @ cmps r8,r9 | |
81 | cmp r8,r9 | |
82 | bne 0b | |
83 | ||
84 | 1: | |
85 | pop {r4, r8, r9, r10} | |
86 | bx lr | |
87 | .endfunc | |
88 | ||
89 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
90 | ||
91 | .global restore_performance_monitors | |
92 | restore_performance_monitors: | |
93 | .func | |
94 | push {r4-r6, r8-r10, lr} | |
95 | @ NOTE: all counters disabled by PMCR<0> == 0 on reset | |
96 | ||
97 | ldr r8,[r0] @ r8 = PMCR | |
98 | add r1,r0,#20 @ r1 now points to saved PMOVSR | |
99 | ldr r9,[r1] @ r9 = PMOVSR | |
100 | ||
101 | mvn r2,#0 @ generate Register of all 1's | |
102 | mcr p15,0,r2,c9,c14,2 @ disable all counter related interrupts | |
103 | mcr p15,0,r2,c9,c12,3 @ clear all overflow flags | |
104 | isb | |
105 | ||
106 | ubfx r12,r8,#11,#5 @ extract # of event counters, N (0-31) | |
107 | tst r12, r12 | |
108 | beq 20f | |
109 | ||
110 | add r1,r0,#32 @ r1 now points to the 1st saved event counter | |
111 | ||
112 | @@ Restore counters | |
113 | mov r6,#0 | |
114 | 10: | |
115 | mcr p15,0,r6,c9,c12,5 @ PMon: select CounterN | |
116 | isb | |
117 | ldm r1!, {r3,r4} @ Read saved data | |
118 | mcr p15,0,r3,c9,c13,1 @ PMon: restore Event Type Register | |
119 | mcr p15,0,r4,c9,c13,2 @ PMon: restore Event Counter Register | |
120 | add r6,r6,#1 @ increment index | |
121 | @ cmps r6,r12 | |
122 | cmp r6,r12 | |
123 | bne 10b | |
124 | ||
125 | 20: | |
126 | tst r9, #0x80000000 @ check for cycle count overflow flag | |
127 | beq 40f | |
128 | mcr p15,0,r2,c9,c13,0 @ set Cycle Counter to all 1's | |
129 | isb | |
130 | mov r3, #1 | |
131 | mcr p15,0,r3,c9,c12,0 @ set the PMCR global enable bit | |
132 | mov r3, #0x80000000 | |
133 | mcr p15,0,r3,c9,c12,1 @ enable the Cycle Counter | |
134 | isb | |
135 | ||
136 | 30: | |
137 | mrc p15,0,r4,c9,c12,3 @ check cycle count overflow now set | |
138 | movs r4,r4 @ test bit<31> | |
139 | bpl 30b | |
140 | mcr p15,0,r3,c9,c12,2 @ disable the Cycle Counter | |
141 | ||
142 | 40: | |
143 | mov r1, #0 | |
144 | mcr p15,0,r1,c9,c12,0 @ clear the PMCR global enable bit | |
145 | isb | |
146 | ||
147 | @@ Restore left regs but PMCR | |
148 | add r1,r0,#4 @ r1 now points to the PMSELR | |
149 | ldm r1!,{r3,r4} | |
150 | mcr p15,0,r3,c9,c12,5 @ PMon: Event Counter Selection Reg | |
151 | mcr p15,0,r4,c9,c12,1 @ PMon: Count Enable Set Reg | |
152 | ldm r1!, {r3,r4} | |
153 | mcr p15,0,r4,c9,c13,0 @ PMon: Cycle Counter Register | |
154 | ldm r1!,{r3,r4} | |
155 | mcr p15,0,r3,c9,c14,2 @ PMon: Interrupt Enable Clear Reg | |
156 | mcr p15,0,r4,c9,c14,1 @ PMon: Interrupt Enable Set Reg | |
157 | ldr r3,[r1] | |
158 | isb | |
159 | ldr r0,[r0] | |
160 | mcr p15,0,r0,c9,c12,0 @ restore the PM Control Register | |
161 | isb | |
162 | ||
163 | pop {r4-r6, r8-r10, pc} | |
164 | .endfunc | |
165 | ||
166 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
167 | ||
168 | .global save_banked_registers | |
169 | save_banked_registers: | |
170 | .func | |
171 | ||
172 | PUSH {r3, lr} | |
173 | ||
174 | mrs r2, CPSR @ save current mode | |
175 | and r3, r2, #0x1f @ If we are in HYP mode then use the virt. | |
176 | cmp r3, #MODE_HYP @ instructions to save the banked registers | |
177 | beq save_in_hyp @ without changing the mode | |
178 | ||
179 | cps #MODE_SYS @ switch to System mode | |
180 | str sp,[r0], #4 @ save the User SP | |
181 | str lr,[r0], #4 @ save the User LR | |
182 | cps #MODE_ABT @ switch to Abort mode | |
183 | str sp,[r0], #4 @ save the current SP | |
184 | mrs r3,SPSR | |
185 | stm r0!,{r3,lr} @ save the current SPSR, LR | |
186 | cps #MODE_UND @ switch to Undefined mode | |
187 | str sp,[r0], #4 @ save the current SP | |
188 | mrs r3,SPSR | |
189 | stm r0!,{r3,lr} @ save the current SPSR, LR | |
190 | cps #MODE_IRQ @ switch to IRQ mode | |
191 | str sp,[r0], #4 @ save the current SP | |
192 | mrs r3,SPSR | |
193 | stm r0!,{r3,lr} @ save the current SPSR, LR | |
194 | cps #MODE_FIQ @ switch to FIQ mode | |
195 | str SP,[r0], #4 @ save the current SP | |
196 | mrs r3,SPSR | |
197 | stm r0!,{r3,r8-r12,lr} @ save the current SPSR,r8-r12,LR | |
198 | msr CPSR_cxsf, r2 @ switch back to original mode | |
199 | ||
200 | POP {r3, lr} | |
201 | STR SP, [r0], #4 @ save the current SP | |
202 | MRS r3, SPSR | |
203 | STM r0!, {r2, r3, r4-r12, LR} @ save the current CPSR,SPSR,r4-r12,LR | |
204 | dsb | |
205 | ||
206 | bx lr | |
207 | ||
208 | save_in_hyp : | |
209 | @ mrs r1, SP_usr @ rewrite | |
210 | cps #MODE_SYS @ switch to System mode | |
211 | str sp,[r1], #4 @ save the User SP | |
212 | stm r0!, {r1} | |
213 | ||
214 | @ mrs r1, SP_und @ rewrite | |
215 | cps #MODE_UND @ switch to Undefined mode | |
216 | str sp,[r1], #4 @ save the current SP | |
217 | @ mrs r2, SPSR_und @ rewrite | |
218 | cps #MODE_UND @ switch to Undefined mode | |
219 | mrs r2,SPSR @ save the current SPSR | |
220 | @ mrs r3, LR_und @ rewrite | |
221 | cps #MODE_UND @ switch to Undefined mode | |
222 | str lr,[r3], #4 @ save the current LR | |
223 | stm r0!, {r1-r3} | |
224 | ||
225 | @ mrs r1, SP_abt @ rewrite | |
226 | cps #MODE_ABT @ switch to Abort mode | |
227 | str sp,[r1], #4 @ save the current SP | |
228 | @ mrs r2, SPSR_abt @ rewrite | |
229 | cps #MODE_ABT @ switch to Abort mode | |
230 | mrs r2,SPSR @ save the current SPSR | |
231 | @ mrs r3, LR_abt @ rewrite | |
232 | str lr,[r3], #4 @ save the current LR | |
233 | stm r0!, {r1-r3} | |
234 | ||
235 | @ mrs r1, SP_svc @ rewrite | |
236 | cps #MODE_SVC @ switch to SVC mode | |
237 | str sp,[r1], #4 @ save the current SP | |
238 | @ mrs r2, SPSR_svc @ rewrite | |
239 | cps #MODE_SVC @ switch to SVC mode | |
240 | mrs r2,SPSR @ save the current SPSR | |
241 | @ mrs r3, LR_svc @ rewrite | |
242 | cps #MODE_SVC @ switch to SVC mode | |
243 | str lr,[r3], #4 @ save the current LR | |
244 | stm r0!, {r1-r3} | |
245 | ||
246 | @ mrs r1, SP_irq @ rewrite | |
247 | cps #MODE_IRQ @ switch to IRQ mode | |
248 | str sp,[r1], #4 @ save the current SP | |
249 | @ mrs r2, SPSR_irq @ rewrite | |
250 | cps #MODE_IRQ @ switch to IRQ mode | |
251 | mrs r2,SPSR @ save the current SPSR | |
252 | @ mrs r3, LR_irq @ rewrite | |
253 | cps #MODE_IRQ @ switch to IRQ mode | |
254 | str lr,[r3], #4 @ save the current LR | |
255 | stm r0!, {r1-r3} | |
256 | ||
257 | @ mrs r1, SP_fiq @ rewrite | |
258 | cps #MODE_FIQ @ switch to FIQ mode | |
259 | str sp,[r1], #4 @ save the current SP | |
260 | @ mrs r2, SPSR_fiq @ rewrite | |
261 | cps #MODE_FIQ @ switch to FIQ mode | |
262 | mrs r2,SPSR @ save the current SPSR | |
263 | @ mrs r3, LR_fiq @ rewrite | |
264 | cps #MODE_FIQ @ switch to FIQ mode | |
265 | str lr,[r3], #4 @ save the current LR | |
266 | stm r0!, {r1-r3} | |
267 | ||
268 | @ mrs r1, r8_fiq @ rewrite | |
269 | @ mrs r2, r9_fiq @ rewrite | |
270 | @ mrs r3, r10_fiq @ rewrite | |
271 | @ stm r0!, {r1-r3} @ rewrite | |
272 | @ mrs r1, r11_fiq @ rewrite | |
273 | @ mrs r2, r12_fiq @ rewrite | |
274 | @ stm r0!, {r1-r2} @ rewrite | |
275 | cps #MODE_FIQ @ switch to FIQ mode | |
276 | stm r0!,{r8-r12} @ save the current r8-r12 | |
277 | ||
278 | bx lr | |
279 | .endfunc | |
280 | ||
281 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
282 | ||
283 | .global restore_banked_registers | |
284 | restore_banked_registers: | |
285 | .func | |
286 | mrs r2, CPSR @ save current mode | |
287 | and r3, r2, #0x1f @ If we are in HYP mode then use the virt. | |
288 | cmp r3, #MODE_HYP @ instructions to restore the banked registers | |
289 | beq rest_in_hyp @ without changing the mode | |
290 | ||
291 | cps #MODE_SYS @ switch to System mode | |
292 | ldr sp,[r0],#4 @ restore the User SP | |
293 | ldr lr,[r0],#4 @ restore the User LR | |
294 | cps #MODE_ABT @ switch to Abort mode | |
295 | ldr sp,[r0],#4 @ restore the current SP | |
296 | ldm r0!,{r3,lr} @ restore the current LR | |
297 | msr SPSR_fsxc,r3 @ restore the current SPSR | |
298 | cps #MODE_UND @ switch to Undefined mode | |
299 | ldr sp,[r0],#4 @ restore the current SP | |
300 | ldm r0!,{r3,lr} @ restore the current LR | |
301 | msr SPSR_fsxc,r3 @ restore the current SPSR | |
302 | cps #MODE_IRQ @ switch to IRQ mode | |
303 | ldr sp,[r0],#4 @ restore the current SP | |
304 | ldm r0!,{r3,lr} @ restore the current LR | |
305 | msr SPSR_fsxc,r3 @ restore the current SPSR | |
306 | cps #MODE_FIQ @ switch to FIQ mode | |
307 | ldr sp,[r0],#4 @ restore the current SP | |
308 | ldm r0!,{r3,r8-r12,lr} @ restore the current r8-r12,LR | |
309 | msr SPSR_fsxc,r3 @ restore the current SPSR | |
310 | msr CPSR_cxsf, r2 @ switch back to original mode | |
311 | ||
312 | LDR SP, [r0], #4 @ restore the current SP | |
313 | LDM r0!, {r2, r3, r4-r12, LR} @ restore the current r4-r12,LR | |
314 | MSR SPSR_fsxc, r3 @ restore the current SPSR | |
315 | MSR CPSR_fsxc, r2 @ restore the current CPSR | |
316 | dsb | |
317 | 0: | |
318 | bx lr | |
319 | ||
320 | rest_in_hyp: | |
321 | ldm r0!, {r1} | |
322 | @ msr SP_usr, r1 @ rewrite | |
323 | cps #MODE_SYS @ switch to System mode | |
324 | ldr sp,[r1],#4 @ restore the User SP | |
325 | ||
326 | ldm r0!, {r1-r3} | |
327 | @ msr SP_und, r1 @ rewrite | |
328 | cps #MODE_UND @ switch to Undefined mode | |
329 | ldr sp,[r1],#4 @ restore the User SP | |
330 | @ msr SPSR_und, r2 @ rewrite | |
331 | cps #MODE_UND @ switch to Undefined mode | |
332 | msr SPSR_fsxc,r2 @ restore the current SPSR | |
333 | @ msr LR_und, r3 @ rewrite | |
334 | cps #MODE_UND @ switch to Undefined mode | |
335 | ldr lr,[r3],#4 @ restore the User LR | |
336 | ||
337 | ldm r0!, {r1-r3} | |
338 | @ msr SP_abt, r1 @ rewrite | |
339 | cps #MODE_ABT @ switch to Abort mode | |
340 | ldr sp,[r1],#4 @ restore the User SP | |
341 | @ msr SPSR_abt, r2 @ rewrite | |
342 | cps #MODE_ABT @ switch to Abort mode | |
343 | msr SPSR_fsxc,r2 @ restore the current SPSR | |
344 | @ msr LR_abt, r3 @ rewrite | |
345 | cps #MODE_ABT @ switch to Abort mode | |
346 | ldr lr,[r3],#4 @ restore the User LR | |
347 | ||
348 | ldm r0!, {r1-r3} | |
349 | @ msr SP_svc, r1 @ rewrite | |
350 | cps #MODE_SVC @ switch to SVC mode | |
351 | ldr sp,[r1],#4 @ restore the User SP | |
352 | @ msr SPSR_svc, r2 @ rewrite | |
353 | cps #MODE_SVC @ switch to SVC mode | |
354 | msr SPSR_fsxc,r2 @ restore the current SPSR | |
355 | @ msr LR_svc, r3 @ rewrite | |
356 | cps #MODE_SVC @ switch to SVC mode | |
357 | ldr lr,[r3],#4 @ restore the User LR | |
358 | ||
359 | ldm r0!, {r1-r3} | |
360 | @ msr SP_irq, r1 @ rewrite | |
361 | cps #MODE_IRQ @ switch to IRQ mode | |
362 | ldr sp,[r1],#4 @ restore the User SP | |
363 | @ msr SPSR_irq, r2 @ rewrite | |
364 | cps #MODE_IRQ @ switch to IRQ mode | |
365 | msr SPSR_fsxc,r2 @ restore the current SPSR | |
366 | @ msr LR_irq, r3 @ rewrite | |
367 | cps #MODE_IRQ @ switch to IRQ mode | |
368 | ldr lr,[r3],#4 @ restore the User LR | |
369 | ||
370 | ldm r0!, {r1-r3} | |
371 | @ msr SP_fiq, r1 @ rewrite | |
372 | cps #MODE_FIQ @ switch to FIQ mode | |
373 | ldr sp,[r1],#4 @ restore the User SP | |
374 | @ msr SPSR_fiq, r2 @ rewrite | |
375 | cps #MODE_FIQ @ switch to FIQ mode | |
376 | msr SPSR_fsxc,r2 @ restore the current SPSR | |
377 | @ msr LR_fiq, r3 @ rewrite | |
378 | cps #MODE_FIQ @ switch to FIQ mode | |
379 | ldr lr,[r3],#4 @ restore the User LR | |
380 | ||
381 | @ ldm r0!, {r1-r3} | |
382 | @ msr r8_fiq, r1 @ rewrite | |
383 | @ msr r9_fiq, r2 @ rewrite | |
384 | @ msr r10_fiq, r3 @ rewrite | |
385 | @ ldm r0!, {r1-r2} | |
386 | @ msr r11_fiq, r1 @ rewrite | |
387 | @ msr r12_fiq, r2 @ rewrite | |
388 | cps #MODE_FIQ @ switch to FIQ mode | |
389 | ldm r0!,{r8-r12} @ restore the current r8-r12 | |
390 | ||
391 | bx lr | |
392 | .endfunc | |
393 | ||
394 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
395 | ||
396 | .global save_cp15 | |
397 | save_cp15: | |
398 | .func | |
399 | @ CSSELR Cache Size Selection Register | |
400 | mrc p15,2,r3,c0,c0,0 | |
401 | str r3,[r0], #4 | |
402 | ||
403 | @ IMPLEMENTATION DEFINED - proprietary features: | |
404 | @ (CP15 register 15, TCM support, lockdown support, etc.) | |
405 | ||
406 | @ NOTE: IMP DEF registers might have save and restore order that relate | |
407 | @ to other CP15 registers or logical grouping requirements and can | |
408 | @ therefore occur at any point in this sequence. | |
409 | bx lr | |
410 | .endfunc | |
411 | ||
412 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
413 | ||
414 | .global restore_cp15 | |
415 | restore_cp15: | |
416 | .func | |
417 | @ CSSELR ?Cache Size Selection Register | |
418 | ldr r3,[r0], #4 | |
419 | mcr p15,2,r3,c0,c0,0 | |
420 | ||
421 | bx lr | |
422 | .endfunc | |
423 | ||
424 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
425 | @ Function called with two arguments: | |
426 | @ r0 contains address to store control registers | |
427 | @ r1 is non-zero if we are Secure | |
428 | ||
429 | .global save_control_registers | |
430 | save_control_registers: | |
431 | .func | |
432 | cmp r1, #0 @ Are we Secure? | |
433 | mrc p15,0,r2,c1,c0,1 @ ACTLR - Auxiliary Control Register | |
434 | mrc p15,0,r3,c1,c0,0 @ SCTLR - System Control Register | |
435 | mrc p15,0,r12,c1,c0,2 @ CPACR - Coprocessor Access Control Register | |
436 | stm r0!, {r2-r3, r12} | |
437 | ||
438 | mrcne p15,0,r1,c12,c0,1 @ MVBAR - Monitor Vector Base Address Register | |
439 | mrcne p15,0,r2,c1,c1,0 @ Secure Configuration Register | |
440 | mrcne p15,0,r3,c1,c1,1 @ Secure Debug Enable Register | |
441 | mrcne p15,0,r12,c1,c1,2 @ Non-Secure Access Control Register | |
442 | stmne r0!, {r1-r3,r12} | |
443 | ||
444 | mrc p15,0,r1,c13,c0,1 @ CONTEXTIDR | |
445 | mrc p15,0,r2,c13,c0,2 @ TPIDRURW | |
446 | mrc p15,0,r3,c13,c0,3 @ TPIDRURO | |
447 | mrc p15,0,r12,c13,c0,4 @ TPIDRPRW | |
448 | stm r0!, {r1-r3,r12} | |
449 | ||
450 | @ The next two registers are only present if ThumbEE is implemented | |
451 | mrc p15, 0, r1, c0, c1, 0 @ Read ID_PFR0 | |
452 | tst r1, #PFR0_THUMB_EE_SUPPORT | |
453 | mrcne p14,6,r1,c0,c0,0 @ TEECR | |
454 | mrcne p14,6,r2,c1,c0,0 @ TEEHBR | |
455 | stmne r0!, {r1, r2} | |
456 | ||
457 | mrc p14,7,r1,c1,c0,0 @ JOSCR | |
458 | mrc p14,7,r2,c2,c0,0 @ JMCR | |
459 | stm r0!, {r1, r2} | |
460 | bx lr | |
461 | .endfunc | |
462 | ||
463 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
464 | @ Function called with two arguments: | |
465 | @ r0 contains address to read control registers | |
466 | @ r1 is non-zero if we are Secure | |
467 | ||
468 | .global restore_control_registers | |
469 | restore_control_registers: | |
470 | .func | |
471 | cmp r1, #0 @ Are we Secure? | |
472 | ldm r0!, {r2-r3, r12} | |
473 | mcr p15,0,r2,c1,c0,1 @ ACTLR - Auxiliary Control Register | |
474 | mcr p15,0,r3,c1,c0,0 @ SCTLR - System Control Register | |
475 | mcr p15,0,r12,c1,c0,2 @ CPACR - Coprocessor Access Control Register | |
476 | ||
477 | ldmne r0!, {r1-r3,r12} | |
478 | mcrne p15,0,r1,c12,c0,1 @ MVBAR - Monitor Vector Base Address Register | |
479 | mcrne p15,0,r2,c1,c1,0 @ Secure Configuration Register | |
480 | mcrne p15,0,r3,c1,c1,1 @ Secure Debug Enable Register | |
481 | mcrne p15,0,r12,c1,c1,2 @ Non-Secure Access Control Register | |
482 | ||
483 | ldm r0!, {r1-r3,r12} | |
484 | mcr p15,0,r1,c13,c0,1 @ CONTEXTIDR | |
485 | mcr p15,0,r2,c13,c0,2 @ TPIDRURW | |
486 | mcr p15,0,r3,c13,c0,3 @ TPIDRURO | |
487 | mcr p15,0,r12,c13,c0,4 @ TPIDRPRW | |
488 | ||
489 | @ The next two registers are only present if ThumbEE is implemented | |
490 | mrc p15, 0, r1, c0, c1, 0 @ Read ID_PFR0 | |
491 | tst r1, #PFR0_THUMB_EE_SUPPORT | |
492 | ldmne r0!, {r1,r2} | |
493 | mcrne p14,6,r1,c0,c0,0 @ TEECR | |
494 | mcrne p14,6,r2,c1,c0,0 @ TEEHBR | |
495 | ||
496 | ldm r0!, {r1, r2} | |
497 | mcr p14,7,r1,c1,c0,0 @ JOSCR | |
498 | mcr p14,7,r2,c2,c0,0 @ JMCR | |
499 | isb | |
500 | bx lr | |
501 | .endfunc | |
502 | ||
503 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
504 | ||
505 | .global save_mmu | |
506 | save_mmu: | |
507 | .func | |
508 | push {r4, r5, r6, r7} | |
509 | @ ASSUMPTION: no useful fault address / fault status information | |
510 | ||
511 | mrc p15,0,r4,c12,c0,0 @ VBAR | |
512 | mrc p15,0,r5,c2,c0,2 @ TTBCR | |
513 | ||
514 | tst r5, #TTBCR_EAE @ Are we using LPAE? | |
515 | ||
516 | @ save 32 or 64 bit TTBRs | |
517 | mrceq p15,0,r6,c2,c0,0 @ 32 bit TTBR0 | |
518 | mrceq p15,0,r7,c2,c0,1 @ 32 bit TTBR1 | |
519 | mrrcne p15,0,r6,r7,c2 @ 64 bit TTBR0 | |
520 | stm r0!, {r4-r7} | |
521 | mrrcne p15,1,r6,r7,c2 @ 64 bit TTBR1 | |
522 | stmne r0!, {r6-r7} | |
523 | ||
524 | mrc p15,0,r4,c3,c0,0 @ DACR | |
525 | mrc p15,0,r5,c7,c4,0 @ PAR | |
526 | mrc p15,0,r6,c10,c2,0 @ PRRR | |
527 | mrc p15,0,r7,c10,c2,1 @ NMRR | |
528 | stm r0!, {r4-r7} | |
529 | ||
530 | pop {r4, r5, r6, r7} | |
531 | bx lr | |
532 | .endfunc | |
533 | ||
534 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
535 | ||
536 | .global restore_mmu | |
537 | restore_mmu: | |
538 | .func | |
539 | push {r4, r5, r6, r7} | |
540 | ldm r0!, {r4-r7} | |
541 | mcr p15,0,r4,c12,c0,0 @ VBAR | |
542 | mcr p15,0,r5,c2,c0,2 @ TTBCR | |
543 | ||
544 | tst r5, #TTBCR_EAE @ Are we using LPAE? | |
545 | ||
546 | @ restore 32 or 64 bit TTBRs | |
547 | mcreq p15,0,r6,c2,c0,0 @ 32 bit TTBR0 | |
548 | mcreq p15,0,r7,c2,c0,1 @ 32 bit TTBR1 | |
549 | mcrrne p15,0,r6,r7,c2 @ 64-bit TTBR0 | |
550 | ldmne r0!, {r6-r7} | |
551 | mcrrne p15,1,r6,r7,c2 @ 64-bit TTBR1 | |
552 | ||
553 | ldm r0!, {r4-r7} | |
554 | mcr p15,0,r4,c3,c0,0 @ DACR | |
555 | mcr p15,0,r5,c7,c4,0 @ PAR | |
556 | mcr p15,0,r6,c10,c2,0 @ PRRR | |
557 | mcr p15,0,r7,c10,c2,1 @ NMRR | |
558 | ||
559 | pop {r4, r5, r6, r7} | |
560 | bx lr | |
561 | .endfunc | |
562 | ||
563 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
564 | ||
565 | .global save_mpu | |
566 | save_mpu: | |
567 | .func | |
568 | mrc p15, 0, r1, c0, c0, 4 @ Read MPUIR | |
569 | and r1, r1, #0xff00 | |
570 | lsr r1, r1, #8 @ Extract number of MPU regions | |
571 | ||
572 | @ Loop over the number of regions | |
573 | 10: | |
574 | cmp r1, #0 | |
575 | beq 20f | |
576 | sub r1, r1, #1 | |
577 | mcr p15, 0, r1, c6, c2, 0 @ Write RGNR | |
578 | mrc p15, 0, r2, c6, c1, 0 @ Read MPU Region Base Address Register | |
579 | mrc p15, 0, r3, c6, c1, 2 @ Read Data MPU Region Size and Enable Register | |
580 | mrc p15, 0, r12, c6, c1, 4 @ Read Region access control Register | |
581 | stm r0!, {r2, r3, r12} | |
582 | b 10b | |
583 | ||
584 | 20: | |
585 | bx lr | |
586 | .endfunc | |
587 | ||
588 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
589 | ||
590 | .global restore_mpu | |
591 | restore_mpu: | |
592 | .func | |
593 | mrc p15, 0, r1, c0, c0, 4 @ Read MPUIR | |
594 | and r1, r1, #0xff00 | |
595 | lsr r1, r1, #8 @ Extract number of MPU regions | |
596 | ||
597 | @ Loop over the number of regions | |
598 | 10: | |
599 | cmp r1, #0 | |
600 | beq 20f | |
601 | ldm r0!, {r2, r3, r12} | |
602 | sub r1, r1, #1 | |
603 | mcr p15, 0, r1, c6, c2, 0 @ Write RGNR | |
604 | mcr p15, 0, r2, c6, c1, 0 @ Write MPU Region Base Address Register | |
605 | mcr p15, 0, r3, c6, c1, 2 @ Write Data MPU Region Size and Enable Register | |
606 | mcr p15, 0, r12, c6, c1, 4 @ Write Region access control Register | |
607 | b 10b | |
608 | ||
609 | 20: | |
610 | bx lr | |
611 | .endfunc | |
612 | ||
613 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
614 | ||
615 | .global save_vfp | |
616 | save_vfp: | |
617 | .func | |
618 | @ FPU state save/restore. | |
619 | @ FPSID,MVFR0 and MVFR1 don't get serialized/saved (Read Only). | |
620 | mrc p15,0,r3,c1,c0,2 @ CPACR allows CP10 and CP11 access | |
621 | ORR r2,r3,#0xF00000 | |
622 | mcr p15,0,r2,c1,c0,2 | |
623 | isb | |
624 | mrc p15,0,r2,c1,c0,2 | |
625 | and r2,r2,#0xF00000 | |
626 | cmp r2,#0xF00000 | |
627 | beq 0f | |
628 | movs r2, #0 | |
629 | b 2f | |
630 | ||
631 | @ Save configuration registers and enable. | |
632 | 0: | |
633 | FMRX r12,FPEXC @ vmrs r12,FPEXC | |
634 | str r12,[r0],#4 @ Save the FPEXC | |
635 | @ Enable FPU access to save/restore the other registers. | |
636 | ldr r2,=0x40000000 | |
637 | FMXR FPEXC,r2 @ vmsr FPEXC,r2 | |
638 | FMRX r2,FPSCR @ vmrs r2,FPSCR | |
639 | str r2,[r0],#4 @ Save the FPSCR | |
640 | @ Store the VFP-D16 registers. | |
641 | vstm r0!, {D0-D15} | |
642 | @ Check for Advanced SIMD/VFP-D32 support | |
643 | FMRX r2,MVFR0 @ vmrs r2,MVFR0 | |
644 | and r2,r2,#0xF @ extract the A_SIMD bitfield | |
645 | cmp r2, #0x2 | |
646 | blt 1f | |
647 | @ Store the Advanced SIMD/VFP-D32 additional registers. | |
648 | vstm r0!, {D16-D31} | |
649 | ||
650 | @ IMPLEMENTATION DEFINED: save any subarchitecture defined state | |
651 | @ NOTE: Don't change the order of the FPEXC and CPACR restores | |
652 | ||
653 | @ Restore the original En bit of FPU. | |
654 | 1: | |
655 | FMXR FPEXC,r12 @ vmsr FPEXC,r12 | |
656 | ||
657 | @ Restore the original CPACR value. | |
658 | 2: | |
659 | mcr p15,0,r3,c1,c0,2 | |
660 | bx lr | |
661 | .endfunc | |
662 | ||
663 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
664 | ||
665 | .global restore_vfp | |
666 | restore_vfp: | |
667 | .func | |
668 | @ FPU state save/restore. Obviously FPSID,MVFR0 and MVFR1 don't get | |
669 | @ serialized (RO). | |
670 | @ Modify CPACR to allow CP10 and CP11 access | |
671 | mrc p15,0,r1,c1,c0,2 | |
672 | ORR r2,r1,#0x00F00000 | |
673 | mcr p15,0,r2,c1,c0,2 | |
674 | @ Enable FPU access to save/restore the rest of registers. | |
675 | ldr r2,=0x40000000 | |
676 | FMXR FPEXC, r2 @ vmsr FPEXC, r2 | |
677 | @ Recover FPEXC and FPSCR. These will be restored later. | |
678 | ldm r0!,{r3,r12} | |
679 | @ Restore the VFP-D16 registers. | |
680 | vldm r0!, {D0-D15} | |
681 | @ Check for Advanced SIMD/VFP-D32 support | |
682 | FMRX r2, MVFR0 @ vmrs r2, MVFR0 | |
683 | and r2,r2,#0xF @ extract the A_SIMD bitfield | |
684 | cmp r2, #0x2 | |
685 | blt 0f | |
686 | ||
687 | @ Store the Advanced SIMD/VFP-D32 additional registers. | |
688 | vldm r0!, {D16-D31} | |
689 | ||
690 | @ IMPLEMENTATION DEFINED: restore any subarchitecture defined state | |
691 | 0: | |
692 | @ Restore configuration registers and enable. | |
693 | @ Restore FPSCR _before_ FPEXC since FPEXC could disable FPU | |
694 | @ and make setting FPSCR unpredictable. | |
695 | FMXR FPSCR,r12 @ vmsr FPSCR,r12 | |
696 | @ Restore FPEXC after FPSCR | |
697 | FMXR FPEXC,r3 @ vmsr FPEXC,r3 | |
698 | @ Restore CPACR | |
699 | @ will restore in mt_restore_control_registers | |
700 | @ mcr p15,0,r1,c1,c0,2 | |
701 | ||
702 | bx lr | |
703 | .endfunc | |
704 | ||
705 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
706 | @ If r1 is 0, we assume that the OS is not using the Virtualization extensions, | |
707 | @ and that the warm boot code will set up CNTHCTL correctly. If r1 is non-zero | |
708 | @ then CNTHCTL is saved and restored | |
709 | @ CNTP_CVAL will be preserved as it is in the always-on domain. | |
710 | ||
711 | .global save_generic_timer | |
712 | save_generic_timer: | |
713 | .func | |
714 | mrc p15,0,r2,c14,c2,1 @ read CNTP_CTL | |
715 | mrc p15,0,r3,c14,c2,0 @ read CNTP_TVAL | |
716 | mrc p15,0,r12,c14,c1,0 @ read CNTKCTL | |
717 | stm r0!, {r2, r3, r12} | |
718 | cmp r1, #0 | |
719 | mrcne p15,4,r1,c14,c1,0 @ read CNTHCTL | |
720 | strne r1, [r0], #4 | |
721 | bx lr | |
722 | .endfunc | |
723 | ||
724 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
725 | ||
726 | .global restore_generic_timer | |
727 | restore_generic_timer: | |
728 | .func | |
729 | ldm r0!, {r2, r3, r12} | |
730 | mcr p15,0,r3,c14,c2,0 @ write CNTP_TVAL | |
731 | mcr p15,0,r12,c14,c1,0 @ write CNTKCTL | |
732 | mcr p15,0,r2,c14,c2,1 @ write CNTP_CTL | |
733 | cmp r1, #0 | |
734 | ldrne r1, [r0], #4 | |
735 | mcrne p15,4,r1,c14,c1,0 @ write CNTHCTL | |
736 | bx lr | |
737 | .endfunc | |
738 | ||
739 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
740 | ||
741 | .global save_fault_status | |
742 | save_fault_status: | |
743 | .func | |
744 | mrc p15,0,r1,c6,c0,0 @ read DFAR | |
745 | mrc p15,0,r2,c6,c0,2 @ read IFAR | |
746 | mrc p15,0,r3,c5,c0,0 @ read DFSR | |
747 | mrc p15,0,r12,c5,c0,1 @ read IFSR | |
748 | stm r0!, {r1,r2,r3,r12} | |
749 | mrc p15,0,r1,c5,c1,0 @ read ADFSR | |
750 | mrc p15,0,r2,c5,c1,1 @ read AIFSR | |
751 | stm r0!, {r1,r2} | |
752 | bx lr | |
753 | .endfunc | |
754 | ||
755 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
756 | ||
757 | .global restore_fault_status | |
758 | restore_fault_status: | |
759 | .func | |
760 | ldm r0!, {r1,r2,r3,r12} | |
761 | mcr p15,0,r1,c6,c0,0 @ write DFAR | |
762 | mcr p15,0,r2,c6,c0,2 @ write IFAR | |
763 | mcr p15,0,r3,c5,c0,0 @ write DFSR | |
764 | mcr p15,0,r12,c5,c0,1 @ write IFSR | |
765 | ldm r0!, {r1,r2} | |
766 | mcr p15,0,r1,c5,c1,0 @ write ADFSR | |
767 | mcr p15,0,r2,c5,c1,1 @ write AIFSR | |
768 | bx lr | |
769 | .endfunc | |
770 | ||
771 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
772 | ||
773 | .global write_cntp_ctl | |
774 | write_cntp_ctl: | |
775 | .func | |
776 | mcr p15, 0, r0, c14, c2, 1 | |
777 | dsb | |
778 | isb | |
779 | bx lr | |
780 | .endfunc | |
781 | ||
782 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
783 | ||
784 | .global read_cpuid | |
785 | read_cpuid: | |
786 | .func | |
787 | mrc p15, 0, r0, c0, c0, 5 | |
788 | ands r0, r0, #0xf | |
789 | bx lr | |
790 | .endfunc | |
791 | ||
792 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
793 | ||
794 | .global read_clusterid | |
795 | read_clusterid: | |
796 | .func | |
797 | mrc p15, 0, r0, c0, c0, 5 | |
798 | lsr r0, r0, #0x8 | |
799 | ands r0, r0, #0xf | |
800 | bx lr | |
801 | .endfunc | |
802 | ||
803 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
804 | ||
805 | .global read_nsacr | |
806 | read_nsacr: | |
807 | .func | |
808 | mrc p15, 0, r0, c1, c1, 2 | |
809 | bx lr | |
810 | .endfunc | |
811 | ||
812 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
813 | .global read_dbg_osdlr | |
814 | read_dbg_osdlr: | |
815 | .func | |
816 | mrc p14, 0, r0, c1, c3, 4 @ Read OS Double Lock Register | |
817 | bx lr | |
818 | .endfunc | |
819 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
820 | .global read_dbg_devid | |
821 | read_dbg_devid: | |
822 | .func | |
823 | mrc p14, 0, r0, c7, c2, 7 | |
824 | bx lr | |
825 | .endfunc | |
826 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
827 | .global read_dbg_didr | |
828 | read_dbg_didr: | |
829 | .func | |
830 | mrc p14, 0, r0, c0, c0, 0 | |
831 | bx lr | |
832 | .endfunc | |
833 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
834 | .global read_dbg_drar | |
835 | read_dbg_drar: | |
836 | .func | |
837 | mrc p14, 0, r0, c1, c0, 0 @ Read Debug ROM Address Register | |
838 | bx lr | |
839 | .endfunc | |
840 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
841 | .global read_dbg_dsar | |
842 | read_dbg_dsar: | |
843 | .func | |
844 | mrc p14, 0, r0, c2, c0, 0 @ Read Debug Self Address Offset Register | |
845 | bx lr | |
846 | .endfunc | |
847 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
848 | .global read_dbg_dtrrxext | |
849 | read_dbg_dtrrxext: | |
850 | .func | |
851 | mrc p14, 0, r0, c0, c0, 2 | |
852 | bx lr | |
853 | .endfunc | |
854 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
855 | .global read_dbg_dtrtxext | |
856 | read_dbg_dtrtxext: | |
857 | .func | |
858 | mrc p14, 0, r0, c0, c3, 2 | |
859 | bx lr | |
860 | .endfunc | |
861 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
862 | .global read_dbg_dscrext | |
863 | read_dbg_dscrext: | |
864 | .func | |
865 | mrc p14, 0, r0, c0, c2, 2 | |
866 | bx lr | |
867 | .endfunc | |
868 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
869 | .global read_dbg_wfar | |
870 | read_dbg_wfar: | |
871 | .func | |
872 | mrc p14, 0, r0, c0, c6, 0 | |
873 | bx lr | |
874 | .endfunc | |
875 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
876 | .global read_dbg_vcr | |
877 | read_dbg_vcr: | |
878 | .func | |
879 | mrc p14, 0, r0, c0, c7, 0 | |
880 | bx lr | |
881 | .endfunc | |
882 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
883 | .global read_dbg_claimclr | |
884 | read_dbg_claimclr: | |
885 | .func | |
886 | mrc p14, 0, r0, c7, c9, 6 | |
887 | bx lr | |
888 | .endfunc | |
889 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
890 | .global read_dbg_bvr0 | |
891 | read_dbg_bvr0: | |
892 | .func | |
893 | mrc p14, 0, r0, c0, c0, 4 | |
894 | bx lr | |
895 | .endfunc | |
896 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
897 | .global read_dbg_bvr1 | |
898 | read_dbg_bvr1: | |
899 | .func | |
900 | mrc p14, 0, r0, c0, c1, 4 | |
901 | bx lr | |
902 | .endfunc | |
903 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
904 | .global read_dbg_bvr2 | |
905 | read_dbg_bvr2: | |
906 | .func | |
907 | mrc p14, 0, r0, c0, c2, 4 | |
908 | bx lr | |
909 | .endfunc | |
910 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
911 | .global read_dbg_bvr3 | |
912 | read_dbg_bvr3: | |
913 | .func | |
914 | mrc p14, 0, r0, c0, c3, 4 | |
915 | bx lr | |
916 | .endfunc | |
917 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
918 | .global read_dbg_bvr4 | |
919 | read_dbg_bvr4: | |
920 | .func | |
921 | mrc p14, 0, r0, c0, c4, 4 | |
922 | bx lr | |
923 | .endfunc | |
924 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
925 | .global read_dbg_bvr5 | |
926 | read_dbg_bvr5: | |
927 | .func | |
928 | mrc p14, 0, r0, c0, c5, 4 | |
929 | bx lr | |
930 | .endfunc | |
931 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
932 | .global read_dbg_bvr6 | |
933 | read_dbg_bvr6: | |
934 | .func | |
935 | mrc p14, 0, r0, c0, c6, 4 | |
936 | bx lr | |
937 | .endfunc | |
938 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
939 | .global read_dbg_bvr7 | |
940 | read_dbg_bvr7: | |
941 | .func | |
942 | mrc p14, 0, r0, c0, c7, 4 | |
943 | bx lr | |
944 | .endfunc | |
945 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
946 | .global read_dbg_bvr8 | |
947 | read_dbg_bvr8: | |
948 | .func | |
949 | mrc p14, 0, r0, c0, c8, 4 | |
950 | bx lr | |
951 | .endfunc | |
952 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
953 | .global read_dbg_bvr9 | |
954 | read_dbg_bvr9: | |
955 | .func | |
956 | mrc p14, 0, r0, c0, c9, 4 | |
957 | bx lr | |
958 | .endfunc | |
959 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
960 | .global read_dbg_bvr10 | |
961 | read_dbg_bvr10: | |
962 | .func | |
963 | mrc p14, 0, r0, c0, c10, 4 | |
964 | bx lr | |
965 | .endfunc | |
966 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
967 | .global read_dbg_bvr11 | |
968 | read_dbg_bvr11: | |
969 | .func | |
970 | mrc p14, 0, r0, c0, c11, 4 | |
971 | bx lr | |
972 | .endfunc | |
973 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
974 | .global read_dbg_bvr12 | |
975 | read_dbg_bvr12: | |
976 | .func | |
977 | mrc p14, 0, r0, c0, c12, 4 | |
978 | bx lr | |
979 | .endfunc | |
980 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
981 | .global read_dbg_bvr13 | |
982 | read_dbg_bvr13: | |
983 | .func | |
984 | mrc p14, 0, r0, c0, c13, 4 | |
985 | bx lr | |
986 | .endfunc | |
987 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
988 | .global read_dbg_bvr14 | |
989 | read_dbg_bvr14: | |
990 | .func | |
991 | mrc p14, 0, r0, c0, c14, 4 | |
992 | bx lr | |
993 | .endfunc | |
994 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
995 | .global read_dbg_bvr15 | |
996 | read_dbg_bvr15: | |
997 | .func | |
998 | mrc p14, 0, r0, c0, c15, 4 | |
999 | bx lr | |
1000 | .endfunc | |
1001 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1002 | .global read_dbg_bcr0 | |
1003 | read_dbg_bcr0: | |
1004 | .func | |
1005 | mrc p14, 0, r0, c0, c0, 5 | |
1006 | bx lr | |
1007 | .endfunc | |
1008 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1009 | .global read_dbg_bcr1 | |
1010 | read_dbg_bcr1: | |
1011 | .func | |
1012 | mrc p14, 0, r0, c0, c1, 5 | |
1013 | bx lr | |
1014 | .endfunc | |
1015 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1016 | .global read_dbg_bcr2 | |
1017 | read_dbg_bcr2: | |
1018 | .func | |
1019 | mrc p14, 0, r0, c0, c2, 5 | |
1020 | bx lr | |
1021 | .endfunc | |
1022 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1023 | .global read_dbg_bcr3 | |
1024 | read_dbg_bcr3: | |
1025 | .func | |
1026 | mrc p14, 0, r0, c0, c3, 5 | |
1027 | bx lr | |
1028 | .endfunc | |
1029 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1030 | .global read_dbg_bcr4 | |
1031 | read_dbg_bcr4: | |
1032 | .func | |
1033 | mrc p14, 0, r0, c0, c4, 5 | |
1034 | bx lr | |
1035 | .endfunc | |
1036 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1037 | .global read_dbg_bcr5 | |
1038 | read_dbg_bcr5: | |
1039 | .func | |
1040 | mrc p14, 0, r0, c0, c5, 5 | |
1041 | bx lr | |
1042 | .endfunc | |
1043 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1044 | .global read_dbg_bcr6 | |
1045 | read_dbg_bcr6: | |
1046 | .func | |
1047 | mrc p14, 0, r0, c0, c6, 5 | |
1048 | bx lr | |
1049 | .endfunc | |
1050 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1051 | .global read_dbg_bcr7 | |
1052 | read_dbg_bcr7: | |
1053 | .func | |
1054 | mrc p14, 0, r0, c0, c7, 5 | |
1055 | bx lr | |
1056 | .endfunc | |
1057 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1058 | .global read_dbg_bcr8 | |
1059 | read_dbg_bcr8: | |
1060 | .func | |
1061 | mrc p14, 0, r0, c0, c8, 5 | |
1062 | bx lr | |
1063 | .endfunc | |
1064 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1065 | .global read_dbg_bcr9 | |
1066 | read_dbg_bcr9: | |
1067 | .func | |
1068 | mrc p14, 0, r0, c0, c9, 5 | |
1069 | bx lr | |
1070 | .endfunc | |
1071 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1072 | .global read_dbg_bcr10 | |
1073 | read_dbg_bcr10: | |
1074 | .func | |
1075 | mrc p14, 0, r0, c0, c10, 5 | |
1076 | bx lr | |
1077 | .endfunc | |
1078 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1079 | .global read_dbg_bcr11 | |
1080 | read_dbg_bcr11: | |
1081 | .func | |
1082 | mrc p14, 0, r0, c0, c11, 5 | |
1083 | bx lr | |
1084 | .endfunc | |
1085 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1086 | .global read_dbg_bcr12 | |
1087 | read_dbg_bcr12: | |
1088 | .func | |
1089 | mrc p14, 0, r0, c0, c12, 5 | |
1090 | bx lr | |
1091 | .endfunc | |
1092 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1093 | .global read_dbg_bcr13 | |
1094 | read_dbg_bcr13: | |
1095 | .func | |
1096 | mrc p14, 0, r0, c0, c13, 5 | |
1097 | bx lr | |
1098 | .endfunc | |
1099 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1100 | .global read_dbg_bcr14 | |
1101 | read_dbg_bcr14: | |
1102 | .func | |
1103 | mrc p14, 0, r0, c0, c14, 5 | |
1104 | bx lr | |
1105 | .endfunc | |
1106 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1107 | .global read_dbg_bcr15 | |
1108 | read_dbg_bcr15: | |
1109 | .func | |
1110 | mrc p14, 0, r0, c0, c15, 5 | |
1111 | bx lr | |
1112 | .endfunc | |
1113 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1114 | .global read_dbg_wvr0 | |
1115 | read_dbg_wvr0: | |
1116 | .func | |
1117 | mrc p14, 0, r0, c0, c0, 6 | |
1118 | bx lr | |
1119 | .endfunc | |
1120 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1121 | .global read_dbg_wvr1 | |
1122 | read_dbg_wvr1: | |
1123 | .func | |
1124 | mrc p14, 0, r0, c0, c1, 6 | |
1125 | bx lr | |
1126 | .endfunc | |
1127 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1128 | .global read_dbg_wvr2 | |
1129 | read_dbg_wvr2: | |
1130 | .func | |
1131 | mrc p14, 0, r0, c0, c2, 6 | |
1132 | bx lr | |
1133 | .endfunc | |
1134 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1135 | .global read_dbg_wvr3 | |
1136 | read_dbg_wvr3: | |
1137 | .func | |
1138 | mrc p14, 0, r0, c0, c3, 6 | |
1139 | bx lr | |
1140 | .endfunc | |
1141 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1142 | .global read_dbg_wvr4 | |
1143 | read_dbg_wvr4: | |
1144 | .func | |
1145 | mrc p14, 0, r0, c0, c4, 6 | |
1146 | bx lr | |
1147 | .endfunc | |
1148 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1149 | .global read_dbg_wvr5 | |
1150 | read_dbg_wvr5: | |
1151 | .func | |
1152 | mrc p14, 0, r0, c0, c5, 6 | |
1153 | bx lr | |
1154 | .endfunc | |
1155 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1156 | .global read_dbg_wvr6 | |
1157 | read_dbg_wvr6: | |
1158 | .func | |
1159 | mrc p14, 0, r0, c0, c6, 6 | |
1160 | bx lr | |
1161 | .endfunc | |
1162 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1163 | .global read_dbg_wvr7 | |
1164 | read_dbg_wvr7: | |
1165 | .func | |
1166 | mrc p14, 0, r0, c0, c7, 6 | |
1167 | bx lr | |
1168 | .endfunc | |
1169 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1170 | .global read_dbg_wvr8 | |
1171 | read_dbg_wvr8: | |
1172 | .func | |
1173 | mrc p14, 0, r0, c0, c8, 6 | |
1174 | bx lr | |
1175 | .endfunc | |
1176 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1177 | .global read_dbg_wvr9 | |
1178 | read_dbg_wvr9: | |
1179 | .func | |
1180 | mrc p14, 0, r0, c0, c9, 6 | |
1181 | bx lr | |
1182 | .endfunc | |
1183 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1184 | .global read_dbg_wvr10 | |
1185 | read_dbg_wvr10: | |
1186 | .func | |
1187 | mrc p14, 0, r0, c0, c10, 6 | |
1188 | bx lr | |
1189 | .endfunc | |
1190 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1191 | .global read_dbg_wvr11 | |
1192 | read_dbg_wvr11: | |
1193 | .func | |
1194 | mrc p14, 0, r0, c0, c11, 6 | |
1195 | bx lr | |
1196 | .endfunc | |
1197 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1198 | .global read_dbg_wvr12 | |
1199 | read_dbg_wvr12: | |
1200 | .func | |
1201 | mrc p14, 0, r0, c0, c12, 6 | |
1202 | bx lr | |
1203 | .endfunc | |
1204 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1205 | .global read_dbg_wvr13 | |
1206 | read_dbg_wvr13: | |
1207 | .func | |
1208 | mrc p14, 0, r0, c0, c13, 6 | |
1209 | bx lr | |
1210 | .endfunc | |
1211 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1212 | .global read_dbg_wvr14 | |
1213 | read_dbg_wvr14: | |
1214 | .func | |
1215 | mrc p14, 0, r0, c0, c14, 6 | |
1216 | bx lr | |
1217 | .endfunc | |
1218 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1219 | .global read_dbg_wvr15 | |
1220 | read_dbg_wvr15: | |
1221 | .func | |
1222 | mrc p14, 0, r0, c0, c15, 6 | |
1223 | bx lr | |
1224 | .endfunc | |
1225 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1226 | .global read_dbg_wcr0 | |
1227 | read_dbg_wcr0: | |
1228 | .func | |
1229 | mrc p14, 0, r0, c0, c0, 7 | |
1230 | bx lr | |
1231 | .endfunc | |
1232 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1233 | .global read_dbg_wcr1 | |
1234 | read_dbg_wcr1: | |
1235 | .func | |
1236 | mrc p14, 0, r0, c0, c1, 7 | |
1237 | bx lr | |
1238 | .endfunc | |
1239 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1240 | .global read_dbg_wcr2 | |
1241 | read_dbg_wcr2: | |
1242 | .func | |
1243 | mrc p14, 0, r0, c0, c2, 7 | |
1244 | bx lr | |
1245 | .endfunc | |
1246 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1247 | .global read_dbg_wcr3 | |
1248 | read_dbg_wcr3: | |
1249 | .func | |
1250 | mrc p14, 0, r0, c0, c3, 7 | |
1251 | bx lr | |
1252 | .endfunc | |
1253 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1254 | .global read_dbg_wcr4 | |
1255 | read_dbg_wcr4: | |
1256 | .func | |
1257 | mrc p14, 0, r0, c0, c4, 7 | |
1258 | bx lr | |
1259 | .endfunc | |
1260 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1261 | .global read_dbg_wcr5 | |
1262 | read_dbg_wcr5: | |
1263 | .func | |
1264 | mrc p14, 0, r0, c0, c5, 7 | |
1265 | bx lr | |
1266 | .endfunc | |
1267 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1268 | .global read_dbg_wcr6 | |
1269 | read_dbg_wcr6: | |
1270 | .func | |
1271 | mrc p14, 0, r0, c0, c6, 7 | |
1272 | bx lr | |
1273 | .endfunc | |
1274 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1275 | .global read_dbg_wcr7 | |
1276 | read_dbg_wcr7: | |
1277 | .func | |
1278 | mrc p14, 0, r0, c0, c7, 7 | |
1279 | bx lr | |
1280 | .endfunc | |
1281 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1282 | .global read_dbg_wcr8 | |
1283 | read_dbg_wcr8: | |
1284 | .func | |
1285 | mrc p14, 0, r0, c0, c8, 7 | |
1286 | bx lr | |
1287 | .endfunc | |
1288 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1289 | .global read_dbg_wcr9 | |
1290 | read_dbg_wcr9: | |
1291 | .func | |
1292 | mrc p14, 0, r0, c0, c9, 7 | |
1293 | bx lr | |
1294 | .endfunc | |
1295 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1296 | .global read_dbg_wcr10 | |
1297 | read_dbg_wcr10: | |
1298 | .func | |
1299 | mrc p14, 0, r0, c0, c10, 7 | |
1300 | bx lr | |
1301 | .endfunc | |
1302 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1303 | .global read_dbg_wcr11 | |
1304 | read_dbg_wcr11: | |
1305 | .func | |
1306 | mrc p14, 0, r0, c0, c11, 7 | |
1307 | bx lr | |
1308 | .endfunc | |
1309 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1310 | .global read_dbg_wcr12 | |
1311 | read_dbg_wcr12: | |
1312 | .func | |
1313 | mrc p14, 0, r0, c0, c12, 7 | |
1314 | bx lr | |
1315 | .endfunc | |
1316 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1317 | .global read_dbg_wcr13 | |
1318 | read_dbg_wcr13: | |
1319 | .func | |
1320 | mrc p14, 0, r0, c0, c13, 7 | |
1321 | bx lr | |
1322 | .endfunc | |
1323 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1324 | .global read_dbg_wcr14 | |
1325 | read_dbg_wcr14: | |
1326 | .func | |
1327 | mrc p14, 0, r0, c0, c14, 7 | |
1328 | bx lr | |
1329 | .endfunc | |
1330 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1331 | .global read_dbg_wcr15 | |
1332 | read_dbg_wcr15: | |
1333 | .func | |
1334 | mrc p14, 0, r0, c0, c15, 7 | |
1335 | bx lr | |
1336 | .endfunc | |
1337 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1338 | .global read_dbg_bxvr0 | |
1339 | read_dbg_bxvr0: | |
1340 | .func | |
1341 | mrc p14, 0, r0, c1, c0, 1 | |
1342 | bx lr | |
1343 | .endfunc | |
1344 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1345 | .global read_dbg_bxvr1 | |
1346 | read_dbg_bxvr1: | |
1347 | .func | |
1348 | mrc p14, 0, r0, c1, c1, 1 | |
1349 | bx lr | |
1350 | .endfunc | |
1351 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1352 | .global read_dbg_bxvr2 | |
1353 | read_dbg_bxvr2: | |
1354 | .func | |
1355 | mrc p14, 0, r0, c1, c2, 1 | |
1356 | bx lr | |
1357 | .endfunc | |
1358 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1359 | .global read_dbg_bxvr3 | |
1360 | read_dbg_bxvr3: | |
1361 | .func | |
1362 | mrc p14, 0, r0, c1, c3, 1 | |
1363 | bx lr | |
1364 | .endfunc | |
1365 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1366 | .global read_dbg_bxvr4 | |
1367 | read_dbg_bxvr4: | |
1368 | .func | |
1369 | mrc p14, 0, r0, c1, c4, 1 | |
1370 | bx lr | |
1371 | .endfunc | |
1372 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1373 | .global read_dbg_bxvr5 | |
1374 | read_dbg_bxvr5: | |
1375 | .func | |
1376 | mrc p14, 0, r0, c1, c5, 1 | |
1377 | bx lr | |
1378 | .endfunc | |
1379 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1380 | .global read_dbg_bxvr6 | |
1381 | read_dbg_bxvr6: | |
1382 | .func | |
1383 | mrc p14, 0, r0, c1, c6, 1 | |
1384 | bx lr | |
1385 | .endfunc | |
1386 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1387 | .global read_dbg_bxvr7 | |
1388 | read_dbg_bxvr7: | |
1389 | .func | |
1390 | mrc p14, 0, r0, c1, c7, 1 | |
1391 | bx lr | |
1392 | .endfunc | |
1393 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1394 | .global read_dbg_bxvr8 | |
1395 | read_dbg_bxvr8: | |
1396 | .func | |
1397 | mrc p14, 0, r0, c1, c8, 1 | |
1398 | bx lr | |
1399 | .endfunc | |
1400 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1401 | .global read_dbg_bxvr9 | |
1402 | read_dbg_bxvr9: | |
1403 | .func | |
1404 | mrc p14, 0, r0, c1, c9, 1 | |
1405 | bx lr | |
1406 | .endfunc | |
1407 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1408 | .global read_dbg_bxvr10 | |
1409 | read_dbg_bxvr10: | |
1410 | .func | |
1411 | mrc p14, 0, r0, c1, c10, 1 | |
1412 | bx lr | |
1413 | .endfunc | |
1414 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1415 | .global read_dbg_bxvr11 | |
1416 | read_dbg_bxvr11: | |
1417 | .func | |
1418 | mrc p14, 0, r0, c1, c11, 1 | |
1419 | bx lr | |
1420 | .endfunc | |
1421 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1422 | .global read_dbg_bxvr12 | |
1423 | read_dbg_bxvr12: | |
1424 | .func | |
1425 | mrc p14, 0, r0, c1, c12, 1 | |
1426 | bx lr | |
1427 | .endfunc | |
1428 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1429 | .global read_dbg_bxvr13 | |
1430 | read_dbg_bxvr13: | |
1431 | .func | |
1432 | mrc p14, 0, r0, c1, c13, 1 | |
1433 | bx lr | |
1434 | .endfunc | |
1435 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1436 | .global read_dbg_bxvr14 | |
1437 | read_dbg_bxvr14: | |
1438 | .func | |
1439 | mrc p14, 0, r0, c1, c14, 1 | |
1440 | bx lr | |
1441 | .endfunc | |
1442 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1443 | .global read_dbg_bxvr15 | |
1444 | read_dbg_bxvr15: | |
1445 | .func | |
1446 | mrc p14, 0, r0, c1, c15, 1 | |
1447 | bx lr | |
1448 | .endfunc | |
1449 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1450 | .global write_dbg_osdlr | |
1451 | write_dbg_osdlr: | |
1452 | .func | |
1453 | mcr p14, 0, r0, c1, c3, 4 @ Write OS Double Lock Register | |
1454 | isb | |
1455 | bx lr | |
1456 | .endfunc | |
1457 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1458 | .global write_dbg_oslar | |
1459 | write_dbg_oslar: | |
1460 | .func | |
1461 | mcr p14, 0, r0, c1, c0, 4 @ Write OS Lock address register | |
1462 | isb | |
1463 | bx lr | |
1464 | .endfunc | |
1465 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1466 | .global write_dbg_dtrrxext | |
1467 | write_dbg_dtrrxext: | |
1468 | .func | |
1469 | mcr p14, 0, r0, c0, c0, 2 | |
1470 | bx lr | |
1471 | .endfunc | |
1472 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1473 | .global write_dbg_dtrtxext | |
1474 | write_dbg_dtrtxext: | |
1475 | .func | |
1476 | mcr p14, 0, r0, c0, c3, 2 | |
1477 | bx lr | |
1478 | .endfunc | |
1479 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1480 | .global write_dbg_dscrext | |
1481 | write_dbg_dscrext: | |
1482 | .func | |
1483 | mcr p14, 0, r0, c0, c2, 2 | |
1484 | bx lr | |
1485 | .endfunc | |
1486 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1487 | .global write_dbg_wfar | |
1488 | write_dbg_wfar: | |
1489 | .func | |
1490 | mcr p14, 0, r0, c0, c6, 0 | |
1491 | bx lr | |
1492 | .endfunc | |
1493 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1494 | .global write_dbg_vcr | |
1495 | write_dbg_vcr: | |
1496 | .func | |
1497 | mcr p14, 0, r0, c0, c7, 0 | |
1498 | bx lr | |
1499 | .endfunc | |
1500 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1501 | .global write_dbg_claimset | |
1502 | write_dbg_claimset: | |
1503 | .func | |
1504 | mcr p14, 0, r0, c7, c8, 6 | |
1505 | bx lr | |
1506 | .endfunc | |
1507 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1508 | .global write_dbg_bvr0 | |
1509 | write_dbg_bvr0: | |
1510 | .func | |
1511 | mcr p14, 0, r0, c0, c0, 4 | |
1512 | bx lr | |
1513 | .endfunc | |
1514 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1515 | .global write_dbg_bvr1 | |
1516 | write_dbg_bvr1: | |
1517 | .func | |
1518 | mcr p14, 0, r0, c0, c1, 4 | |
1519 | bx lr | |
1520 | .endfunc | |
1521 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1522 | .global write_dbg_bvr2 | |
1523 | write_dbg_bvr2: | |
1524 | .func | |
1525 | mcr p14, 0, r0, c0, c2, 4 | |
1526 | bx lr | |
1527 | .endfunc | |
1528 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1529 | .global write_dbg_bvr3 | |
1530 | write_dbg_bvr3: | |
1531 | .func | |
1532 | mcr p14, 0, r0, c0, c3, 4 | |
1533 | bx lr | |
1534 | .endfunc | |
1535 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1536 | .global write_dbg_bvr4 | |
1537 | write_dbg_bvr4: | |
1538 | .func | |
1539 | mcr p14, 0, r0, c0, c4, 4 | |
1540 | bx lr | |
1541 | .endfunc | |
1542 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1543 | .global write_dbg_bvr5 | |
1544 | write_dbg_bvr5: | |
1545 | .func | |
1546 | mcr p14, 0, r0, c0, c5, 4 | |
1547 | bx lr | |
1548 | .endfunc | |
1549 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1550 | .global write_dbg_bvr6 | |
1551 | write_dbg_bvr6: | |
1552 | .func | |
1553 | mcr p14, 0, r0, c0, c6, 4 | |
1554 | bx lr | |
1555 | .endfunc | |
1556 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1557 | .global write_dbg_bvr7 | |
1558 | write_dbg_bvr7: | |
1559 | .func | |
1560 | mcr p14, 0, r0, c0, c7, 4 | |
1561 | bx lr | |
1562 | .endfunc | |
1563 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1564 | .global write_dbg_bvr8 | |
1565 | write_dbg_bvr8: | |
1566 | .func | |
1567 | mcr p14, 0, r0, c0, c8, 4 | |
1568 | bx lr | |
1569 | .endfunc | |
1570 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1571 | .global write_dbg_bvr9 | |
1572 | write_dbg_bvr9: | |
1573 | .func | |
1574 | mcr p14, 0, r0, c0, c9, 4 | |
1575 | bx lr | |
1576 | .endfunc | |
1577 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1578 | .global write_dbg_bvr10 | |
1579 | write_dbg_bvr10: | |
1580 | .func | |
1581 | mcr p14, 0, r0, c0, c10, 4 | |
1582 | bx lr | |
1583 | .endfunc | |
1584 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1585 | .global write_dbg_bvr11 | |
1586 | write_dbg_bvr11: | |
1587 | .func | |
1588 | mcr p14, 0, r0, c0, c11, 4 | |
1589 | bx lr | |
1590 | .endfunc | |
1591 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1592 | .global write_dbg_bvr12 | |
1593 | write_dbg_bvr12: | |
1594 | .func | |
1595 | mcr p14, 0, r0, c0, c12, 4 | |
1596 | bx lr | |
1597 | .endfunc | |
1598 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1599 | .global write_dbg_bvr13 | |
1600 | write_dbg_bvr13: | |
1601 | .func | |
1602 | mcr p14, 0, r0, c0, c13, 4 | |
1603 | bx lr | |
1604 | .endfunc | |
1605 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1606 | .global write_dbg_bvr14 | |
1607 | write_dbg_bvr14: | |
1608 | .func | |
1609 | mcr p14, 0, r0, c0, c14, 4 | |
1610 | bx lr | |
1611 | .endfunc | |
1612 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1613 | .global write_dbg_bvr15 | |
1614 | write_dbg_bvr15: | |
1615 | .func | |
1616 | mcr p14, 0, r0, c0, c15, 4 | |
1617 | bx lr | |
1618 | .endfunc | |
1619 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1620 | .global write_dbg_bcr0 | |
1621 | write_dbg_bcr0: | |
1622 | .func | |
1623 | mcr p14, 0, r0, c0, c0, 5 | |
1624 | bx lr | |
1625 | .endfunc | |
1626 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1627 | .global write_dbg_bcr1 | |
1628 | write_dbg_bcr1: | |
1629 | .func | |
1630 | mcr p14, 0, r0, c0, c1, 5 | |
1631 | bx lr | |
1632 | .endfunc | |
1633 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1634 | .global write_dbg_bcr2 | |
1635 | write_dbg_bcr2: | |
1636 | .func | |
1637 | mcr p14, 0, r0, c0, c2, 5 | |
1638 | bx lr | |
1639 | .endfunc | |
1640 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1641 | .global write_dbg_bcr3 | |
1642 | write_dbg_bcr3: | |
1643 | .func | |
1644 | mcr p14, 0, r0, c0, c3, 5 | |
1645 | bx lr | |
1646 | .endfunc | |
1647 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1648 | .global write_dbg_bcr4 | |
1649 | write_dbg_bcr4: | |
1650 | .func | |
1651 | mcr p14, 0, r0, c0, c4, 5 | |
1652 | bx lr | |
1653 | .endfunc | |
1654 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1655 | .global write_dbg_bcr5 | |
1656 | write_dbg_bcr5: | |
1657 | .func | |
1658 | mcr p14, 0, r0, c0, c5, 5 | |
1659 | bx lr | |
1660 | .endfunc | |
1661 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1662 | .global write_dbg_bcr6 | |
1663 | write_dbg_bcr6: | |
1664 | .func | |
1665 | mcr p14, 0, r0, c0, c6, 5 | |
1666 | bx lr | |
1667 | .endfunc | |
1668 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1669 | .global write_dbg_bcr7 | |
1670 | write_dbg_bcr7: | |
1671 | .func | |
1672 | mcr p14, 0, r0, c0, c7, 5 | |
1673 | bx lr | |
1674 | .endfunc | |
1675 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1676 | .global write_dbg_bcr8 | |
1677 | write_dbg_bcr8: | |
1678 | .func | |
1679 | mcr p14, 0, r0, c0, c8, 5 | |
1680 | bx lr | |
1681 | .endfunc | |
1682 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1683 | .global write_dbg_bcr9 | |
1684 | write_dbg_bcr9: | |
1685 | .func | |
1686 | mcr p14, 0, r0, c0, c9, 5 | |
1687 | bx lr | |
1688 | .endfunc | |
1689 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1690 | .global write_dbg_bcr10 | |
1691 | write_dbg_bcr10: | |
1692 | .func | |
1693 | mcr p14, 0, r0, c0, c10, 5 | |
1694 | bx lr | |
1695 | .endfunc | |
1696 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1697 | .global write_dbg_bcr11 | |
1698 | write_dbg_bcr11: | |
1699 | .func | |
1700 | mcr p14, 0, r0, c0, c11, 5 | |
1701 | bx lr | |
1702 | .endfunc | |
1703 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1704 | .global write_dbg_bcr12 | |
1705 | write_dbg_bcr12: | |
1706 | .func | |
1707 | mcr p14, 0, r0, c0, c12, 5 | |
1708 | bx lr | |
1709 | .endfunc | |
1710 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1711 | .global write_dbg_bcr13 | |
1712 | write_dbg_bcr13: | |
1713 | .func | |
1714 | mcr p14, 0, r0, c0, c13, 5 | |
1715 | bx lr | |
1716 | .endfunc | |
1717 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1718 | .global write_dbg_bcr14 | |
1719 | write_dbg_bcr14: | |
1720 | .func | |
1721 | mcr p14, 0, r0, c0, c14, 5 | |
1722 | bx lr | |
1723 | .endfunc | |
1724 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1725 | .global write_dbg_bcr15 | |
1726 | write_dbg_bcr15: | |
1727 | .func | |
1728 | mcr p14, 0, r0, c0, c15, 5 | |
1729 | bx lr | |
1730 | .endfunc | |
1731 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1732 | .global write_dbg_wvr0 | |
1733 | write_dbg_wvr0: | |
1734 | .func | |
1735 | mcr p14, 0, r0, c0, c0, 6 | |
1736 | bx lr | |
1737 | .endfunc | |
1738 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1739 | .global write_dbg_wvr1 | |
1740 | write_dbg_wvr1: | |
1741 | .func | |
1742 | mcr p14, 0, r0, c0, c1, 6 | |
1743 | bx lr | |
1744 | .endfunc | |
1745 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1746 | .global write_dbg_wvr2 | |
1747 | write_dbg_wvr2: | |
1748 | .func | |
1749 | mcr p14, 0, r0, c0, c2, 6 | |
1750 | bx lr | |
1751 | .endfunc | |
1752 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1753 | .global write_dbg_wvr3 | |
1754 | write_dbg_wvr3: | |
1755 | .func | |
1756 | mcr p14, 0, r0, c0, c3, 6 | |
1757 | bx lr | |
1758 | .endfunc | |
1759 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1760 | .global write_dbg_wvr4 | |
1761 | write_dbg_wvr4: | |
1762 | .func | |
1763 | mcr p14, 0, r0, c0, c4, 6 | |
1764 | bx lr | |
1765 | .endfunc | |
1766 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1767 | .global write_dbg_wvr5 | |
1768 | write_dbg_wvr5: | |
1769 | .func | |
1770 | mcr p14, 0, r0, c0, c5, 6 | |
1771 | bx lr | |
1772 | .endfunc | |
1773 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1774 | .global write_dbg_wvr6 | |
1775 | write_dbg_wvr6: | |
1776 | .func | |
1777 | mcr p14, 0, r0, c0, c6, 6 | |
1778 | bx lr | |
1779 | .endfunc | |
1780 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1781 | .global write_dbg_wvr7 | |
1782 | write_dbg_wvr7: | |
1783 | .func | |
1784 | mcr p14, 0, r0, c0, c7, 6 | |
1785 | bx lr | |
1786 | .endfunc | |
1787 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1788 | .global write_dbg_wvr8 | |
1789 | write_dbg_wvr8: | |
1790 | .func | |
1791 | mcr p14, 0, r0, c0, c8, 6 | |
1792 | bx lr | |
1793 | .endfunc | |
1794 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1795 | .global write_dbg_wvr9 | |
1796 | write_dbg_wvr9: | |
1797 | .func | |
1798 | mcr p14, 0, r0, c0, c9, 6 | |
1799 | bx lr | |
1800 | .endfunc | |
1801 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1802 | .global write_dbg_wvr10 | |
1803 | write_dbg_wvr10: | |
1804 | .func | |
1805 | mcr p14, 0, r0, c0, c10, 6 | |
1806 | bx lr | |
1807 | .endfunc | |
1808 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1809 | .global write_dbg_wvr11 | |
1810 | write_dbg_wvr11: | |
1811 | .func | |
1812 | mcr p14, 0, r0, c0, c11, 6 | |
1813 | bx lr | |
1814 | .endfunc | |
1815 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1816 | .global write_dbg_wvr12 | |
1817 | write_dbg_wvr12: | |
1818 | .func | |
1819 | mcr p14, 0, r0, c0, c12, 6 | |
1820 | bx lr | |
1821 | .endfunc | |
1822 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1823 | .global write_dbg_wvr13 | |
1824 | write_dbg_wvr13: | |
1825 | .func | |
1826 | mcr p14, 0, r0, c0, c13, 6 | |
1827 | bx lr | |
1828 | .endfunc | |
1829 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1830 | .global write_dbg_wvr14 | |
1831 | write_dbg_wvr14: | |
1832 | .func | |
1833 | mcr p14, 0, r0, c0, c14, 6 | |
1834 | bx lr | |
1835 | .endfunc | |
1836 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1837 | .global write_dbg_wvr15 | |
1838 | write_dbg_wvr15: | |
1839 | .func | |
1840 | mcr p14, 0, r0, c0, c15, 6 | |
1841 | bx lr | |
1842 | .endfunc | |
1843 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1844 | .global write_dbg_wcr0 | |
1845 | write_dbg_wcr0: | |
1846 | .func | |
1847 | mcr p14, 0, r0, c0, c0, 7 | |
1848 | bx lr | |
1849 | .endfunc | |
1850 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1851 | .global write_dbg_wcr1 | |
1852 | write_dbg_wcr1: | |
1853 | .func | |
1854 | mcr p14, 0, r0, c0, c1, 7 | |
1855 | bx lr | |
1856 | .endfunc | |
1857 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1858 | .global write_dbg_wcr2 | |
1859 | write_dbg_wcr2: | |
1860 | .func | |
1861 | mcr p14, 0, r0, c0, c2, 7 | |
1862 | bx lr | |
1863 | .endfunc | |
1864 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1865 | .global write_dbg_wcr3 | |
1866 | write_dbg_wcr3: | |
1867 | .func | |
1868 | mcr p14, 0, r0, c0, c3, 7 | |
1869 | bx lr | |
1870 | .endfunc | |
1871 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1872 | .global write_dbg_wcr4 | |
1873 | write_dbg_wcr4: | |
1874 | .func | |
1875 | mcr p14, 0, r0, c0, c4, 7 | |
1876 | bx lr | |
1877 | .endfunc | |
1878 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1879 | .global write_dbg_wcr5 | |
1880 | write_dbg_wcr5: | |
1881 | .func | |
1882 | mcr p14, 0, r0, c0, c5, 7 | |
1883 | bx lr | |
1884 | .endfunc | |
1885 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1886 | .global write_dbg_wcr6 | |
1887 | write_dbg_wcr6: | |
1888 | .func | |
1889 | mcr p14, 0, r0, c0, c6, 7 | |
1890 | bx lr | |
1891 | .endfunc | |
1892 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1893 | .global write_dbg_wcr7 | |
1894 | write_dbg_wcr7: | |
1895 | .func | |
1896 | mcr p14, 0, r0, c0, c7, 7 | |
1897 | bx lr | |
1898 | .endfunc | |
1899 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1900 | .global write_dbg_wcr8 | |
1901 | write_dbg_wcr8: | |
1902 | .func | |
1903 | mcr p14, 0, r0, c0, c8, 7 | |
1904 | bx lr | |
1905 | .endfunc | |
1906 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1907 | .global write_dbg_wcr9 | |
1908 | write_dbg_wcr9: | |
1909 | .func | |
1910 | mcr p14, 0, r0, c0, c9, 7 | |
1911 | bx lr | |
1912 | .endfunc | |
1913 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1914 | .global write_dbg_wcr10 | |
1915 | write_dbg_wcr10: | |
1916 | .func | |
1917 | mcr p14, 0, r0, c0, c10, 7 | |
1918 | bx lr | |
1919 | .endfunc | |
1920 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1921 | .global write_dbg_wcr11 | |
1922 | write_dbg_wcr11: | |
1923 | .func | |
1924 | mcr p14, 0, r0, c0, c11, 7 | |
1925 | bx lr | |
1926 | .endfunc | |
1927 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1928 | .global write_dbg_wcr12 | |
1929 | write_dbg_wcr12: | |
1930 | .func | |
1931 | mcr p14, 0, r0, c0, c12, 7 | |
1932 | bx lr | |
1933 | .endfunc | |
1934 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1935 | .global write_dbg_wcr13 | |
1936 | write_dbg_wcr13: | |
1937 | .func | |
1938 | mcr p14, 0, r0, c0, c13, 7 | |
1939 | bx lr | |
1940 | .endfunc | |
1941 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1942 | .global write_dbg_wcr14 | |
1943 | write_dbg_wcr14: | |
1944 | .func | |
1945 | mcr p14, 0, r0, c0, c14, 7 | |
1946 | bx lr | |
1947 | .endfunc | |
1948 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1949 | .global write_dbg_wcr15 | |
1950 | write_dbg_wcr15: | |
1951 | .func | |
1952 | mcr p14, 0, r0, c0, c15, 7 | |
1953 | bx lr | |
1954 | .endfunc | |
1955 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1956 | .global write_dbg_bxvr0 | |
1957 | write_dbg_bxvr0: | |
1958 | .func | |
1959 | mcr p14, 0, r0, c1, c0, 1 | |
1960 | bx lr | |
1961 | .endfunc | |
1962 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1963 | .global write_dbg_bxvr1 | |
1964 | write_dbg_bxvr1: | |
1965 | .func | |
1966 | mcr p14, 0, r0, c1, c1, 1 | |
1967 | bx lr | |
1968 | .endfunc | |
1969 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1970 | .global write_dbg_bxvr2 | |
1971 | write_dbg_bxvr2: | |
1972 | .func | |
1973 | mcr p14, 0, r0, c1, c2, 1 | |
1974 | bx lr | |
1975 | .endfunc | |
1976 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1977 | .global write_dbg_bxvr3 | |
1978 | write_dbg_bxvr3: | |
1979 | .func | |
1980 | mcr p14, 0, r0, c1, c3, 1 | |
1981 | bx lr | |
1982 | .endfunc | |
1983 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1984 | .global write_dbg_bxvr4 | |
1985 | write_dbg_bxvr4: | |
1986 | .func | |
1987 | mcr p14, 0, r0, c1, c4, 1 | |
1988 | bx lr | |
1989 | .endfunc | |
1990 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1991 | .global write_dbg_bxvr5 | |
1992 | write_dbg_bxvr5: | |
1993 | .func | |
1994 | mcr p14, 0, r0, c1, c5, 1 | |
1995 | bx lr | |
1996 | .endfunc | |
1997 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
1998 | .global write_dbg_bxvr6 | |
1999 | write_dbg_bxvr6: | |
2000 | .func | |
2001 | mcr p14, 0, r0, c1, c6, 1 | |
2002 | bx lr | |
2003 | .endfunc | |
2004 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
2005 | .global write_dbg_bxvr7 | |
2006 | write_dbg_bxvr7: | |
2007 | .func | |
2008 | mcr p14, 0, r0, c1, c7, 1 | |
2009 | bx lr | |
2010 | .endfunc | |
2011 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
2012 | .global write_dbg_bxvr8 | |
2013 | write_dbg_bxvr8: | |
2014 | .func | |
2015 | mcr p14, 0, r0, c1, c8, 1 | |
2016 | bx lr | |
2017 | .endfunc | |
2018 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
2019 | .global write_dbg_bxvr9 | |
2020 | write_dbg_bxvr9: | |
2021 | .func | |
2022 | mcr p14, 0, r0, c1, c9, 1 | |
2023 | bx lr | |
2024 | .endfunc | |
2025 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
2026 | .global write_dbg_bxvr10 | |
2027 | write_dbg_bxvr10: | |
2028 | .func | |
2029 | mcr p14, 0, r0, c1, c10, 1 | |
2030 | bx lr | |
2031 | .endfunc | |
2032 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
2033 | .global write_dbg_bxvr11 | |
2034 | write_dbg_bxvr11: | |
2035 | .func | |
2036 | mcr p14, 0, r0, c1, c11, 1 | |
2037 | bx lr | |
2038 | .endfunc | |
2039 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
2040 | .global write_dbg_bxvr12 | |
2041 | write_dbg_bxvr12: | |
2042 | .func | |
2043 | mcr p14, 0, r0, c1, c12, 1 | |
2044 | bx lr | |
2045 | .endfunc | |
2046 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
2047 | .global write_dbg_bxvr13 | |
2048 | write_dbg_bxvr13: | |
2049 | .func | |
2050 | mcr p14, 0, r0, c1, c13, 1 | |
2051 | bx lr | |
2052 | .endfunc | |
2053 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
2054 | .global write_dbg_bxvr14 | |
2055 | write_dbg_bxvr14: | |
2056 | .func | |
2057 | mcr p14, 0, r0, c1, c14, 1 | |
2058 | bx lr | |
2059 | .endfunc | |
2060 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
2061 | .global write_dbg_bxvr15 | |
2062 | write_dbg_bxvr15: | |
2063 | .func | |
2064 | mcr p14, 0, r0, c1, c15, 1 | |
2065 | bx lr | |
2066 | .endfunc | |
2067 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
2068 | .global read_id_pfr1 | |
2069 | read_id_pfr1: | |
2070 | .func | |
2071 | mrc p15, 0, r0, c0, c1, 1 | |
2072 | bx lr | |
2073 | .endfunc | |
2074 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
2075 | .global invalidate_unified_TLB_inner_shareable | |
2076 | invalidate_unified_TLB_inner_shareable: | |
2077 | .func | |
2078 | mov r0, #0 | |
2079 | mcr p15, 0, r0, c8, c3, 0 | |
2080 | bx lr | |
2081 | .endfunc | |
2082 | ||
2083 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
2084 | @ Function called with two arguments: | |
2085 | @ r0 contains address to read control registers | |
2086 | @ r1 is non-zero if we are Secure | |
2087 | ||
2088 | .global mt_restore_control_registers | |
2089 | mt_restore_control_registers: | |
2090 | .func | |
2091 | cmp r1, #0 @ Are we Secure? | |
2092 | ldm r0!, {r2-r3, r12} | |
2093 | mcr p15,0,r2,c1,c0,1 @ ACTLR - Auxiliary Control Register | |
2094 | @ mcr p15,0,r3,c1,c0,0 @ SCTLR - System Control Register - move to tail | |
2095 | mcr p15,0,r12,c1,c0,2 @ CPACR - Coprocessor Access Control Register | |
2096 | ||
2097 | @-----------------cannot use r3 | |
2098 | ||
2099 | @ldmne r0!, {r1-r3,r12} | |
2100 | @mcrne p15,0,r1,c12,c0,1 @ MVBAR - Monitor Vector Base Address Register | |
2101 | @mcrne p15,0,r2,c1,c1,0 @ Secure Configuration Register | |
2102 | @mcrne p15,0,r3,c1,c1,1 @ Secure Debug Enable Register | |
2103 | @mcrne p15,0,r12,c1,c1,2 @ Non-Secure Access Control Register | |
2104 | @ | |
2105 | ldmne r0!, {r1,r2} | |
2106 | mcrne p15,0,r1,c12,c0,1 @ MVBAR - Monitor Vector Base Address Register | |
2107 | mcrne p15,0,r2,c1,c1,0 @ Secure Configuration Register | |
2108 | ldmne r0!, {r1,r2} | |
2109 | mcrne p15,0,r1,c1,c1,1 @ Secure Debug Enable Register | |
2110 | mcrne p15,0,r2,c1,c1,2 @ Non-Secure Access Control Register | |
2111 | ||
2112 | @ldm r0!, {r1-r3,r12} | |
2113 | @mcr p15,0,r1,c13,c0,1 @ CONTEXTIDR | |
2114 | @mcr p15,0,r2,c13,c0,2 @ TPIDRURW | |
2115 | @mcr p15,0,r3,c13,c0,3 @ TPIDRURO | |
2116 | @mcr p15,0,r12,c13,c0,4 @ TPIDRPRW | |
2117 | @ | |
2118 | ldm r0!, {r1,r2} | |
2119 | mcr p15,0,r1,c13,c0,1 @ CONTEXTIDR | |
2120 | mcr p15,0,r2,c13,c0,2 @ TPIDRURW | |
2121 | ldm r0!, {r1,r2} | |
2122 | mcr p15,0,r1,c13,c0,3 @ TPIDRURO | |
2123 | mcr p15,0,r2,c13,c0,4 @ TPIDRPRW | |
2124 | ||
2125 | @ The next two registers are only present if ThumbEE is implemented | |
2126 | mrc p15, 0, r1, c0, c1, 0 @ Read ID_PFR0 | |
2127 | tst r1, #PFR0_THUMB_EE_SUPPORT | |
2128 | ldmne r0!, {r1,r2} | |
2129 | mcrne p14,6,r1,c0,c0,0 @ TEECR | |
2130 | mcrne p14,6,r2,c1,c0,0 @ TEEHBR | |
2131 | ||
2132 | ldm r0!, {r1, r2} | |
2133 | mcr p14,7,r1,c1,c0,0 @ JOSCR | |
2134 | mcr p14,7,r2,c2,c0,0 @ JMCR | |
2135 | isb | |
2136 | ||
2137 | mov r2, r3 | |
2138 | @-----------------can use r3 | |
2139 | ||
2140 | @ mt | |
2141 | @ adr r3, new_stack | |
2142 | @ ldr r3, [r3, #0] | |
2143 | ||
2144 | mrc p15, 0, r3, c0, c0, 5 | |
2145 | ands r3, r3, #0xf | |
2146 | ||
2147 | cmp r3, #0 | |
2148 | beq L_CPU_0 | |
2149 | cmp r3, #1 | |
2150 | beq L_CPU_1 | |
2151 | cmp r3, #2 | |
2152 | beq L_CPU_2 | |
2153 | cmp r3, #3 | |
2154 | beq L_CPU_3 | |
2155 | ||
2156 | L_CPU_0: | |
2157 | adrl r3, new_stack_0 | |
2158 | beq L_CPU_FINAL | |
2159 | L_CPU_1: | |
2160 | adrl r3, new_stack_1 | |
2161 | beq L_CPU_FINAL | |
2162 | L_CPU_2: | |
2163 | adrl r3, new_stack_2 | |
2164 | beq L_CPU_FINAL | |
2165 | L_CPU_3: | |
2166 | adrl r3, new_stack_3 | |
2167 | beq L_CPU_FINAL | |
2168 | ||
2169 | L_CPU_FINAL: | |
2170 | ldr r3, [r3, #0] | |
2171 | ||
2172 | mov sp, r3 | |
2173 | ||
2174 | add lr, lr, #PAGE_OFFSET | |
2175 | @ sub lr, lr, #PHYS_OFFSET | |
2176 | ldr r1,=PHYS_OFFSET | |
2177 | sub lr, lr, r1 | |
2178 | ||
2179 | add r11, r11, #PAGE_OFFSET | |
2180 | @ sub r11, r11, #PHYS_OFFSET | |
2181 | ldr r1,=PHYS_OFFSET | |
2182 | sub r11, r11, r1 | |
2183 | ||
2184 | mcr p15,0,r2,c1,c0,0 @ SCTLR - System Control Register | |
2185 | ||
2186 | mov pc, lr | |
2187 | isb | |
2188 | nop | |
2189 | nop | |
2190 | nop | |
2191 | nop | |
2192 | nop | |
2193 | nop | |
2194 | nop | |
2195 | nop | |
2196 | nop | |
2197 | nop | |
2198 | ||
2199 | bx lr | |
2200 | .endfunc | |
2201 | ||
2202 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
2203 | @ workaround for ARM CA7 Errata 802022 | |
2204 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
2205 | .global cpu_wake_up_errata_802022 | |
2206 | cpu_wake_up_errata_802022: | |
2207 | .func | |
2208 | 1: | |
2209 | isb | |
2210 | dsb | |
2211 | wfi | |
2212 | b 1b | |
2213 | .endfunc | |
2214 | ||
2215 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |
2216 | ||
2217 | .global cpu_wake_up | |
2218 | cpu_wake_up: | |
2219 | .func | |
2220 | ||
2221 | .if 0 | |
2222 | 1: | |
2223 | nop | |
2224 | b 1b | |
2225 | .endif | |
2226 | ||
2227 | nop | |
2228 | nop | |
2229 | nop | |
2230 | nop | |
2231 | nop | |
2232 | nop | |
2233 | nop | |
2234 | nop | |
2235 | nop | |
2236 | nop | |
2237 | nop | |
2238 | ||
2239 | mrc p15, 0, r0, c0, c0, 5 | |
2240 | ands r0, r0, #0xf | |
2241 | ||
2242 | cmp r0, #0 | |
2243 | beq L_CPU_0_WP | |
2244 | cmp r0, #1 | |
2245 | beq L_CPU_1_WP | |
2246 | cmp r0, #2 | |
2247 | beq L_CPU_2_WP | |
2248 | cmp r0, #3 | |
2249 | beq L_CPU_3_WP | |
2250 | ||
2251 | L_CPU_0_WP: | |
2252 | adrl r0, new_stack_0 | |
2253 | beq L_CPU_FINAL_WP | |
2254 | L_CPU_1_WP: | |
2255 | adrl r0, new_stack_1 | |
2256 | beq L_CPU_FINAL_WP | |
2257 | L_CPU_2_WP: | |
2258 | adrl r0, new_stack_2 | |
2259 | beq L_CPU_FINAL_WP | |
2260 | L_CPU_3_WP: | |
2261 | adrl r0, new_stack_3 | |
2262 | beq L_CPU_FINAL_WP | |
2263 | ||
2264 | L_CPU_FINAL_WP: | |
2265 | ldr r0, [r0, #0] | |
2266 | ||
2267 | @ sub r0, r0, #PAGE_OFFSET | |
2268 | ldr r1,=PAGE_OFFSET | |
2269 | sub r0, r0, r1 | |
2270 | ||
2271 | @ add r0, r0, #PHYS_OFFSET | |
2272 | ldr r1,=PHYS_OFFSET | |
2273 | add r0, r0, r1 | |
2274 | ||
2275 | mov sp, r0 | |
2276 | ||
2277 | .if 0 | |
2278 | ||
2279 | ldr r4, .L2 | |
2280 | mov r5, #82 | |
2281 | str r5, [r4, #0] | |
2282 | mov r5, #69 | |
2283 | str r5, [r4, #0] | |
2284 | mov r5, #83 | |
2285 | str r5, [r4, #0] | |
2286 | mov r5, #69 | |
2287 | str r5, [r4, #0] | |
2288 | mov r5, #84 | |
2289 | str r5, [r4, #0] | |
2290 | mov r5, #10 | |
2291 | str r5, [r4, #0] | |
2292 | mov r5, #13 | |
2293 | str r5, [r4, #0] | |
2294 | .endif | |
2295 | ||
2296 | b cpu_start_restore | |
2297 | .endfunc | |
2298 | ||
2299 | .if 0 | |
2300 | .L2: | |
2301 | @ uart tx register, need update for diff project/platform | |
2302 | .word -1056915456 | |
2303 | .endif | |
2304 | ||
2305 | #ifdef CONFIG_DEBUG_RODATA | |
2306 | new_stack_0: .word nstack_0+1020 | |
2307 | new_stack_1: .word nstack_1+1020 | |
2308 | new_stack_2: .word nstack_2+1020 | |
2309 | new_stack_3: .word nstack_3+1020 | |
2310 | .section".bss","aw",%nobits | |
2311 | nstack_0: .space 1024 | |
2312 | nstack_1: .space 1024 | |
2313 | nstack_2: .space 1024 | |
2314 | nstack_3: .space 1024 | |
2315 | #else | |
2316 | new_stack_0: .word nstack_0+1020 | |
2317 | nstack_0: .space 1024 | |
2318 | new_stack_1: .word nstack_1+1020 | |
2319 | nstack_1: .space 1024 | |
2320 | new_stack_2: .word nstack_2+1020 | |
2321 | nstack_2: .space 1024 | |
2322 | new_stack_3: .word nstack_3+1020 | |
2323 | nstack_3: .space 1024 | |
2324 | #endif // end of !CONFIG_DEBUG_RODATA | |
2325 |