Fix GCC 3.4+: Don't clobber %ebx on IA32.

This commit is contained in:
joerg 2006-01-09 19:00:43 +00:00
parent 11c2c35667
commit 3ff4763711
2 changed files with 24 additions and 1 deletions

View file

@ -1,5 +1,6 @@
$NetBSD: distinfo,v 1.3 2005/10/22 15:51:02 rillig Exp $
$NetBSD: distinfo,v 1.4 2006/01/09 19:00:43 joerg Exp $
SHA1 (libjit-0.0.4.tar.gz) = 663055ee5bb600e9dfd28c03456a66bf2b66811b
RMD160 (libjit-0.0.4.tar.gz) = e8ff27b3f1e0dbff0ed6cc1d5fd2a5cc4a74f1fd
Size (libjit-0.0.4.tar.gz) = 580278 bytes
SHA1 (patch-aa) = e5c58111aad14e4ead390fa55630b06cdf2711da

View file

@ -0,0 +1,22 @@
$NetBSD: patch-aa,v 1.3 2006/01/09 19:00:43 joerg Exp $
--- jit/jit-cpuid-x86.c.orig 2006-01-09 18:53:59.000000000 +0000
+++ jit/jit-cpuid-x86.c
@@ -57,6 +57,7 @@ static void cpuid_query(unsigned int ind
{
#if defined(__GNUC__)
__asm__ __volatile__ (
+ "\tpushl %%ebx\n"
"\tmovl %0, %%eax\n"
"\txorl %%ebx, %%ebx\n"
"\txorl %%ecx, %%ecx\n"
@@ -68,7 +69,8 @@ static void cpuid_query(unsigned int ind
"\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
}