[MPlayer-cvslog] r28037 - trunk/cpudetect.c
cehoyos
subversion at mplayerhq.hu
Tue Nov 25 19:36:50 CET 2008
Author: cehoyos
Date: Tue Nov 25 19:36:50 2008
New Revision: 28037
Log:
Replace pushf/popf by explicit pushfl/popfl (32 bit) or pushfq/popfq
(x86_64), to fix generated code on ICC 11.0.
Original FFmpeg patch by Reimar.
Modified:
trunk/cpudetect.c
Modified: trunk/cpudetect.c
==============================================================================
--- trunk/cpudetect.c (original)
+++ trunk/cpudetect.c Tue Nov 25 19:36:50 2008
@@ -57,10 +57,17 @@ static int has_cpuid(void)
long a, c;
// code from libavcodec:
+#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"
@@ -68,15 +75,17 @@ static int has_cpuid(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)
:
: "cc"
);
+#undef PUSHF
+#undef POPF
return a != c;
}
More information about the MPlayer-cvslog
mailing list