Text file src/runtime/preempt_arm64.s

     1  // Code generated by mkpreempt.go; DO NOT EDIT.
     2  
     3  #include "go_asm.h"
     4  #include "textflag.h"
     5  
     6  TEXT ·asyncPreempt(SB),NOSPLIT|NOFRAME,$0-0
     7  	MOVD R30, -240(RSP)
     8  	SUB $240, RSP
     9  	MOVD R29, -8(RSP)
    10  	SUB $8, RSP, R29
    11  	#ifdef GOOS_ios
    12  	MOVD R30, (RSP)
    13  	#endif
    14  	// Save GPs
    15  	STP (R0, R1), 8(RSP)
    16  	STP (R2, R3), 24(RSP)
    17  	STP (R4, R5), 40(RSP)
    18  	STP (R6, R7), 56(RSP)
    19  	STP (R8, R9), 72(RSP)
    20  	STP (R10, R11), 88(RSP)
    21  	STP (R12, R13), 104(RSP)
    22  	STP (R14, R15), 120(RSP)
    23  	STP (R16, R17), 136(RSP)
    24  	STP (R19, R20), 152(RSP)
    25  	STP (R21, R22), 168(RSP)
    26  	STP (R23, R24), 184(RSP)
    27  	STP (R25, R26), 200(RSP)
    28  	MOVD NZCV, R0
    29  	MOVD R0, 216(RSP)
    30  	MOVD FPSR, R0
    31  	MOVD R0, 224(RSP)
    32  	// Save extended register state to p.xRegs.scratch
    33  	MOVD g_m(g), R0
    34  	MOVD m_p(R0), R0
    35  	ADD $(p_xRegs+xRegPerP_scratch), R0, R0
    36  	VST1.P [V0.B16, V1.B16, V2.B16, V3.B16], 64(R0)
    37  	VST1.P [V4.B16, V5.B16, V6.B16, V7.B16], 64(R0)
    38  	VST1.P [V8.B16, V9.B16, V10.B16, V11.B16], 64(R0)
    39  	VST1.P [V12.B16, V13.B16, V14.B16, V15.B16], 64(R0)
    40  	VST1.P [V16.B16, V17.B16, V18.B16, V19.B16], 64(R0)
    41  	VST1.P [V20.B16, V21.B16, V22.B16, V23.B16], 64(R0)
    42  	VST1.P [V24.B16, V25.B16, V26.B16, V27.B16], 64(R0)
    43  	VST1.P [V28.B16, V29.B16, V30.B16, V31.B16], 64(R0)
    44  	CALL ·asyncPreempt2(SB)
    45  	// Restore non-GPs from *p.xRegs.cache
    46  	MOVD g_m(g), R0
    47  	MOVD m_p(R0), R0
    48  	MOVD (p_xRegs+xRegPerP_cache)(R0), R0
    49  	VLD1.P 64(R0), [V0.B16, V1.B16, V2.B16, V3.B16]
    50  	VLD1.P 64(R0), [V4.B16, V5.B16, V6.B16, V7.B16]
    51  	VLD1.P 64(R0), [V8.B16, V9.B16, V10.B16, V11.B16]
    52  	VLD1.P 64(R0), [V12.B16, V13.B16, V14.B16, V15.B16]
    53  	VLD1.P 64(R0), [V16.B16, V17.B16, V18.B16, V19.B16]
    54  	VLD1.P 64(R0), [V20.B16, V21.B16, V22.B16, V23.B16]
    55  	VLD1.P 64(R0), [V24.B16, V25.B16, V26.B16, V27.B16]
    56  	VLD1.P 64(R0), [V28.B16, V29.B16, V30.B16, V31.B16]
    57  	// Restore GPs
    58  	MOVD 224(RSP), R0
    59  	MOVD R0, FPSR
    60  	MOVD 216(RSP), R0
    61  	MOVD R0, NZCV
    62  	LDP 200(RSP), (R25, R26)
    63  	LDP 184(RSP), (R23, R24)
    64  	LDP 168(RSP), (R21, R22)
    65  	LDP 152(RSP), (R19, R20)
    66  	LDP 136(RSP), (R16, R17)
    67  	LDP 120(RSP), (R14, R15)
    68  	LDP 104(RSP), (R12, R13)
    69  	LDP 88(RSP), (R10, R11)
    70  	LDP 72(RSP), (R8, R9)
    71  	LDP 56(RSP), (R6, R7)
    72  	LDP 40(RSP), (R4, R5)
    73  	LDP 24(RSP), (R2, R3)
    74  	LDP 8(RSP), (R0, R1)
    75  	MOVD 240(RSP), R30
    76  	MOVD -8(RSP), R29
    77  	MOVD (RSP), R27
    78  	ADD $256, RSP
    79  	RET (R27)
    80  

View as plain text