- Add an alternate PIC-compliant __cpuid macro in x86.cpp.

SVN r1793 (trunk)
This commit is contained in:
Randy Heit 2009-09-04 23:14:29 +00:00
commit b528b987da
2 changed files with 12 additions and 0 deletions

View file

@ -25,10 +25,21 @@ void DumpCPUInfo(const CPUInfo *cpu)
#include <mmintrin.h>
#include <emmintrin.h>
#ifdef __GNUC__
#if defined(__i386__) && defined(__PIC__)
// %ebx may by the PIC register. */
#define __cpuid(output, func) \
__asm__ __volatile__("xchgl\t%%ebx, %1\n\t" \
"cpuid\n\t" \
"xchgl\t%%ebx, %1\n\t" \
: "=a" ((output)[0]), "=r" ((output)[1]), "=c" ((output)[2]), "=d" ((output)[3]) \
: "a" (func));
#else
#define __cpuid(output, func) __asm__ __volatile__("cpuid" : "=a" ((output)[0]),\
"=b" ((output)[1]), "=c" ((output)[2]), "=d" ((output)[3]) : "a" (func));
#endif
#endif
void CheckCPUID(CPUInfo *cpu)
{