4 #define PUTC(c) MOVW $(c), R0; MOVW R0, (R8)
7 MOVW $(KTZERO-KZERO), R13
10 /* disable watchdog */
11 MOVW $(RESETMGR_BASE + 4*PERMODRST), R1
16 /* disable L2 cache */
18 MOVW $(L2_BASE+0x100), R1
22 /* disable MMU and L1 caches */
24 MOVW $_start0-KZERO(SB), R2
25 MCR 15, 0, R1, C(1), C(0), 0
33 /* clean up to CONFADDR */
36 MOVW $(CONFADDR-KZERO), R2
43 MOVW $edata-KZERO(SB), R1
44 MOVW $end-KZERO(SB), R2
52 /* KZERO to PERIPH is mapped to 0 */
54 MOVW $(MACHL1(0)-KZERO), R4
56 ADD R1>>(SECSH-2), R4, R1
57 MOVW $(L1SEC|L1CACHED|L1KERRW), R2
58 MOVW $(PERIPH-KZERO), R3
65 /* memory above PERIPH is mapped to itself */
66 MOVW $(PERIPH|L1SEC|L1DEVICE|L1NOEXEC|L1KERRW), R2
74 MOVW $(MACH(0)-KZERO), R(Rmach)
76 /* enable MMU permission checking */
78 MCR 15, 0, R0, C(3), C(0), 0
80 /* select page table and enable MMU */
82 MCR 15, 0, R0, C(8), C(7), 0
85 MCR 15, 0, R1, C(2), C(0), 0
89 MCR 15, 0, R1, C(1), C(0), 0
104 MOVW $vectors(SB), R1
105 MCR 15, 0, R1, C(12), C(0)
107 /* enable maths coprocessors in CPACR but disable them in FPEXC */
108 MRC 15, 0, R0, C(1), C(0), 2
110 MCR 15, 0, R0, C(1), C(0), 2
116 /* enable L1 cache */
118 MCR 15, 0, R0, C(7), C(5), 0
119 MCR 15, 0, R0, C(7), C(5), 6
121 MRC 15, 0, R0, C(1), C(0), 1
123 MCR 15, 0, R0, C(1), C(0), 1
124 MRC 15, 0, R0, C(1), C(0), 0
125 ORR $(3<<11|1<<2), R0
126 MCR 15, 0, R0, C(1), C(0), 0
133 /* kernel Mach* in TPIDRPRW */
134 MCR 15, 0, R(Rmach), C(13), C(0), 4
136 MOVW $setR12(SB), R12
142 BL _div(SB) /* hack to load _div */
151 MOVW $(UTZERO+0x20), R1
155 BIC $(PsrMask|PsrDirq|PsrDfiq), R1
159 MOVW $(KTZERO-(15*4)), R0
160 MOVM.IA (R0), [R0-R12]
162 MOVM.IA.S (R13), [R13-R14]
164 MOVM.IA.W.S (R13), [R15]
166 TEXT forkret(SB), $-4
169 MOVM.IA.W (R13), [R0-R12]
170 MOVM.IA.S (R13), [R13-R14]
174 MOVM.IA.W.S (R13), [R15]
177 CPS(CPSMODE | PsrMabt)
179 CPS(CPSMODE | PsrMund)
181 CPS(CPSMODE | PsrMirq)
183 CPS(CPSMODE | PsrMfiq)
185 CPS(CPSMODE | PsrMsvc)
196 #define DIG MOVW R7>>28, R6; AND $15, R6; ADD $'0', R6; CMP $'9', R6; ADD.GT $7, R6; MOVW R6, (R8); MOVW R7<<4, R7
211 MOVW R14, 4(R(Rmach))
217 MOVW R14, 4(R(Rmach))
223 TEXT spldone(SB), $-4
232 TEXT setlabel(SB), $-4
238 TEXT gotolabel(SB), $-4
275 TEXT coherence(SB), $0
279 TEXT idlehands(SB), $0
284 TEXT sendevent(SB), $0
289 MRC 15, 0, R0, C(2), C(0), 0
295 MCR 15, 0, R0, C(2), C(0), 0
299 MCR 15, 0, R0, C(8), C(7), 3
303 TEXT flushtlb(SB), $0
304 MCR 15, 0, R0, C(8), C(3), 0
310 MCR 15, 0, R0, C(13), C(0), 1
314 MRC 15, 0, R0, C(6), C(0), 2
318 MRC 15, 0, R0, C(6), C(0), 0
322 MRC 15, 0, R0, C(5), C(0), 1
326 MRC 15, 0, R0, C(5), C(0), 0
330 MCR 15, 0, R0, C(9), C(12), 0
333 TEXT setpmcnten(SB), $0
334 MCR 15, 0, R0, C(9), C(12), 1
337 TEXT perfticks(SB), $0
338 MRC 15, 0, R0, C(9), C(13), 0
342 MRC 15, 0, R1, C(9), C(13), 0
344 MOVW 24(R(Rmach)), R1
345 MRC 15, 0, R2, C(9), C(12), 3
348 MCR 15, 0, R2, C(9), C(12), 3
350 MOVW R1, 24(R(Rmach))
362 TEXT fprestore(SB), $0
363 MOVM.IA.W (R0), [R1-R2]
373 MOVM.IA.W [R1-R2], (R0)
390 TEXT l1dclear(SB), $0
392 MCR 15, 2, R0, C(0), C(0), 0
393 MRC 15, 1, R9, C(0), C(0), 0
397 MOVW Rsetinc<<R8, Rsetinc
401 MOVW Rmaxset<<R8, Rmaxset
405 MOVW $(1<<31), Rwayinc
406 MOVW $(1<<31), Rnoway
412 MOVW Rwayinc>>1, Rwayinc
413 MOVW Rnoway->1, Rnoway
414 MOVW Rmaxway@>1, Rmaxway
417 MOVW Rwayinc<<1, Rwayinc
418 MVN Rnoway<<1, Rnoway
423 MCR 15, 0, R0, C(7), C(14), 2
433 TEXT invalise(SB), $0
435 ADD $(LINSIZ - 1), R1
436 BIC $(LINSIZ - 1), R0
437 BIC $(LINSIZ - 1), R1
439 MCR 15, 0, R0, C(7), C(5), 1
445 TEXT cleandse(SB), $0
448 ADD $(LINSIZ - 1), R1
449 BIC $(LINSIZ - 1), R0
450 BIC $(LINSIZ - 1), R1
452 MCR 15, 0, R0, C(7), C(10), 1
459 TEXT invaldse(SB), $0
461 ADD $(LINSIZ - 1), R1
462 BIC $(LINSIZ - 1), R0
463 BIC $(LINSIZ - 1), R1
465 MCR 15, 0, R0, C(7), C(6), 1
472 TEXT clinvdse(SB), $0
475 ADD $(LINSIZ - 1), R1
476 BIC $(LINSIZ - 1), R0
477 BIC $(LINSIZ - 1), R1
479 MCR 15, 0, R0, C(7), C(14), 1
486 TEXT cleandln(SB), $0
488 MCR 15, 0, R0, C(7), C(10), 1
492 TEXT invaldln(SB), $0
493 MCR 15, 0, R0, C(7), C(6), 1
497 TEXT clinvdln(SB), $0
499 MCR 15, 0, R0, C(7), C(14), 1
503 TEXT palookur(SB), $0
504 MCR 15, 0, R0, C(7), C(8), 2
506 MRC 15, 0, R0, C(7), C(4), 0