From: Thomas Huth <thuth@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>,
QEMU Developers <qemu-devel@nongnu.org>
Cc: Alexander Graf <agraf@suse.de>,
Richard Henderson <rth@twiddle.net>,
qemu-s390x@nongnu.org
Subject: Re: [Qemu-devel] target-s390x: assertion failure in op_risbg
Date: Tue, 7 Nov 2017 13:00:14 +0100 [thread overview]
Message-ID: <1a04d2a2-98cc-5ef7-ace4-6836a1c9ec94@redhat.com> (raw)
In-Reply-To: <CAFEAcA_krUaWG_EyyRM84znrYEFOhj2xtNgNpnxaUxMU4-EUCQ@mail.gmail.com>
On 07.11.2017 12:41, Peter Maydell wrote:
> This is from https://bugs.launchpad.net/qemu/+bug/1701798, but
> that's quite a large thing, so here's the s390 specific part.
>
> On an ubuntu xenial install:
>
> $ apt install g++-5-s390x-linux-gnu
> $ cat hello.c
> #include <stdio.h>
> int main(void) {
> printf("hello world\n");
> return 0;
> }
> $ s390x-linux-gnu-gcc-5 -O hello.c -o hello.s390x
> $ QEMU_LD_PREFIX=/usr/s390x-linux-gnu/ gdb --args
> ~/linaro/qemu-from-laptop/qemu/build/all-linux-static/s390x-linux-user/qemu-s390x
> ./hello.s390x
> [...]
> (gdb) r
> [...]
> Thread 1 "qemu-s390x" received signal SIGABRT, Aborted.
> 0x0000000060215018 in raise ()
> (gdb) bt
> #0 0x0000000060215018 in raise ()
> #1 0x000000006021573a in abort ()
> #2 0x0000000060079a96 in op_risbg (s=0x7fffffffda10, o=0x7fffffffd950)
> at /home/petmay01/linaro/qemu-from-laptop/qemu/target/s390x/translate.c:3450
> #3 0x0000000060082c8b in translate_one (env=0x627f0350, s=0x7fffffffda10)
> at /home/petmay01/linaro/qemu-from-laptop/qemu/target/s390x/translate.c:5824
> #4 0x0000000060082f3f in gen_intermediate_code (cs=0x627e80b0,
> tb=0x60794d40 <static_code_gen_buffer+56064>)
> at /home/petmay01/linaro/qemu-from-laptop/qemu/target/s390x/translate.c:5925
> #5 0x00000000600369aa in tb_gen_code (cpu=0x627e80b0, pc=274886359240,
> cs_base=0, flags=3, cflags=0)
>
> This is because in op_risbg() we abort() if s->fields->op2 is not
> one of 0x55, 0x5d, 0x51. In this case it is 0x59. I don't know enough
> s390 to know what this might be, but we shouldn't really abort()
> inside QEMU for unimplemented guest insns.
If I've got the spec right, the 0x59 here means that it is a "new"
instruction called RISBGN which we do not support in QEMU yet. Instead
of calling abort(), the correct behavior for unsupported instructions
here is to generate a "operation" exception. Or even better: Implement
the instruction. If I've got the spec right, it's doing the same as
RISBG (with subcode 0x55), but just does not set the condition code at
the end, so this should be quite easy to implement?
Thomas
next prev parent reply other threads:[~2017-11-07 12:00 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-07 11:41 [Qemu-devel] target-s390x: assertion failure in op_risbg Peter Maydell
2017-11-07 12:00 ` Thomas Huth [this message]
2017-11-07 12:14 ` Richard Henderson
2017-11-07 12:14 ` Richard Henderson
2017-11-07 12:59 ` Richard Henderson
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=1a04d2a2-98cc-5ef7-ace4-6836a1c9ec94@redhat.com \
--to=thuth@redhat.com \
--cc=agraf@suse.de \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=rth@twiddle.net \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).