Date: Wed, 11 Jun 2014 20:31:41 +0000 (UTC) From: Xin LI <delphij@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r267373 - head/sys/contrib/x86emu Message-ID: <201406112031.s5BKVfT7081141@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: delphij Date: Wed Jun 11 20:31:41 2014 New Revision: 267373 URL: http://svnweb.freebsd.org/changeset/base/267373 Log: Fix decoding of LEA when address-size prefix (67h) is present. This is loosly based on Xorg changeset f57bc0e by Christian Zander. Submitted by: Wolf Ramovsky <wolf.ramovsky gmail.com> via core (peter) MFC after: 2 weeks Modified: head/sys/contrib/x86emu/x86emu.c Modified: head/sys/contrib/x86emu/x86emu.c ============================================================================== --- head/sys/contrib/x86emu/x86emu.c Wed Jun 11 20:22:14 2014 (r267372) +++ head/sys/contrib/x86emu/x86emu.c Wed Jun 11 20:31:41 2014 (r267373) @@ -2151,21 +2151,24 @@ x86emuOp_mov_word_RM_SR(struct x86emu *e static void x86emuOp_lea_word_R_M(struct x86emu *emu) { - uint16_t *srcreg; uint32_t destoffset; -/* - * TODO: Need to handle address size prefix! - * - * lea eax,[eax+ebx*2] ?? - */ fetch_decode_modrm(emu); if (emu->cur_mod == 3) x86emu_halt_sys(emu); - srcreg = decode_rh_word_register(emu); destoffset = decode_rl_address(emu); - *srcreg = (uint16_t) destoffset; + if (emu->x86.mode & SYSMODE_PREFIX_ADDR) { + uint32_t *srcreg; + + srcreg = decode_rh_long_register(emu); + *srcreg = (uint32_t) destoffset; + } else { + uint16_t *srcreg; + + srcreg = decode_rh_word_register(emu); + *srcreg = (uint16_t) destoffset; + } } /*
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201406112031.s5BKVfT7081141>