[SeaBIOS] FreeBSD VESA console not working with SeaBIOS
Kevin O'Connor
kevin at koconnor.net
Thu Apr 9 04:32:23 CEST 2015
On Wed, Apr 08, 2015 at 08:48:11PM +0200, Peter Stuge wrote:
> Kevin O'Connor wrote:
> > (Specifically, the "leal" instruction is not properly implemented.)
> >
> > Unfortunately, there isn't much that can be done about this on the vga
> > bios side.
>
> Really? Impossible to save flags, use other opcodes, and restore flags?
>
> lea isn't used in vgasrc/ besides in the trap that triggers the fault.
>
> In src/romlayout.S lea is used in two places to bump esp before calls.
> If those code paths are used also by SeaVGABIOS then maybe they could
> be rewritten with simpler instructions?
The problem is not with leal in hand written assembler - the problem
is with leal instructions generated by gcc. To see the assembler gcc
produces for the vgabios one can look at out/vgaccode16.raw.s . Or,
alternatively, one can run:
objdump -m i386 -M i8086 -M suffix -ldr out/vgarom.o
We've fixed up gcc assembler in the past (see scripts/vgafixup.py) to
work around x86emu. However, the leal instruction seems painful to
patch out - particularly so when %esp is one of the registers read or
written in the leal instruction. If anyone wants to take a stab
at a workaround, feel free to submit a patch.
-Kevin
More information about the SeaBIOS
mailing list