summaryrefslogtreecommitdiffstats
path: root/src/libs/7zip/unix/C/CpuArch.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/7zip/unix/C/CpuArch.c')
-rw-r--r--src/libs/7zip/unix/C/CpuArch.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/libs/7zip/unix/C/CpuArch.c b/src/libs/7zip/unix/C/CpuArch.c
index 260cc1f45..dffa5bd65 100644
--- a/src/libs/7zip/unix/C/CpuArch.c
+++ b/src/libs/7zip/unix/C/CpuArch.c
@@ -73,9 +73,17 @@ static void MyCPUID(UInt32 function, UInt32 *a, UInt32 *b, UInt32 *c, UInt32 *d)
#else
__asm__ __volatile__ (
+ #if defined(MY_CPU_X86) && defined(__PIC__)
+ "mov %%ebx, %%edi;"
+ "cpuid;"
+ "xchgl %%ebx, %%edi;"
+ : "=a" (*a) ,
+ "=D" (*b) , /* edi */
+ #else
"cpuid"
: "=a" (*a) ,
"=b" (*b) ,
+ #endif
"=c" (*c) ,
"=d" (*d)
: "0" (function)) ;