diff options
Diffstat (limited to 'sys-apps/x86info/files/x86info-1.30-pic.patch')
-rw-r--r-- | sys-apps/x86info/files/x86info-1.30-pic.patch | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/sys-apps/x86info/files/x86info-1.30-pic.patch b/sys-apps/x86info/files/x86info-1.30-pic.patch new file mode 100644 index 000000000000..6288846b48b7 --- /dev/null +++ b/sys-apps/x86info/files/x86info-1.30-pic.patch @@ -0,0 +1,31 @@ +--- a/cpuid.c ++++ b/cpuid.c +@@ -25,12 +25,28 @@ + + bind_cpu(cpunr); + ++#ifdef __PIC__ ++ /* GCC on i386 bitches if you clobber ebx. So hide it behind ++ * gcc's back. */ ++ asm( ++ "movl %%ebx,%%edi\n" ++ "cpuid\n" ++ "movl %%ebx,%1\n" ++ "movl %%edi,%%ebx\n" ++ : "=a" (a), ++ "=m" (b), ++ "+c" (c), ++ "=d" (d) ++ : "0" ((unsigned int)idx) ++ : "edi"); ++#else + asm("cpuid" + : "=a" (a), + "=b" (b), + "+c" (c), + "=d" (d) + : "0" ((unsigned int)idx)); ++#endif + + if (eax!=NULL) + *eax = a; |