changeset 29034:8450a9da95f7

Sync cpuid detection code with libavcodec: assume it is always available on x86_64
author reimar
date Fri, 27 Mar 2009 18:48:47 +0000
parents 8b797cf46bb8
children dc02213118a4
files cpudetect.c
diffstat 1 files changed, 7 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/cpudetect.c	Fri Mar 27 17:14:58 2009 +0000
+++ b/cpudetect.c	Fri Mar 27 18:48:47 2009 +0000
@@ -44,20 +44,15 @@
 // return TRUE if cpuid supported
 static int has_cpuid(void)
 {
-	long a, c;
-
 // code from libavcodec:
 #if ARCH_X86_64
-#define PUSHF "pushfq\n\t"
-#define POPF "popfq\n\t"
+   return 1;
 #else
-#define PUSHF "pushfl\n\t"
-#define POPF "popfl\n\t"
-#endif
+	long a, c;
     __asm__ volatile (
                           /* See if CPUID instruction is supported ... */
                           /* ... Get copies of EFLAGS into eax and ecx */
-                          PUSHF
+                          "pushfl\n\t"
                           "pop %0\n\t"
                           "mov %0, %1\n\t"
                           
@@ -65,19 +60,18 @@
                           /*     to the EFLAGS reg */
                           "xor $0x200000, %0\n\t"
                           "push %0\n\t"
-                          POPF
+                          "popfl\n\t"
                           
                           /* ... Get the (hopefully modified) EFLAGS */
-                          PUSHF
+                          "pushfl\n\t"
                           "pop %0\n\t"
                           : "=a" (a), "=c" (c)
                           :
                           : "cc" 
                           );
-#undef PUSHF
-#undef POPF
 
 	return a != c;
+#endif
 }
 
 static void
@@ -277,7 +271,7 @@
 }
 #endif /* __linux__ && _POSIX_SOURCE */
 
-#if defined(__MINGW32__) || defined(__CYGWIN__)
+#if (defined(__MINGW32__) || defined(__CYGWIN__)) && !ARCH_X86_64
 LONG CALLBACK win32_sig_handler_sse(EXCEPTION_POINTERS* ep)
 {
    if(ep->ExceptionRecord->ExceptionCode==EXCEPTION_ILLEGAL_INSTRUCTION){