On Fri, 2012-03-09 at 00:02:55 +0000, Julian Pidancet wrote:
> Some instructions are not emulated correctly by x86emu when they
> are prefixed by the 0x66 opcode.
> I've identified problems in the emulation of these intructions: ret,
> enter, leave, iret and some forms of call.
> 
> Most of the time, the problem is that these instructions should push or
> pop 32-bit values to/from the stack, instead of 16bit, when they are
> prefixed by the 0x66 special opcode.
> 
> The SeaBIOS project aims to produce a complete legacy BIOS
> implementation as well as a VGA option ROM, entirely written in C and
> using the GCC compiler.
> 
> In 16bit code produced by the GCC compiler, the 0x66 prefix is used
> almost everywhere. This patch is necessary to allow the SeaBIOS VGA
> option ROM to function with Xorg when using the vesa driver.
> 
> v2: - Decrement BP instead of EBP in accordance with the Intel Manual
>     - Assign EIP instead of IP when poping the return address from the
>     stack in 32-bit operand size mode in ret_far_IMM, ret_far, and iret
>     - When poping EFLAGS from the stack in iret in 32-bit operand size
>     mode, apply some mask to preserve Read-only flags.
> 
> Signed-off-by: Julian Pidancet <[email protected]>

Looks good to me:

Reviewed-by: Guillem Jover <[email protected]>

thanks,
guillem
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to