mirror of
https://git.proxmox.com/git/qemu
synced 2025-08-14 14:13:06 +00:00
fixed lea exception
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@622 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
0e4b179d33
commit
3a1d9b8bbb
@ -2554,6 +2554,9 @@ static uint8_t *disas_insn(DisasContext *s, uint8_t *pc_start)
|
|||||||
case 0x8d: /* lea */
|
case 0x8d: /* lea */
|
||||||
ot = dflag ? OT_LONG : OT_WORD;
|
ot = dflag ? OT_LONG : OT_WORD;
|
||||||
modrm = ldub_code(s->pc++);
|
modrm = ldub_code(s->pc++);
|
||||||
|
mod = (modrm >> 6) & 3;
|
||||||
|
if (mod == 3)
|
||||||
|
goto illegal_op;
|
||||||
reg = (modrm >> 3) & 7;
|
reg = (modrm >> 3) & 7;
|
||||||
/* we must ensure that no segment is added */
|
/* we must ensure that no segment is added */
|
||||||
s->override = -1;
|
s->override = -1;
|
||||||
@ -2815,7 +2818,6 @@ static uint8_t *disas_insn(DisasContext *s, uint8_t *pc_start)
|
|||||||
mod = (modrm >> 6) & 3;
|
mod = (modrm >> 6) & 3;
|
||||||
rm = modrm & 7;
|
rm = modrm & 7;
|
||||||
op = ((b & 7) << 3) | ((modrm >> 3) & 7);
|
op = ((b & 7) << 3) | ((modrm >> 3) & 7);
|
||||||
|
|
||||||
if (mod != 3) {
|
if (mod != 3) {
|
||||||
/* memory op */
|
/* memory op */
|
||||||
gen_lea_modrm(s, modrm, ®_addr, &offset_addr);
|
gen_lea_modrm(s, modrm, ®_addr, &offset_addr);
|
||||||
@ -4479,7 +4481,7 @@ static inline int gen_intermediate_code_internal(CPUState *env,
|
|||||||
pc_start = (uint8_t *)tb->pc;
|
pc_start = (uint8_t *)tb->pc;
|
||||||
cs_base = (uint8_t *)tb->cs_base;
|
cs_base = (uint8_t *)tb->cs_base;
|
||||||
flags = tb->flags;
|
flags = tb->flags;
|
||||||
|
|
||||||
dc->pe = (flags >> HF_PE_SHIFT) & 1;
|
dc->pe = (flags >> HF_PE_SHIFT) & 1;
|
||||||
dc->code32 = (flags >> HF_CS32_SHIFT) & 1;
|
dc->code32 = (flags >> HF_CS32_SHIFT) & 1;
|
||||||
dc->ss32 = (flags >> HF_SS32_SHIFT) & 1;
|
dc->ss32 = (flags >> HF_SS32_SHIFT) & 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user