Mercurial > sdl-ios-xcode
diff src/cpuinfo/SDL_cpuinfo.c @ 3584:41d01d70659c
Fixed cpuid assembly to work on PIC code
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Wed, 16 Dec 2009 16:42:04 +0000 |
parents | 951dd6a5d1a2 |
children | b6758aee0dd4 |
line wrap: on
line diff
--- a/src/cpuinfo/SDL_cpuinfo.c Wed Dec 16 16:08:17 2009 +0000 +++ b/src/cpuinfo/SDL_cpuinfo.c Wed Dec 16 16:42:04 2009 +0000 @@ -122,16 +122,16 @@ #elif defined(__sun) && defined(__i386) __asm ( " pushfl \n" -" popl %eax \n" -" movl %eax,%ecx \n" -" xorl $0x200000,%eax \n" -" pushl %eax \n" -" popfl \n" -" pushfl \n" -" popl %eax \n" -" xorl %ecx,%eax \n" -" jz 1f \n" -" movl $1,-8(%ebp) \n" +" popl %eax \n" +" movl %eax,%ecx \n" +" xorl $0x200000,%eax \n" +" pushl %eax \n" +" popfl \n" +" pushfl \n" +" popl %eax \n" +" xorl %ecx,%eax \n" +" jz 1f \n" +" movl $1,-8(%ebp) \n" "1: \n" ); #elif defined(__sun) && defined(__amd64) @@ -156,8 +156,12 @@ #if defined(__GNUC__) && (defined(i386) || defined(__x86_64__)) #define cpuid(func, a, b, c, d) \ - __asm__ __volatile__ ("cpuid": \ - "=a" (a), "=b" (b), "=c" (c), "=d" (d) : "a" (func)) + __asm__ __volatile__ ( \ +" pushl %%ebx \n" \ +" cpuid \n" \ +" movl %%ebx, %%esi \n" \ +" popl %%ebx \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 { \