shithub: opus

Download patch

ref: 484af2580b82dffd695fcd0841fc34a9dc5f7293
parent: f8ed894b1fb681109abc73ba75b3d6237a751d72
author: sezero <sezero@users.sourceforge.net>
date: Sun Oct 6 10:37:02 EDT 2019

configure: adjust x86 get cpu info inline assembly method for PIC case

.. just like the way it is done in celt/x86/x86cpu.c.

Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>

--- a/configure.ac
+++ b/configure.ac
@@ -691,7 +691,19 @@
                  unsigned int CPUInfo2;
                  unsigned int CPUInfo3;
                  unsigned int InfoType;
+                #if defined(__i386__) && defined(__PIC__)
                  __asm__ __volatile__ (
+                 "xchg %%ebx, %1\n"
+                 "cpuid\n"
+                 "xchg %%ebx, %1\n":
+                 "=a" (CPUInfo0),
+                 "=r" (CPUInfo1),
+                 "=c" (CPUInfo2),
+                 "=d" (CPUInfo3) :
+                 "a" (InfoType), "c" (0)
+                );
+               #else
+                 __asm__ __volatile__ (
                  "cpuid":
                  "=a" (CPUInfo0),
                  "=b" (CPUInfo1),
@@ -699,6 +711,7 @@
                  "=d" (CPUInfo3) :
                  "a" (InfoType), "c" (0)
                 );
+               #endif
             ]])],
             [get_cpuid_by_asm="yes"
              AC_MSG_RESULT([Inline Assembly])