[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [XEN][EMUL] x86 emulator should support 32-bit offsets in real mode.
# HG changeset patch # User kfraser@xxxxxxxxxxxxxxxxxxxxxxx # Node ID 869937819ed95ead0468a6c64b4aa753a4b8ab76 # Parent 9158ecb9045fd533f602378adb4abe41947ef781 [XEN][EMUL] x86 emulator should support 32-bit offsets in real mode. Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx> --- xen/arch/x86/x86_emulate.c | 9 ++------- 1 files changed, 2 insertions(+), 7 deletions(-) diff -r 9158ecb9045f -r 869937819ed9 xen/arch/x86/x86_emulate.c --- a/xen/arch/x86/x86_emulate.c Tue Jun 27 09:54:05 2006 +0100 +++ b/xen/arch/x86/x86_emulate.c Tue Jun 27 10:36:51 2006 +0100 @@ -374,9 +374,8 @@ do{ __asm__ __volatile__ ( /* Access/update address held in a register, based on addressing mode. */ #define register_address(sel, reg) \ - ((ad_bytes == sizeof(unsigned long)) ? (reg) : \ - ((mode == X86EMUL_MODE_REAL) ? /* implies ad_bytes == 2 */ \ - (((unsigned long)(sel) << 4) + ((reg) & 0xffff)) : \ + (((mode == X86EMUL_MODE_REAL) ? ((unsigned long)(sel) << 4) : 0) + \ + ((ad_bytes == sizeof(unsigned long)) ? (reg) : \ ((reg) & ((1UL << (ad_bytes << 3)) - 1)))) #define register_address_increment(reg, inc) \ do { \ @@ -510,10 +509,6 @@ x86_emulate_memop( } done_prefixes: - /* Note quite the same as 80386 real mode, but hopefully good enough. */ - if ( (mode == X86EMUL_MODE_REAL) && (ad_bytes != 2) ) - goto cannot_emulate; - /* REX prefix. */ if ( (mode == X86EMUL_MODE_PROT64) && ((b & 0xf0) == 0x40) ) { _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |