]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/src/9/bcm64/l.s
bcm64: set XN bits for kernel device mappings
[plan9front.git] / sys / src / 9 / bcm64 / l.s
index 9690bffa6f2dc062f1654597fe971046575bddef..2e7e9ebc11022569d9bf993c7f071cf8f34f6bce 100644 (file)
@@ -5,6 +5,8 @@
 #define        SYSREG(op0,op1,Cn,Cm,op2)       SPR(((op0)<<19|(op1)<<16|(Cn)<<12|(Cm)<<8|(op2)<<5))
 
 TEXT _start(SB), 1, $-4
+       MOV     R0, R26         /* save */
+
        MOV     $setSB-KZERO(SB), R28
        BL      svcmode<>(SB)
 
@@ -55,6 +57,7 @@ _startup:
        WFE
        BL      mmuenable<>(SB)
 
+       MOV     R26, R0
        MOV     $0, R26
        ORR     $KZERO, R27
        MSR     R27, TPIDR_EL1
@@ -72,11 +75,6 @@ TEXT sev(SB), 1, $-4
        WFE
        RETURN
 
-TEXT PUTC(SB), 1, $-4
-       MOVWU $(0x3F000000+0x215040), R14
-       MOVB R0, (R14)
-       RETURN
-
 TEXT svcmode<>(SB), 1, $-4
        MSR     $0xF, DAIFSet
        MRS     CurrentEL, R0
@@ -658,3 +656,16 @@ TEXT vserr(SB), 1, $-4
        ORR     $(3<<32), R0    // type
 _vserrpatch:
        B       _vserrpatch     // branch to vtrapX() patched in
+
+/* fault-proof memcpy */
+TEXT peek(SB), 1, $-4
+       MOV     R0, R1
+       MOV     dst+8(FP), R2
+       MOVWU   len+16(FP), R0
+TEXT _peekinst(SB), 1, $-4
+_peekloop:
+       MOVBU   (R1)1!, R3
+       MOVBU   R3, (R2)1!
+       SUBS    $1, R0
+       BNE     _peekloop
+       RETURN