aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/preempt_386.s
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/preempt_386.s')
-rw-r--r--src/runtime/preempt_386.s39
1 files changed, 18 insertions, 21 deletions
diff --git a/src/runtime/preempt_386.s b/src/runtime/preempt_386.s
index a00ac8f385..c3a5fa1f36 100644
--- a/src/runtime/preempt_386.s
+++ b/src/runtime/preempt_386.s
@@ -5,7 +5,7 @@
TEXT ·asyncPreempt(SB),NOSPLIT|NOFRAME,$0-0
PUSHFL
- ADJSP $264
+ ADJSP $156
NOP SP
MOVL AX, 0(SP)
MOVL CX, 4(SP)
@@ -14,32 +14,29 @@ TEXT ·asyncPreempt(SB),NOSPLIT|NOFRAME,$0-0
MOVL BP, 16(SP)
MOVL SI, 20(SP)
MOVL DI, 24(SP)
- FSAVE 28(SP)
- FLDCW runtime·controlWord64(SB)
CMPB internal∕cpu·X86+const_offsetX86HasSSE2(SB), $1
JNE nosse
- MOVUPS X0, 136(SP)
- MOVUPS X1, 152(SP)
- MOVUPS X2, 168(SP)
- MOVUPS X3, 184(SP)
- MOVUPS X4, 200(SP)
- MOVUPS X5, 216(SP)
- MOVUPS X6, 232(SP)
- MOVUPS X7, 248(SP)
+ MOVUPS X0, 28(SP)
+ MOVUPS X1, 44(SP)
+ MOVUPS X2, 60(SP)
+ MOVUPS X3, 76(SP)
+ MOVUPS X4, 92(SP)
+ MOVUPS X5, 108(SP)
+ MOVUPS X6, 124(SP)
+ MOVUPS X7, 140(SP)
nosse:
CALL ·asyncPreempt2(SB)
CMPB internal∕cpu·X86+const_offsetX86HasSSE2(SB), $1
JNE nosse2
- MOVUPS 248(SP), X7
- MOVUPS 232(SP), X6
- MOVUPS 216(SP), X5
- MOVUPS 200(SP), X4
- MOVUPS 184(SP), X3
- MOVUPS 168(SP), X2
- MOVUPS 152(SP), X1
- MOVUPS 136(SP), X0
+ MOVUPS 140(SP), X7
+ MOVUPS 124(SP), X6
+ MOVUPS 108(SP), X5
+ MOVUPS 92(SP), X4
+ MOVUPS 76(SP), X3
+ MOVUPS 60(SP), X2
+ MOVUPS 44(SP), X1
+ MOVUPS 28(SP), X0
nosse2:
- FRSTOR 28(SP)
MOVL 24(SP), DI
MOVL 20(SP), SI
MOVL 16(SP), BP
@@ -47,6 +44,6 @@ nosse2:
MOVL 8(SP), DX
MOVL 4(SP), CX
MOVL 0(SP), AX
- ADJSP $-264
+ ADJSP $-156
POPFL
RET