OSDN Git Service

Replace pushf/popf by explicit pushfl/popfl (32 bit) or pushfq/popfq (x86_64),
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>
Tue, 25 Nov 2008 07:34:20 +0000 (07:34 +0000)
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>
Tue, 25 Nov 2008 07:34:20 +0000 (07:34 +0000)
to fix generated code on ICC 11.0.

Originally committed as revision 15935 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/i386/cpuid.c

index 2f2a669..cd33334 100644 (file)
@@ -44,10 +44,17 @@ int mm_support(void)
     int max_std_level, max_ext_level, std_caps=0, ext_caps=0;
     x86_reg a, c;
 
+#ifdef ARCH_X86_64
+#define PUSHF "pushfq\n\t"
+#define POPF "popfq\n\t"
+#else
+#define PUSHF "pushfl\n\t"
+#define POPF "popfl\n\t"
+#endif
     __asm__ volatile (
         /* See if CPUID instruction is supported ... */
         /* ... Get copies of EFLAGS into eax and ecx */
-        "pushf\n\t"
+        PUSHF
         "pop %0\n\t"
         "mov %0, %1\n\t"
 
@@ -55,10 +62,10 @@ int mm_support(void)
         /*     to the EFLAGS reg */
         "xor $0x200000, %0\n\t"
         "push %0\n\t"
-        "popf\n\t"
+        POPF
 
         /* ... Get the (hopefully modified) EFLAGS */
-        "pushf\n\t"
+        PUSHF
         "pop %0\n\t"
         : "=a" (a), "=c" (c)
         :