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