[Liboil] x86 broken in CVS

Stephane Fillod f8cfe at free.fr
Mon Dec 12 13:19:47 PST 2005


Copy/paste can be dangerous at times ;-)
Bare x86 (non _64) systems have no such rbx.

--- liboil/liboilcpu.c 12 Dec 2005 10:10:46 -0000      1.24
+++ liboil/liboilcpu.c 12 Dec 2005 21:08:00 -0000
@@ -139,10 +139,10 @@ static void
 get_cpuid (uint32_t op, uint32_t *a, uint32_t *b, uint32_t *c, uint32_t
*d)
 {
   __asm__ (
-      "  pushq %%rbx\n"
+      "  pushl %%ebx\n"
       "  cpuid\n"
       "  mov %%ebx, %%esi\n"
-      "  popq %%rbx\n"
+      "  popl %%ebx\n"
       : "=a" (*a), "=S" (*b), "=c" (*c), "=d" (*d)
       : "0" (op));
 }


BTW, one test of the "make check" fails on fbCompositeSolid with 
the following reason:

OIL: ERROR ../../liboil/liboil/liboiltest.c 351: oil_test_check_impl(): function fbCompositeSolid_nx8888mmx wrote after area for parameter i_n
OIL: ERROR ../../liboil/liboil/liboiltest.c 368: oil_test_check_impl(): function fbCompositeSolid_nx8888mmx in class composite_over_argb_const_src failed check (0 > 91) outside=1
[...]
composite_over_argb_const_src
  fbCompositeSolid_nx8888mmx
    failed stride test

This has been tested under a Debian/Linux box with an AMD Duron CPU.
I haven't investigated further.

-- 
Stephane


More information about the Liboil mailing list