diff options
Diffstat (limited to 'src/runtime/asm_386.s')
| -rw-r--r-- | src/runtime/asm_386.s | 10 |
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 |
