Re: asm and signals

Search this archive.

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