--- a/mozilla-cpuid.patch Thu Jun 23 22:31:54 2011 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-References:
-https://bugzilla.mozilla.org/show_bug.cgi?id=513422
-
-diff --git a/xpcom/glue/SSE.h b/xpcom/glue/SSE.h
---- a/xpcom/glue/SSE.h
-+++ b/xpcom/glue/SSE.h
-@@ -234,32 +234,73 @@
- #endif
- #ifdef __SSE4_2__
- // It's ok to use SSE4.2 instructions based on the -march option.
- #define MOZILLA_PRESUME_SSE4_2 1
- #endif
-
- #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
-
--// cpuid.h is available on gcc 4.3 and higher on i386 and x86_64
--#include <cpuid.h>
- #define MOZILLA_SSE_HAVE_CPUID_DETECTION
-
- namespace mozilla {
-
- namespace sse_private {
-
- enum CPUIDRegister { eax = 0, ebx = 1, ecx = 2, edx = 3 };
-
-+ inline void my__cpuid(unsigned int* regs, unsigned int level)
-+ {
-+ regs[0] = level;
-+# if defined(__i386__)
-+ __asm__ __volatile__(
-+ "pushl %%ebx" "\n\t"
-+ "movl %0, %%edi" "\n\t"
-+ "movl 0(%%edi), %%eax" "\n\t"
-+ "cpuid" "\n\t"
-+ "movl %%eax, 0(%%edi)" "\n\t"
-+ "movl %%ebx, 4(%%edi)" "\n\t"
-+ "movl %%ecx, 8(%%edi)" "\n\t"
-+ "movl %%edx, 12(%%edi)" "\n\t"
-+ "popl %%ebx" "\n"
-+ : /*out*/
-+ : /*in*/"r"(regs)
-+ : /*trash*/"edi","eax","ecx","edx","memory","cc"
-+ );
-+# elif defined(__x86_64__)
-+ __asm__ __volatile__(
-+ "pushq %%rbx" "\n\t"
-+ "movq %0, %%rdi" "\n\t"
-+ "movl 0(%%rdi), %%eax" "\n\t"
-+ "cpuid" "\n\t"
-+ "movl %%eax, 0(%%rdi)" "\n\t"
-+ "movl %%ebx, 4(%%rdi)" "\n\t"
-+ "movl %%ecx, 8(%%rdi)" "\n\t"
-+ "movl %%edx, 12(%%rdi)" "\n\t"
-+ "popq %%rbx" "\n"
-+ : /*out*/
-+ : /*in*/"r"(regs)
-+ : /*trash*/"rdi","rax","rcx","rdx","memory","cc"
-+ );
-+# else
-+# error "Hmm, unsupported x86-esque platform"
-+# endif
-+ }
-+
- inline bool
- has_cpuid_bit(unsigned int level, CPUIDRegister reg, unsigned int bit)
- {
-+ // Check that the level in question is supported.
- unsigned int regs[4];
-- return __get_cpuid(level, ®s[0], ®s[1], ®s[2], ®s[3]) &&
-- (regs[reg] & bit);
-+ my__cpuid(regs, level & 0x80000000u);
-+ if (unsigned(regs[0]) < level)
-+ return false;
-+
-+ my__cpuid(regs, level);
-+ return !!(unsigned(regs[reg]) & bit);
- }
-
- }
-
- }
-
- #endif
-