From: Bernd Nottelmann (nottelm@PTP283.UNI-MUENSTER.DE)
Date: Fri 16 Jul 1999 - 22:23:01 IDT
Matan Ziv-Av wrote: > Hi, > > Two question: Bernd Nottelmann found that the latest egcs 2.95 > (19990714) does not compile vgaconvplanar.c with some inline assembler > errors: > /usr/src/svgalib-1.4.0/src/vgaconvplanar.c:100: fixed or forbidden > register 0 (ax) was spilled for class AREG. > > A temporary fix is to change the #ifdef __alpha__ block at the start of > the file to make sure USE_ASM is not defined. This slows down X modes a > bit (bankspeed takes 1.53-1.61 seconds without asm code, and with the > asm code 1.32-1.47). [This is the third time I wrote you - I had some problems with sendmail locking - sorry for that, but I am not sure if some of my earlier messages has reached you] Hi Matan, thank you for the quick answer. I think, the solution is very simple: in the input list you initialize ax by 0. One can simply move this into the assembler code: --- svgalib-1.4.0.old/src/vgaconvplanar.c Sun Jun 22 17:45:38 1997 +++ svgalib-1.4.0/src/vgaconvplanar.c Fri Jul 16 20:29:17 1999 @@ -52,6 +52,7 @@ #ifdef USE_ASM __asm__ __volatile__( "xorl %0,%0\n\t" + "xorw %%ax,%%ax\n\t" "jmp 2f\n\t" ".align 2,0x90\n\t" @@ -94,7 +95,7 @@ "0"(x), "r"(voffsetp), "r"(virtualp + plane), - "rm"(w), "ax"(0) + "rm"(w) : /* modified */ "ax", "0" ); The problem is, that ax is used as input and at the same time listed in the clobber list. This is not allowed in all newer gcc-versions. Or am I wrong? Bernd
This archive was generated by hypermail 2.1.4 : Wed 21 Jan 2004 - 22:10:22 IST