From: Fabrice Bellard <fabrice@bellard.org>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] x86-64: Fix 64-bit lgs/lfs/lss
Date: Mon, 07 Jul 2008 15:49:34 +0200 [thread overview]
Message-ID: <48721EEE.2060903@bellard.org> (raw)
In-Reply-To: <48721086.2010506@siemens.com>
Hi,
OK, at least for Intel CPUs. From the AMD & Intel specs, the behavior
seems to differ between the two. If it is really the case, a CPU
specific config bit is needed. Unfortunately there may be other corner
cases where AMD and Intel differ in 64 bit mode.
Fabrice.
Jan Kiszka wrote:
> Reading the code while porting my segment limit and type checks to
> latest SVN made me stumble over this bug in the translator: 64-bit
> lgs/lfs/lss was incorrectly reading only 32-bit offsets.
>
> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
> ---
> target-i386/translate.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> Index: b/target-i386/translate.c
> ===================================================================
> --- a/target-i386/translate.c
> +++ b/target-i386/translate.c
> @@ -4864,7 +4864,7 @@ static target_ulong disas_insn(DisasCont
> case 0x1b5: /* lgs Gv */
> op = R_GS;
> do_lxx:
> - ot = dflag ? OT_LONG : OT_WORD;
> + ot = dflag + OT_WORD;
> modrm = ldub_code(s->pc++);
> reg = ((modrm >> 3) & 7) | rex_r;
> mod = (modrm >> 6) & 3;
> @@ -4872,7 +4872,7 @@ static target_ulong disas_insn(DisasCont
> goto illegal_op;
> gen_lea_modrm(s, modrm, ®_addr, &offset_addr);
> gen_op_ld_T1_A0(ot + s->mem_index);
> - gen_add_A0_im(s, 1 << (ot - OT_WORD + 1));
> + gen_add_A0_im(s, 1 << ot);
> /* load the segment first to handle exceptions properly */
> gen_op_ldu_T0_A0(OT_WORD + s->mem_index);
> gen_movl_seg_T0(s, op, pc_start - s->cs_base);
>
>
>
>
next prev parent reply other threads:[~2008-07-07 13:50 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-07 12:48 [Qemu-devel] [PATCH] x86-64: Fix 64-bit lgs/lfs/lss Jan Kiszka
2008-07-07 13:49 ` Fabrice Bellard [this message]
2008-07-07 14:09 ` [Qemu-devel] " Jan Kiszka
2008-07-07 14:45 ` Jan Kiszka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=48721EEE.2060903@bellard.org \
--to=fabrice@bellard.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.