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