From: "Philippe Mathieu-Daudé" <philmd@redhat.com>
To: Richard Henderson <richard.henderson@linaro.org>,
qemu-devel@nongnu.org, Alberto Ortega <aortega.lms@gmail.com>
Cc: pbonzini@redhat.com, Eduardo Habkost <ehabkost@redhat.com>
Subject: Re: [Qemu-devel] [PATCH] target/i386: Generate #UD when applying LOCK to a register
Date: Wed, 6 Feb 2019 16:59:14 +0100 [thread overview]
Message-ID: <dfa74dbf-574d-e63a-4575-283b589fde4e@redhat.com> (raw)
In-Reply-To: <83ce7768-bff3-fcf2-12b8-3ff0c7778dfc@linaro.org>
On 2/6/19 6:42 AM, Richard Henderson wrote:
> Ping.
>
> On 12/7/18 5:09 PM, Richard Henderson wrote:
>> This covers inc, dec, and the bit test instructions.
>>
>> I believe we've finally covered all of the cases for
>> which we have an atomic path that would use the cpu_A0
>> temp, which is only initialized for address sources.
>>
>> Fixes: https://bugs.launchpad.net/qemu/+bug/1803160/comments/4
Reported-by: Alberto Ortega <aortega.lms@gmail.com>
>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>> ---
>> target/i386/translate.c | 11 +++++++++++
>> 1 file changed, 11 insertions(+)
>>
>> diff --git a/target/i386/translate.c b/target/i386/translate.c
>> index 0dd5fbe45c..eb52322a47 100644
>> --- a/target/i386/translate.c
>> +++ b/target/i386/translate.c
>> @@ -1398,6 +1398,11 @@ static void gen_op(DisasContext *s1, int op, TCGMemOp ot, int d)
>> static void gen_inc(DisasContext *s1, TCGMemOp ot, int d, int c)
>> {
>> if (s1->prefix & PREFIX_LOCK) {
>> + if (d != OR_TMP0) {
>> + /* Lock prefix when destination is not memory. */
>> + gen_illegal_opcode(s1);
>> + return;
>> + }
>> tcg_gen_movi_tl(s1->T0, c > 0 ? 1 : -1);
>> tcg_gen_atomic_add_fetch_tl(s1->T0, s1->A0, s1->T0,
>> s1->mem_index, ot | MO_LE);
>> @@ -6764,6 +6769,9 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu)
>> gen_op_ld_v(s, ot, s->T0, s->A0);
>> }
>> } else {
>> + if (s->prefix & PREFIX_LOCK) {
>> + goto illegal_op;
>> + }
>> gen_op_mov_v_reg(s, ot, s->T0, rm);
>> }
>> /* load shift */
>> @@ -6803,6 +6811,9 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu)
>> gen_op_ld_v(s, ot, s->T0, s->A0);
>> }
>> } else {
>> + if (s->prefix & PREFIX_LOCK) {
>> + goto illegal_op;
>> + }
>> gen_op_mov_v_reg(s, ot, s->T0, rm);
>> }
>> bt_op:
>>
>
>
next prev parent reply other threads:[~2019-02-06 16:03 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-07 17:09 [Qemu-devel] [PATCH] target/i386: Generate #UD when applying LOCK to a register Richard Henderson
2018-12-09 19:48 ` Philippe Mathieu-Daudé
2019-02-06 5:42 ` Richard Henderson
2019-02-06 15:59 ` Philippe Mathieu-Daudé [this message]
2019-02-12 14:17 ` Paolo Bonzini
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=dfa74dbf-574d-e63a-4575-283b589fde4e@redhat.com \
--to=philmd@redhat.com \
--cc=aortega.lms@gmail.com \
--cc=ehabkost@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.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.