aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/asm_386.s
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/asm_386.s')
-rw-r--r--src/runtime/asm_386.s10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/runtime/asm_386.s b/src/runtime/asm_386.s
index 2d16f4940a..dec79189bc 100644
--- a/src/runtime/asm_386.s
+++ b/src/runtime/asm_386.s
@@ -54,6 +54,7 @@ bad_proc: // show that the program requires MMX.
has_cpuid:
MOVL $0, AX
CPUID
+ MOVL AX, SI
CMPL AX, $0
JE nocpuinfo
@@ -69,6 +70,7 @@ has_cpuid:
MOVB $1, runtime·lfenceBeforeRdtsc(SB)
notintel:
+ // Load EAX=1 cpuid flags
MOVL $1, AX
CPUID
MOVL CX, AX // Move to global variable clobbers CX when generating PIC
@@ -79,6 +81,14 @@ notintel:
TESTL $(1<<23), DX // MMX
JZ bad_proc
+ // Load EAX=7/ECX=0 cpuid flags
+ CMPL SI, $7
+ JLT nocpuinfo
+ MOVL $7, AX
+ MOVL $0, CX
+ CPUID
+ MOVL BX, runtime·cpuid_ebx7(SB)
+
nocpuinfo:
// if there is an _cgo_init, call it to let it