github.com/x04/go/src@v0.0.0-20200202162449-3d481ceb3525/runtime/preempt_386.s (about)

     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  	PUSHFL
     8  	ADJSP $264
     9  	NOP SP
    10  	MOVL AX, 0(SP)
    11  	MOVL CX, 4(SP)
    12  	MOVL DX, 8(SP)
    13  	MOVL BX, 12(SP)
    14  	MOVL BP, 16(SP)
    15  	MOVL SI, 20(SP)
    16  	MOVL DI, 24(SP)
    17  	FSAVE 28(SP)
    18  	FLDCW runtime·controlWord64(SB)
    19  	CMPB internal∕cpu·X86+const_offsetX86HasSSE2(SB), $1
    20  	JNE nosse
    21  	MOVUPS X0, 136(SP)
    22  	MOVUPS X1, 152(SP)
    23  	MOVUPS X2, 168(SP)
    24  	MOVUPS X3, 184(SP)
    25  	MOVUPS X4, 200(SP)
    26  	MOVUPS X5, 216(SP)
    27  	MOVUPS X6, 232(SP)
    28  	MOVUPS X7, 248(SP)
    29  nosse:
    30  	CALL ·asyncPreempt2(SB)
    31  	CMPB internal∕cpu·X86+const_offsetX86HasSSE2(SB), $1
    32  	JNE nosse2
    33  	MOVUPS 248(SP), X7
    34  	MOVUPS 232(SP), X6
    35  	MOVUPS 216(SP), X5
    36  	MOVUPS 200(SP), X4
    37  	MOVUPS 184(SP), X3
    38  	MOVUPS 168(SP), X2
    39  	MOVUPS 152(SP), X1
    40  	MOVUPS 136(SP), X0
    41  nosse2:
    42  	FRSTOR 28(SP)
    43  	MOVL 24(SP), DI
    44  	MOVL 20(SP), SI
    45  	MOVL 16(SP), BP
    46  	MOVL 12(SP), BX
    47  	MOVL 8(SP), DX
    48  	MOVL 4(SP), CX
    49  	MOVL 0(SP), AX
    50  	ADJSP $-264
    51  	POPFL
    52  	RET