4 #define PUTC(c) MOVW $(c), R0; MOVW R0, (R8)
7 MOVW $(KTZERO-KZERO), R13
13 MOVW $(CONFADDR-KZERO), R2
21 MOVW $(MACHL1(0)-KZERO), R4
23 ADD R1>>(SECSH-2), R4, R1
24 MOVW $(L1SEC|L1CACHED|L1KERRW), R2
35 ADD R1>>(SECSH-2), R4, R1
36 MOVW $((VMAPL2-KZERO)|L1PT), R2
37 MOVW $(VMAPL2-KZERO+VMAPL2SZ), R3
44 MOVW $(UART_BASE|L2VALID|L2DEVICE|L2NOEXEC|L2KERRW), R0
45 MOVW $(VMAPL2-KZERO), R1
50 MOVW $(MACH(0)-KZERO), R(Rmach)
52 /* enable MMU permission checking */
54 MCR 15, 0, R0, C(3), C(0), 0
57 MCR 15, 0, R0, C(8), C(7), 0
60 MCR 15, 0, R1, C(2), C(0), 0
64 MCR 15, 0, R1, C(1), C(0), 0
80 MCR 15, 0, R1, C(12), C(0)
82 /* enable maths coprocessors in CPACR but disable them in FPEXC */
83 MRC 15, 0, R0, C(1), C(0), 2
85 MCR 15, 0, R0, C(1), C(0), 2
93 MCR 15, 0, R0, C(7), C(5), 0
94 MCR 15, 0, R0, C(7), C(5), 6
96 MRC 15, 0, R0, C(1), C(0), 1
98 MCR 15, 0, R0, C(1), C(0), 1
99 MRC 15, 0, R0, C(1), C(0), 0
100 ORR $(3<<11|1<<2), R0
101 MCR 15, 0, R0, C(1), C(0), 0
105 MOVW $(VMAP+0x30), R8
108 /* kernel Mach* in TPIDRPRW */
109 MCR 15, 0, R(Rmach), C(13), C(0), 4
111 MOVW $setR12(SB), R12
117 BL _div(SB) /* hack to load _div */
119 TEXT mpbootstrap(SB), $-4
123 MOVW $(MACH(1)-KZERO), R(Rmach)
124 MOVW $(MACHL1(1)-KZERO), R4
134 MOVW $(UTZERO+0x20), R1
138 BIC $(PsrMask|PsrDirq|PsrDfiq), R1
142 MOVW $(KTZERO-(15*4)), R0
143 MOVM.IA (R0), [R0-R12]
145 MOVM.IA.S (R13), [R13-R14]
147 MOVM.IA.W.S (R13), [R15]
149 TEXT forkret(SB), $-4
152 MOVM.IA.W (R13), [R0-R12]
153 MOVM.IA.S (R13), [R13-R14]
157 MOVM.IA.W.S (R13), [R15]
159 TEXT nope(SB), $-4 // NOPE
160 MOVW $(VMAP+0x30), R8
173 CPS(CPSMODE | PsrMabt)
175 CPS(CPSMODE | PsrMund)
177 CPS(CPSMODE | PsrMirq)
179 CPS(CPSMODE | PsrMfiq)
181 CPS(CPSMODE | PsrMsvc)
186 MOVW $(VMAP+0x30), R8
192 #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
207 MOVW R14, 4(R(Rmach))
213 MOVW R14, 4(R(Rmach))
219 TEXT spldone(SB), $-4
228 TEXT setlabel(SB), $-4
234 TEXT gotolabel(SB), $-4
271 TEXT coherence(SB), $0
275 TEXT idlehands(SB), $0
280 TEXT sendevent(SB), $0
285 MRC 15, 0, R0, C(2), C(0), 0
291 MCR 15, 0, R0, C(2), C(0), 0
295 MCR 15, 0, R0, C(8), C(7), 3
299 TEXT flushtlb(SB), $0
300 MCR 15, 0, R0, C(8), C(3), 0
306 MCR 15, 0, R0, C(13), C(0), 1
310 MRC 15, 0, R0, C(6), C(0), 2
314 MRC 15, 0, R0, C(6), C(0), 0
318 MRC 15, 0, R0, C(5), C(0), 1
322 MRC 15, 0, R0, C(5), C(0), 0
326 MCR 15, 0, R0, C(9), C(12), 0
329 TEXT setpmcnten(SB), $0
330 MCR 15, 0, R0, C(9), C(12), 1
333 TEXT perfticks(SB), $0
334 MRC 15, 0, R0, C(9), C(13), 0
338 MRC 15, 0, R1, C(9), C(13), 0
340 MOVW 24(R(Rmach)), R1
341 MRC 15, 0, R2, C(9), C(12), 3
344 MCR 15, 0, R2, C(9), C(12), 3
346 MOVW R1, 24(R(Rmach))
358 TEXT fprestore(SB), $0
359 MOVM.IA.W (R0), [R1-R2]
369 MOVM.IA.W [R1-R2], (R0)
386 TEXT l1dclear(SB), $0
388 MCR 15, 2, R0, C(0), C(0), 0
389 MRC 15, 1, R9, C(0), C(0), 0
393 MOVW Rsetinc<<R8, Rsetinc
397 MOVW Rmaxset<<R8, Rmaxset
401 MOVW $(1<<31), Rwayinc
402 MOVW $(1<<31), Rnoway
408 MOVW Rwayinc>>1, Rwayinc
409 MOVW Rnoway->1, Rnoway
410 MOVW Rmaxway@>1, Rmaxway
413 MOVW Rwayinc<<1, Rwayinc
414 MVN Rnoway<<1, Rnoway
419 MCR 15, 0, R0, C(7), C(14), 2
429 TEXT invalise(SB), $0
431 ADD $(LINSIZ - 1), R1
432 BIC $(LINSIZ - 1), R0
433 BIC $(LINSIZ - 1), R1
435 MCR 15, 0, R0, C(7), C(5), 1
441 TEXT cleandse(SB), $0
444 ADD $(LINSIZ - 1), R1
445 BIC $(LINSIZ - 1), R0
446 BIC $(LINSIZ - 1), R1
448 MCR 15, 0, R0, C(7), C(10), 1
455 TEXT invaldse(SB), $0
457 ADD $(LINSIZ - 1), R1
458 BIC $(LINSIZ - 1), R0
459 BIC $(LINSIZ - 1), R1
461 MCR 15, 0, R0, C(7), C(6), 1
468 TEXT clinvdse(SB), $0
471 ADD $(LINSIZ - 1), R1
472 BIC $(LINSIZ - 1), R0
473 BIC $(LINSIZ - 1), R1
475 MCR 15, 0, R0, C(7), C(14), 1
482 TEXT cleandln(SB), $0
484 MCR 15, 0, R0, C(7), C(10), 1
488 TEXT invaldln(SB), $0
489 MCR 15, 0, R0, C(7), C(6), 1
493 TEXT clinvdln(SB), $0
495 MCR 15, 0, R0, C(7), C(14), 1
499 TEXT palookur(SB), $0
500 MCR 15, 0, R0, C(7), C(8), 2
502 MRC 15, 0, R0, C(7), C(4), 0