| // Code generated by mkpreempt.go; DO NOT EDIT. |
| |
| #include "go_asm.h" |
| #include "textflag.h" |
| |
| TEXT ·asyncPreempt(SB),NOSPLIT|NOFRAME,$0-0 |
| MOVD R30, -240(RSP) |
| SUB $240, RSP |
| MOVD R29, -8(RSP) |
| SUB $8, RSP, R29 |
| #ifdef GOOS_ios |
| MOVD R30, (RSP) |
| #endif |
| // Save GPs |
| STP (R0, R1), 8(RSP) |
| STP (R2, R3), 24(RSP) |
| STP (R4, R5), 40(RSP) |
| STP (R6, R7), 56(RSP) |
| STP (R8, R9), 72(RSP) |
| STP (R10, R11), 88(RSP) |
| STP (R12, R13), 104(RSP) |
| STP (R14, R15), 120(RSP) |
| STP (R16, R17), 136(RSP) |
| STP (R19, R20), 152(RSP) |
| STP (R21, R22), 168(RSP) |
| STP (R23, R24), 184(RSP) |
| STP (R25, R26), 200(RSP) |
| MOVD NZCV, R0 |
| MOVD R0, 216(RSP) |
| MOVD FPSR, R0 |
| MOVD R0, 224(RSP) |
| // Save extended register state to p.xRegs.scratch |
| MOVD g_m(g), R0 |
| MOVD m_p(R0), R0 |
| ADD $(p_xRegs+xRegPerP_scratch), R0, R0 |
| VST1.P [V0.B16, V1.B16, V2.B16, V3.B16], 64(R0) |
| VST1.P [V4.B16, V5.B16, V6.B16, V7.B16], 64(R0) |
| VST1.P [V8.B16, V9.B16, V10.B16, V11.B16], 64(R0) |
| VST1.P [V12.B16, V13.B16, V14.B16, V15.B16], 64(R0) |
| VST1.P [V16.B16, V17.B16, V18.B16, V19.B16], 64(R0) |
| VST1.P [V20.B16, V21.B16, V22.B16, V23.B16], 64(R0) |
| VST1.P [V24.B16, V25.B16, V26.B16, V27.B16], 64(R0) |
| VST1.P [V28.B16, V29.B16, V30.B16, V31.B16], 64(R0) |
| CALL ·asyncPreempt2(SB) |
| // Restore non-GPs from *p.xRegs.cache |
| MOVD g_m(g), R0 |
| MOVD m_p(R0), R0 |
| MOVD (p_xRegs+xRegPerP_cache)(R0), R0 |
| VLD1.P 64(R0), [V0.B16, V1.B16, V2.B16, V3.B16] |
| VLD1.P 64(R0), [V4.B16, V5.B16, V6.B16, V7.B16] |
| VLD1.P 64(R0), [V8.B16, V9.B16, V10.B16, V11.B16] |
| VLD1.P 64(R0), [V12.B16, V13.B16, V14.B16, V15.B16] |
| VLD1.P 64(R0), [V16.B16, V17.B16, V18.B16, V19.B16] |
| VLD1.P 64(R0), [V20.B16, V21.B16, V22.B16, V23.B16] |
| VLD1.P 64(R0), [V24.B16, V25.B16, V26.B16, V27.B16] |
| VLD1.P 64(R0), [V28.B16, V29.B16, V30.B16, V31.B16] |
| // Restore GPs |
| MOVD 224(RSP), R0 |
| MOVD R0, FPSR |
| MOVD 216(RSP), R0 |
| MOVD R0, NZCV |
| LDP 200(RSP), (R25, R26) |
| LDP 184(RSP), (R23, R24) |
| LDP 168(RSP), (R21, R22) |
| LDP 152(RSP), (R19, R20) |
| LDP 136(RSP), (R16, R17) |
| LDP 120(RSP), (R14, R15) |
| LDP 104(RSP), (R12, R13) |
| LDP 88(RSP), (R10, R11) |
| LDP 72(RSP), (R8, R9) |
| LDP 56(RSP), (R6, R7) |
| LDP 40(RSP), (R4, R5) |
| LDP 24(RSP), (R2, R3) |
| LDP 8(RSP), (R0, R1) |
| MOVD 240(RSP), R30 |
| MOVD -8(RSP), R29 |
| MOVD (RSP), R27 |
| ADD $256, RSP |
| RET (R27) |