Re: 1.3.0, and lrmi.c

Search this archive.

From: Dr. Michael Weller (eowmob@exp-math.uni-essen.de)
Date: Mon 13 Jul 1998 - 17:59:20 IDT


On Mon, 13 Jul 1998, Matan Ziv-Av wrote:

> Now there is some funny error while compiling:
> lrmi.c: In function `vm86old':
> lrmi.c:25: fixed or forbidden register was spilled.
> This may be due to a compiler bug or to impossible asm
> statements or clauses.
> 
> This can be solved by changing in Makefile.cfg the line
>        DLLFLAGS = -fPIC
> to
>        DLLFLAGS = 
> 
> (According to gcc's documentation, the -fPIC flag is necessary
> for creating a shared library, but I did create a shared library
> without this flag and it seems to be working.)

Well, it not strictly necessary. The point is that ELF places the
library at any free location it finds. PIC (position independent code),
does not need to be relocated at the new location. Hence it takes less
time loading and less pages are dirtied with the new addresses entered.

Now, on intel, PIC needs a help register (which must not be spilled) and
is slower. So, the use of PIC can be argued here. For very time critical
routines it might be good not to use PIC.

Unfortunately I don't know which register is used, and it might differ for
different gcc versions. I think that lrmi.c just uses one of these regs.
We should check which it is and either remove it, or, if it can't be (I
guess the vm86 emulation HAS TO modify all registers) just remore -fPIC
for lrmi.c in the makefiles.

> A simpler solution is, of course, to disable the VESA driver, if it is
> not needed.

Unfortunately not acceptable for all people as it is IMHO the most
interesting thing about 1.3.0 (now I heard it works for the MGA).

Michael.

--

Michael Weller: eowmob@exp-math.uni-essen.de, eowmob@ms.exp-math.uni-essen.de,
or even mat42b@spi.power.uni-essen.de. If you encounter an eowmob account on
any machine in the net, it's very likely it's me.


This archive was generated by hypermail 2.1.4 : Wed 21 Jan 2004 - 22:10:22 IST