MSR R0, DAIF
RETURN
+TEXT idlehands(SB), 1, $-4
+ DMB $ISH
+ MOV $nrdy(SB), R1
+ LDXRW (R1), R0
+ CBZ R0, _goodnight
+ CLREX
+ SEVL
+_goodnight:
+ WFE
+ RETURN
+
TEXT cycles(SB), 1, $-4
TEXT lcycles(SB), 1, $-4
MRS PMCCNTR_EL0, R0
B cacheiinv(SB)
-TEXT magic(SB), 1, $-4
- DSB $SY
- ISB $SY
- DSB $SY
- ISB $SY
- DSB $SY
- ISB $SY
- DSB $SY
- ISB $SY
- RETURN
-
/*
* TLB maintenance operations.
* these broadcast to all cpu's in the cluser
CMPW $0x15, R17 // SVC trap?
BNE _itsatrap // nope.
- MOV R26, 224(RSP) // special
- MOV R27, 232(RSP) // special
- MOV R28, 240(RSP) // sb
- MOV R29, 248(RSP) // special
+ MOVP R26, R27, 224(RSP)
+ MOVP R28, R29, 240(RSP)
MRS SP_EL0, R1
MRS ELR_EL1, R2
MSR R2, ELR_EL1
MSR R3, SPSR_EL1
- MOV 224(RSP), R26 // special
- MOV 232(RSP), R27 // special
- MOV 240(RSP), R28 // sb
- MOV 248(RSP), R29 // special
+ MOVP 224(RSP), R26, R27
+ MOVP 240(RSP), R28, R29
MOV 256(RSP), R30 // link
TEXT itsatrap<>(SB), 1, $-4
_itsatrap:
- MOV R1, 24(RSP)
- MOV R2, 32(RSP)
- MOV R3, 40(RSP)
- MOV R4, 48(RSP)
- MOV R5, 56(RSP)
- MOV R6, 64(RSP)
- MOV R7, 72(RSP)
- MOV R8, 80(RSP)
- MOV R9, 88(RSP)
- MOV R10, 96(RSP)
- MOV R11, 104(RSP)
- MOV R12, 112(RSP)
- MOV R13, 120(RSP)
- MOV R14, 128(RSP)
- MOV R15, 136(RSP)
- MOV R16, 144(RSP)
-
- MOV R18, 160(RSP)
- MOV R19, 168(RSP)
- MOV R20, 176(RSP)
- MOV R21, 184(RSP)
- MOV R22, 192(RSP)
- MOV R23, 200(RSP)
- MOV R24, 208(RSP)
- MOV R25, 216(RSP)
+ MOVP R1, R2, 24(RSP)
+ MOVP R3, R4, 40(RSP)
+ MOVP R5, R6, 56(RSP)
+ MOVP R7, R8, 72(RSP)
+ MOVP R9, R10, 88(RSP)
+ MOVP R11, R12, 104(RSP)
+ MOVP R13, R14, 120(RSP)
+ MOVP R15, R16, 136(RSP)
+
+ MOVP R18, R19, 160(RSP)
+ MOVP R20, R21, 176(RSP)
+ MOVP R22, R23, 192(RSP)
+ MOVP R24, R25, 208(RSP)
// trap/irq/fiq/serr from EL0
TEXT vtrap0(SB), 1, $-4
- MOV R26, 224(RSP) // special
- MOV R27, 232(RSP) // special
- MOV R28, 240(RSP) // sb
- MOV R29, 248(RSP) // special
+ MOVP R26, R27, 224(RSP)
+ MOVP R28, R29, 240(RSP)
MRS SP_EL0, R1
MRS ELR_EL1, R2
MSR R2, ELR_EL1
MSR R3, SPSR_EL1
- MOV 224(RSP), R26 // special
- MOV 232(RSP), R27 // special
- MOV 240(RSP), R28 // sb
- MOV 248(RSP), R29 // special
+ MOVP 224(RSP), R26, R27
+ MOVP 240(RSP), R28, R29
_intrreturn:
- MOV 16(RSP), R0
- MOV 24(RSP), R1
- MOV 32(RSP), R2
- MOV 40(RSP), R3
- MOV 48(RSP), R4
- MOV 56(RSP), R5
- MOV 64(RSP), R6
- MOV 72(RSP), R7
- MOV 80(RSP), R8
- MOV 88(RSP), R9
- MOV 96(RSP), R10
- MOV 104(RSP), R11
- MOV 112(RSP), R12
- MOV 120(RSP), R13
- MOV 128(RSP), R14
- MOV 136(RSP), R15
- MOV 144(RSP), R16
- MOV 152(RSP), R17
- MOV 160(RSP), R18
- MOV 168(RSP), R19
- MOV 176(RSP), R20
- MOV 184(RSP), R21
- MOV 192(RSP), R22
- MOV 200(RSP), R23
- MOV 208(RSP), R24
- MOV 216(RSP), R25
+ MOVP 16(RSP), R0, R1
+ MOVP 32(RSP), R2, R3
+ MOVP 48(RSP), R4, R5
+ MOVP 64(RSP), R6, R7
+ MOVP 80(RSP), R8, R9
+ MOVP 96(RSP), R10, R11
+ MOVP 112(RSP), R12, R13
+ MOVP 128(RSP), R14, R15
+ MOVP 144(RSP), R16, R17
+ MOVP 160(RSP), R18, R19
+ MOVP 176(RSP), R20, R21
+ MOVP 192(RSP), R22, R23
+ MOVP 208(RSP), R24, R25
MOV 256(RSP), R30 // link
TEXT vtrap(SB), 1, $-4
SUB $TRAPFRAMESIZE, RSP
- MOV R0, 16(RSP)
- MOV R1, 24(RSP)
- MOV R2, 32(RSP)
- MOV R3, 40(RSP)
- MOV R4, 48(RSP)
- MOV R5, 56(RSP)
- MOV R6, 64(RSP)
- MOV R7, 72(RSP)
- MOV R8, 80(RSP)
- MOV R9, 88(RSP)
- MOV R10, 96(RSP)
- MOV R11, 104(RSP)
- MOV R12, 112(RSP)
- MOV R13, 120(RSP)
- MOV R14, 128(RSP)
- MOV R15, 136(RSP)
- MOV R16, 144(RSP)
- MOV R17, 152(RSP)
- MOV R18, 160(RSP)
- MOV R19, 168(RSP)
- MOV R20, 176(RSP)
- MOV R21, 184(RSP)
- MOV R22, 192(RSP)
- MOV R23, 200(RSP)
- MOV R24, 208(RSP)
- MOV R25, 216(RSP)
+ MOVP R0, R1, 16(RSP)
+ MOVP R2, R3, 32(RSP)
+ MOVP R4, R5, 48(RSP)
+ MOVP R6, R7, 64(RSP)
+ MOVP R8, R9, 80(RSP)
+ MOVP R10, R11, 96(RSP)
+ MOVP R12, R13, 112(RSP)
+ MOVP R14, R15, 128(RSP)
+ MOVP R16, R17, 144(RSP)
+ MOVP R18, R19, 160(RSP)
+ MOVP R20, R21, 176(RSP)
+ MOVP R22, R23, 192(RSP)
+ MOVP R24, R25, 208(RSP)
MOV R30, 256(RSP) // link
TEXT virq(SB), 1, $-4
SUB $TRAPFRAMESIZE, RSP
- MOV R0, 16(RSP)
- MOV R1, 24(RSP)
- MOV R2, 32(RSP)
- MOV R3, 40(RSP)
- MOV R4, 48(RSP)
- MOV R5, 56(RSP)
- MOV R6, 64(RSP)
- MOV R7, 72(RSP)
- MOV R8, 80(RSP)
- MOV R9, 88(RSP)
- MOV R10, 96(RSP)
- MOV R11, 104(RSP)
- MOV R12, 112(RSP)
- MOV R13, 120(RSP)
- MOV R14, 128(RSP)
- MOV R15, 136(RSP)
- MOV R16, 144(RSP)
- MOV R17, 152(RSP)
- MOV R18, 160(RSP)
- MOV R19, 168(RSP)
- MOV R20, 176(RSP)
- MOV R21, 184(RSP)
- MOV R22, 192(RSP)
- MOV R23, 200(RSP)
- MOV R24, 208(RSP)
- MOV R25, 216(RSP)
+ MOVP R0, R1, 16(RSP)
+ MOVP R2, R3, 32(RSP)
+ MOVP R4, R5, 48(RSP)
+ MOVP R6, R7, 64(RSP)
+ MOVP R8, R9, 80(RSP)
+ MOVP R10, R11, 96(RSP)
+ MOVP R12, R13, 112(RSP)
+ MOVP R14, R15, 128(RSP)
+ MOVP R16, R17, 144(RSP)
+ MOVP R18, R19, 160(RSP)
+ MOVP R20, R21, 176(RSP)
+ MOVP R22, R23, 192(RSP)
+ MOVP R24, R25, 208(RSP)
MOV R30, 256(RSP) // link
TEXT vfiq(SB), 1, $-4
SUB $TRAPFRAMESIZE, RSP
- MOV R0, 16(RSP)
- MOV R1, 24(RSP)
- MOV R2, 32(RSP)
- MOV R3, 40(RSP)
- MOV R4, 48(RSP)
- MOV R5, 56(RSP)
- MOV R6, 64(RSP)
- MOV R7, 72(RSP)
- MOV R8, 80(RSP)
- MOV R9, 88(RSP)
- MOV R10, 96(RSP)
- MOV R11, 104(RSP)
- MOV R12, 112(RSP)
- MOV R13, 120(RSP)
- MOV R14, 128(RSP)
- MOV R15, 136(RSP)
- MOV R16, 144(RSP)
- MOV R17, 152(RSP)
- MOV R18, 160(RSP)
- MOV R19, 168(RSP)
- MOV R20, 176(RSP)
- MOV R21, 184(RSP)
- MOV R22, 192(RSP)
- MOV R23, 200(RSP)
- MOV R24, 208(RSP)
- MOV R25, 216(RSP)
+ MOVP R0, R1, 16(RSP)
+ MOVP R2, R3, 32(RSP)
+ MOVP R4, R5, 48(RSP)
+ MOVP R6, R7, 64(RSP)
+ MOVP R8, R9, 80(RSP)
+ MOVP R10, R11, 96(RSP)
+ MOVP R12, R13, 112(RSP)
+ MOVP R14, R15, 128(RSP)
+ MOVP R16, R17, 144(RSP)
+ MOVP R18, R19, 160(RSP)
+ MOVP R20, R21, 176(RSP)
+ MOVP R22, R23, 192(RSP)
+ MOVP R24, R25, 208(RSP)
MOV R30, 256(RSP) // link
MOV $(2<<32), R0 // type fiq
TEXT vserr(SB), 1, $-4
SUB $TRAPFRAMESIZE, RSP
- MOV R0, 16(RSP)
- MOV R1, 24(RSP)
- MOV R2, 32(RSP)
- MOV R3, 40(RSP)
- MOV R4, 48(RSP)
- MOV R5, 56(RSP)
- MOV R6, 64(RSP)
- MOV R7, 72(RSP)
- MOV R8, 80(RSP)
- MOV R9, 88(RSP)
- MOV R10, 96(RSP)
- MOV R11, 104(RSP)
- MOV R12, 112(RSP)
- MOV R13, 120(RSP)
- MOV R14, 128(RSP)
- MOV R15, 136(RSP)
- MOV R16, 144(RSP)
- MOV R17, 152(RSP)
- MOV R18, 160(RSP)
- MOV R19, 168(RSP)
- MOV R20, 176(RSP)
- MOV R21, 184(RSP)
- MOV R22, 192(RSP)
- MOV R23, 200(RSP)
- MOV R24, 208(RSP)
- MOV R25, 216(RSP)
+ MOVP R0, R1, 16(RSP)
+ MOVP R2, R3, 32(RSP)
+ MOVP R4, R5, 48(RSP)
+ MOVP R6, R7, 64(RSP)
+ MOVP R8, R9, 80(RSP)
+ MOVP R10, R11, 96(RSP)
+ MOVP R12, R13, 112(RSP)
+ MOVP R14, R15, 128(RSP)
+ MOVP R16, R17, 144(RSP)
+ MOVP R18, R19, 160(RSP)
+ MOVP R20, R21, 176(RSP)
+ MOVP R22, R23, 192(RSP)
+ MOVP R24, R25, 208(RSP)
MOV R30, 256(RSP) // link