Re: [Qemu-devel] [PATCH] i386/translate: ignore 0x67 (PREFIX_ADR) on TARGET_X86_64 CODE64()

2013-05-27 Thread Paolo Bonzini
Il 27/05/2013 01:45, Laszlo Ersek ha scritto: I believe aflag++ is incorrect if the current default address size for 32-bit is 16-bit (ie. (s-code32 1) == 0). ... which cannot happen. :) (Sorry, should have been more verbose). See cpu_x86_load_seg_cache: #ifdef TARGET_X86_64 if

Re: [Qemu-devel] [PATCH] i386/translate: ignore 0x67 (PREFIX_ADR) on TARGET_X86_64 CODE64()

2013-05-26 Thread Paolo Bonzini
Il 26/05/2013 01:23, Richard Henderson ha scritto: On 2013-05-24 14:37, Laszlo Ersek wrote: @@ -4813,7 +4813,11 @@ static target_ulong disas_insn(CPUX86State *env, DisasContext *s, /* 0x66 is ignored if rex.w is set */ dflag = 2; } -if

Re: [Qemu-devel] [PATCH] i386/translate: ignore 0x67 (PREFIX_ADR) on TARGET_X86_64 CODE64()

2013-05-26 Thread Laszlo Ersek
On 05/26/13 10:33, Paolo Bonzini wrote: Il 26/05/2013 01:23, Richard Henderson ha scritto: On 2013-05-24 14:37, Laszlo Ersek wrote: @@ -4813,7 +4813,11 @@ static target_ulong disas_insn(CPUX86State *env, DisasContext *s, /* 0x66 is ignored if rex.w is set */ dflag

Re: [Qemu-devel] [PATCH] i386/translate: ignore 0x67 (PREFIX_ADR) on TARGET_X86_64 CODE64()

2013-05-25 Thread Richard Henderson
On 2013-05-24 14:37, Laszlo Ersek wrote: @@ -4813,7 +4813,11 @@ static target_ulong disas_insn(CPUX86State *env, DisasContext *s, /* 0x66 is ignored if rex.w is set */ dflag = 2; } -if (!(prefixes PREFIX_ADR)) { +if (prefixes PREFIX_ADR) {

[Qemu-devel] [PATCH] i386/translate: ignore 0x67 (PREFIX_ADR) on TARGET_X86_64 CODE64()

2013-05-24 Thread Laszlo Ersek
The code reorganization in commit 4a6fd938 broke handling of PREFIX_ADR. Restore the previous behavior: If TARGET_X86_64 *and* CODE64(): (a) PREFIX_ADR set: no effect, aflag should stay at the original s-code32 value, (b) PREFIX_ADR clear: aflag should be set to constant 2. Otherwise: