From: "jonathan.albrecht" <jonathan.albrecht@linux.vnet.ibm.com>
To: Richard Henderson <richard.henderson@linaro.org>
Cc: ruixin.bao@ibm.com, iii@linux.ibm.com, david@redhat.com,
cohuck@redhat.com, laurent@vivier.eu, qemu-devel@nongnu.org,
borntraeger@de.ibm.com, qemu-s390x@nongnu.org,
krebbel@linux.ibm.com
Subject: Re: [PATCH v2 1/2] linux-user/s390x: signal with SIGFPE on compare-and-trap
Date: Fri, 09 Jul 2021 10:23:12 -0400 [thread overview]
Message-ID: <bd35b4ccf4d0f972ab454652b4ed2e60@imap.linux.ibm.com> (raw)
In-Reply-To: <8e6af279-6cb8-33af-8bf5-042dcb99f671@linaro.org>
On 2021-07-08 1:08 pm, Richard Henderson wrote:
> On 7/7/21 6:42 AM, Jonathan Albrecht wrote:
>> + sig = TARGET_SIGFPE;
>> + if ((n & 0x03) == 0) {
>> + /* An IEEE exception, simulated or otherwise. */
>> if (n & 0x80) {
>> n = TARGET_FPE_FLTINV;
>> } else if (n & 0x40) {
>> @@ -121,13 +123,12 @@ void cpu_loop(CPUS390XState *env)
>> n = TARGET_FPE_FLTUND;
>> } else if (n & 0x08) {
>> n = TARGET_FPE_FLTRES;
>> - } else {
>> - /* ??? Quantum exception; BFP, DFP error. */
>> - goto do_sigill_opn;
>> }
>> - sig = TARGET_SIGFPE;
>> - goto do_signal_pc;
>> + } else {
>> + /* compare-and-trap */
>> + n = 0;
>> }
>
Thanks for the review. I should have a v3 ready shortly.
> Nearly, but not quite. Replace the ??? Quantum exception with n = 0,
> otherwise si_code will be garbage for that case.
>
Thx I'll fix that.
> The structure of the kernel code is
>
> if (n != 0) {
> /* do_fp_trap */
> si_code = 0;
> if ((n & 3) == 0) {
> /* select on bits 6 & 7 */
> }
> raise sigfpe w/ si_code
> } else {
> raise sigill
> }
>
> The comment for compare-and-trap is misleading, because there are lots
> of entries in "Figure 6-2. Data-exception codes (DXC)" which arrive
> there and are not compare-and-trap.
>
I'll make the comment less specific.
> As a general comment, I think a single switch over DXC would be
> cleaner for both kernel and qemu. It seems like giving different
> si_code for e.g. "0x40 IEEE division by zero" and "0x43 Simulated IEEE
> division by zero" is actively incorrect.
>
I went over the DXC section and I see what you mean about the si_codes
for simulated IEEE exceptions. I'll plan on handling those the same as
non-simulated IEEE if no objections. Otherwise all non-IEEE will have
si_code == 0 except DXC == 0x00 will still goto do_sigill_opn.
>
> r~
next prev parent reply other threads:[~2021-07-09 14:24 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-07 13:42 [PATCH v2 0/2] linux-user/s390x: signal with SIGFPE on compare-and-trap Jonathan Albrecht
2021-07-07 13:42 ` [PATCH v2 1/2] " Jonathan Albrecht
2021-07-08 17:08 ` Richard Henderson
2021-07-09 14:23 ` jonathan.albrecht [this message]
2021-07-09 14:37 ` Richard Henderson
2021-07-09 14:48 ` jonathan.albrecht
2021-07-07 13:42 ` [PATCH v2 2/2] tests/tcg: Test that compare-and-trap raises SIGFPE Jonathan Albrecht
2021-07-08 17:18 ` 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=bd35b4ccf4d0f972ab454652b4ed2e60@imap.linux.ibm.com \
--to=jonathan.albrecht@linux.vnet.ibm.com \
--cc=borntraeger@de.ibm.com \
--cc=cohuck@redhat.com \
--cc=david@redhat.com \
--cc=iii@linux.ibm.com \
--cc=krebbel@linux.ibm.com \
--cc=laurent@vivier.eu \
--cc=qemu-devel@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=ruixin.bao@ibm.com \
/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).