[llvm-commits] CVS: llvm/lib/Target/X86/X86Subtarget.cpp
Evan Cheng
evan.cheng at apple.com
Fri Jan 27 11:30:42 PST 2006
Changes in directory llvm/lib/Target/X86:
X86Subtarget.cpp updated: 1.11 -> 1.12
---
Log message:
A better workaround
---
Diffs of the changes: (+5 -6)
X86Subtarget.cpp | 11 +++++------
1 files changed, 5 insertions(+), 6 deletions(-)
Index: llvm/lib/Target/X86/X86Subtarget.cpp
diff -u llvm/lib/Target/X86/X86Subtarget.cpp:1.11 llvm/lib/Target/X86/X86Subtarget.cpp:1.12
--- llvm/lib/Target/X86/X86Subtarget.cpp:1.11 Fri Jan 27 12:30:50 2006
+++ llvm/lib/Target/X86/X86Subtarget.cpp Fri Jan 27 13:30:30 2006
@@ -22,11 +22,10 @@
#if defined(__GNUC__)
asm ("pushl\t%%ebx\n\t"
"cpuid\n\t"
+ "movl\t%%ebx, %%esi\n\t"
"popl\t%%ebx"
: "=a" (*EAX),
-#if !defined(__DYNAMIC__) // This works around a gcc -fPIC bug
- "=b" (*EBX),
-#endif
+ "=S" (*EBX),
"=c" (*ECX),
"=d" (*EDX)
: "a" (value));
@@ -35,11 +34,11 @@
}
static const char *GetCurrentX86CPU() {
- unsigned EAX = 0, DUMMY = 0, ECX = 0, EDX = 0;
- GetCpuIDAndInfo(0x1, &EAX, &DUMMY, &ECX, &EDX);
+ unsigned EAX = 0, EBX = 0, ECX = 0, EDX = 0;
+ GetCpuIDAndInfo(0x1, &EAX, &EBX, &ECX, &EDX);
unsigned Family = (EAX & (0xffffffff >> (32 - 4)) << 8) >> 8; // Bits 8 - 11
unsigned Model = (EAX & (0xffffffff >> (32 - 4)) << 4) >> 4; // Bits 4 - 7
- GetCpuIDAndInfo(0x80000001, &EAX, &DUMMY, &ECX, &EDX);
+ GetCpuIDAndInfo(0x80000001, &EAX, &EBX, &ECX, &EDX);
bool Em64T = EDX & (1 << 29);
switch (Family) {
More information about the llvm-commits
mailing list