|
From: Bob D. <bob...@te...> - 2004-11-10 09:33:28
|
A cleaner patch will have to be developed, but the following
modification works for me:
diff -u -r1.24 codegen_x86.cpp
--- codegen_x86.cpp 8 Nov 2004 21:10:46 -0000 1.24
+++ codegen_x86.cpp 10 Nov 2004 09:30:16 -0000
@@ -3834,9 +3834,9 @@
for (int g_OF = 0; g_OF <= 1; g_OF++) {
for (int g_SF = 0; g_SF <= 1; g_SF++) {
for (int value = -1; value <= 1; value++) {
- int flags = (g_SF << 7) | (g_OF << 11) | (g_ZF
<< 6) | g_CF;
+ long long int flags = (g_SF << 7) | (g_OF << 11)
| (g_ZF << 6) | g_CF;
int tmp = value;
- __asm__ __volatile__ ("push %0; popf; bsf %1,%1;
pushf; pop %0"
+ __asm__ __volatile__ ("pushq %0; popfq; bsf %1,%
1; pushfq; popq %0"
:
"+r" (flags), "+r" (tmp) : : "cc");
int OF = (flags >> 11) & 1;
int SF = (flags >> 7) & 1;
There'll just have to be an #if #else #endif wrapped around this.
Bob
|