I seem to recall a bug where some CPU models don't properly set
registers after a CPUID instruction (e.g.,
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/arch/i386/i386/locore.s#rev1.150).
Is it possible this CPU is one of those?  Maybe Go needs similar
workarounds?

A way to test that hypothesis would be to add

    MOVL $0, BX
    MOVL $0, CX
    MOVL $0, DX

before each of these CPUID instructions:

    src/cmd/dist/cpuid_386.s:9: CPUID
    src/runtime/asm_386.s:30: CPUID
    src/runtime/asm_386.s:47: CPUID

On Fri, Aug 7, 2015 at 3:22 PM, Ted Unangst <t...@tedunangst.com> wrote:
> Stuart Henderson wrote:
>>
>> I don't think a flavour is warranted, i386 packages are meant to run
>> on all supported CPUs so if the runtime detection is insufficient
>> we should just always set this variable.
>
> talk to upstream? this sounds like a bug if the runtime detection is
> insufficient. unconditionally disabling sse would be a pessimization for most
> users.
>

Reply via email to