From fa90aa1246b48571f2361114d24aac1f30492912 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 17 Dec 2009 04:01:29 +0000 Subject: [PATCH] Implemented 64-bit version of cpuid code --- src/cpuinfo/SDL_cpuinfo.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/cpuinfo/SDL_cpuinfo.c b/src/cpuinfo/SDL_cpuinfo.c index 6011f8f18..8a0e56e80 100644 --- a/src/cpuinfo/SDL_cpuinfo.c +++ b/src/cpuinfo/SDL_cpuinfo.c @@ -157,7 +157,7 @@ CPUid by definition. But it's nice to be able to prove it. :) */ return has_CPUID; } -#if defined(__GNUC__) && (defined(i386) || defined(__x86_64__)) +#if defined(__GNUC__) && defined(i386) #define cpuid(func, a, b, c, d) \ __asm__ __volatile__ ( \ " pushl %%ebx \n" \ @@ -165,6 +165,14 @@ CPUid by definition. But it's nice to be able to prove it. :) */ " movl %%ebx, %%esi \n" \ " popl %%ebx \n" : \ "=a" (a), "=S" (b), "=c" (c), "=d" (d) : "a" (func)) +#elif defined(__GNUC__) && defined(__x86_64__) +#define cpuid(func, a, b, c, d) \ + __asm__ __volatile__ ( \ +" pushq %%rbx \n" \ +" cpuid \n" \ +" movq %%rbx, %%rsi \n" \ +" popq %%rbx \n" : \ + "=a" (a), "=S" (b), "=c" (c), "=d" (d) : "a" (func)) #elif (defined(_MSC_VER) && defined(_M_IX86)) || defined(__WATCOMC__) #define cpuid(func, a, b, c, d) \ __asm { \