On Tue, May 13, 2014 at 08:08:41PM +0200, Gerhard Wiesinger wrote: > On 13.05.2014 17:41, Kevin O'Connor wrote: > > The x86emu code does not properly emulate "leal" (as near as I can tell > >it treats it as a "leaw" instead), which leads to all sorts of bizarre > >behavior when it tries to interpret the code. This type of issue has > >occurred for a bunch of instructions (on both x86emu and on an emulator > >Windows uses) and we've worked around it in SeaVGABIOS with a combination > >of gcc compiler flags and by post processing gcc's assembler to remove > >some troublesome instructions. Unfortunately, I don't know of any way to > >convince gcc to not emit the "leal" instruction and the instruction > >appears too complex to readily patch out of the assembler. > > Can't that wrong behaviour of "leal" instruction be fixed in qemu?
QEMU doesn't have any issue with leal. x86emu is a separate program that implements a (partial) x86 interpretter. The issue being reported is when QEMU runs a guest which uses x86emu to interpret SeaVGABIOS - QEMU is correctly emulating what a real machine would do (random faults) and thus it can't be fixed in QEMU itself. -Kevin