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 |