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
This commit is contained in:
Reimar Döffinger 2008-11-25 07:34:20 +00:00
parent bd2b6b33bf
commit 35d0c2173c
1 changed files with 10 additions and 3 deletions

View 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)
: