shithub: libvpx

Download patch

ref: e50f5d40376b3817fa2bf2e2b2fdf8a0084c3460
parent: 136857475ecbbcc4ae6fd24f8a9a82b5a2610e4a
author: Fritz Koenig <frkoenig@google.com>
date: Tue Oct 12 05:42:03 EDT 2010

GCC inline restrictions were not adequate.

=r was not restrictive enough and the compiler was not returning
ebx correctly.

Change-Id: I7606e384067bd5fb69189802f1ff64ccc5aa02d6

--- a/vpx_ports/x86.h
+++ b/vpx_ports/x86.h
@@ -24,12 +24,11 @@
 #else
 #define cpuid(func,ax,bx,cx,dx)\
     __asm__ __volatile__ (\
-                          "pushl %%ebx     \n\t" \
-                          "cpuid           \n\t" \
-                          "movl  %%ebx, %1 \n\t" \
-                          "popl  %%ebx     \n\t" \
-                          : "=a" (ax), "=r" (bx), "=c" (cx), "=d" (dx) \
-                          : "a"  (func));
+                          "mov %%ebx, %%edi   \n\t" \
+                          "cpuid              \n\t" \
+                          "xchg %%edi, %%ebx  \n\t" \
+                          : "=a" (ax), "=D" (bx), "=c" (cx), "=d" (dx) \
+                          : "a" (func));
 #endif
 #else
 #if ARCH_X86_64