Replace the x86 XGETBV instruction with its opcode bytes

This is a new instruction, present on the SandyBridge architecture and
later. Some older assemblers do not support it and produce:

  {standard input}:225:no such instruction: `xgetbv'

The use of this instruction is protected by a CPUID check (function 1,
ECX bit 27), so we only run it in processors that do support it.

Change-Id: Ife7500c0deaab9539074835a4511e8c19602608e
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
bb10
Thiago Macieira 2012-04-24 16:27:35 +02:00 committed by Qt by Nokia
parent dc6d1c6c3f
commit e75b0e8c72
1 changed files with 1 additions and 1 deletions

View File

@ -244,7 +244,7 @@ static void xgetbv(int in, uint &eax, uint &edx)
eax = result;
edx = result >> 32;
#elif defined(Q_CC_GNU)
asm ("xgetbv"
asm (".byte 0x0F, 0x01, 0xD0" // xgetbv instruction
: "=a" (eax), "=d" (edx)
: "c" (in));
#endif