diff options
author | Reimar Döffinger <Reimar.Doeffinger@gmx.de> | 2008-11-25 07:34:20 +0000 |
---|---|---|
committer | Reimar Döffinger <Reimar.Doeffinger@gmx.de> | 2008-11-25 07:34:20 +0000 |
commit | 35d0c2173caed6ae52422f3813d5d8334d22b230 (patch) | |
tree | a11d964a639f6e4e169846c3e54ae756275ffcaf | |
parent | bd2b6b33bfcb543ef53ec3237bac3b2c834c6f42 (diff) | |
download | ffmpeg-35d0c2173caed6ae52422f3813d5d8334d22b230.tar.gz |
Replace pushf/popf by explicit pushfl/popfl (32 bit) or pushfq/popfq (x86_64),
to fix generated code on ICC 11.0.
Originally committed as revision 15935 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavcodec/i386/cpuid.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/libavcodec/i386/cpuid.c b/libavcodec/i386/cpuid.c index 2f2a669eee..cd33334ecf 100644 --- a/libavcodec/i386/cpuid.c +++ b/libavcodec/i386/cpuid.c @@ -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) : |