...

Text file src/runtime/preempt_arm64.s

Documentation: runtime

     1// Code generated by mkpreempt.go; DO NOT EDIT.
     2
     3#include "go_asm.h"
     4#include "textflag.h"
     5
     6TEXT ·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)

View as plain text