From: Rhys Weatherley Date: Mon, 16 Aug 2004 06:45:03 +0000 (+0000) Subject: cpuid_query: use %ebx in a way that doesn't confuse PIC mode in some X-Git-Tag: r.0.0.6~44 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=2d7c79c2836bb2da3eb87234e02ef409ea9e64ff;p=francis%2Flibjit.git cpuid_query: use %ebx in a way that doesn't confuse PIC mode in some versions of gcc (bug #10022). --- diff --git a/ChangeLog b/ChangeLog index feb63fc..e9477b1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,9 @@ +2004-08-16 Rhys Weatherley + + * jit/jit-cpuid-x86.c (cpuid_query): use %ebx in a way that doesn't + confuse PIC mode in some versions of gcc (bug #10022). + 2004-08-13 Rhys Weatherley * include/jit/jit-insn.h, include/jit/jit-opcode.h, diff --git a/jit/jit-cpuid-x86.c b/jit/jit-cpuid-x86.c index 03b0e62..b060991 100644 --- a/jit/jit-cpuid-x86.c +++ b/jit/jit-cpuid-x86.c @@ -58,6 +58,7 @@ static void cpuid_query(unsigned int index, jit_cpuid_x86_t *info) #if defined(__GNUC__) __asm__ __volatile__ ( "\tmovl %0, %%eax\n" + "\tpushl %%ebx\n" "\txorl %%ebx, %%ebx\n" "\txorl %%ecx, %%ecx\n" "\txorl %%edx, %%edx\n" @@ -68,7 +69,8 @@ static void cpuid_query(unsigned int index, jit_cpuid_x86_t *info) "\tmovl %%ebx, 4(%%esi)\n" "\tmovl %%ecx, 8(%%esi)\n" "\tmovl %%edx, 12(%%esi)\n" - : : "m"(index), "m"(info) : "eax", "ebx", "ecx", "edx", "esi" + "\tpopl %%ebx\n" + : : "m"(index), "m"(info) : "eax", "ecx", "edx", "esi" ); #endif }