Message ID | alpine.LNX.2.00.1003041508540.3806@linmac |
---|---|
State | New |
Headers | show |
On Thu, 4 Mar 2010, malc wrote: That's not enough, later on there's a bunch of operations assuming 32bit width...
On Thu, Mar 04, 2010 at 04:03:33PM +0300, malc wrote: > On Thu, 4 Mar 2010, malc wrote: > > That's not enough, later on there's a bunch of operations assuming > 32bit width... > After discussing with malc, it happens that this patch is actually correct and enough. I have just committed it.
diff --git a/target-i386/translate.c b/target-i386/translate.c index a597e80..68e6df9 100644 --- a/target-i386/translate.c +++ b/target-i386/translate.c @@ -4589,9 +4589,7 @@ static target_ulong disas_insn(DisasContext *s, target_ulong pc_start) /* operand size for jumps is 64 bit */ ot = OT_QUAD; } else if (op == 3 || op == 5) { - /* for call calls, the operand is 16 or 32 bit, even - in long mode */ - ot = dflag ? OT_LONG : OT_WORD; + ot = dflag ? OT_LONG + (rex_w == 1) : OT_WORD; } else if (op == 6) { /* default push size is 64 bit */
Signed-off-by: malc <av1474@comtv.ru> --- target-i386/translate.c | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-) ot = dflag ? OT_QUAD : OT_WORD;