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
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
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
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) {
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: