All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCHv2 11/31] ppc: FP exceptions are always precise
Date: Wed, 27 Jul 2016 17:21:07 +1000	[thread overview]
Message-ID: <20160727072107.GV17429@voom.fritz.box> (raw)
In-Reply-To: <1469602609-31349-11-git-send-email-benh@kernel.crashing.org>

[-- Attachment #1: Type: text/plain, Size: 2387 bytes --]

On Wed, Jul 27, 2016 at 04:56:29PM +1000, Benjamin Herrenschmidt wrote:
> We don't implement imprecise FP exceptions and using store_current
> which sets SRR1 to the *previous* instruction never makes sense
> for these. So let's be truthful and make them precise, which is
> allowed by the architecture.
> 
> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> ---
>  target-ppc/excp_helper.c | 11 ++++++-----
>  target-ppc/translate.c   |  1 -
>  2 files changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/target-ppc/excp_helper.c b/target-ppc/excp_helper.c
> index 96c6fd9..02d9e79 100644
> --- a/target-ppc/excp_helper.c
> +++ b/target-ppc/excp_helper.c
> @@ -274,12 +274,13 @@ static inline void powerpc_excp(PowerPCCPU *cpu, int excp_model, int excp)
>                  env->error_code = 0;
>                  return;
>              }
> +
> +            /* FP exceptions always have NIP pointing to the faulting
> +             * instruction, so always use store_next and claim we are
> +             * precise in the MSR.
> +             */
>              msr |= 0x00100000;
> -            if (msr_fe0 == msr_fe1) {
> -                goto store_next;
> -            }
> -            msr |= 0x00010000;
> -            break;
> +            goto store_next;
>          case POWERPC_EXCP_INVAL:
>              LOG_EXCP("Invalid instruction at " TARGET_FMT_lx "\n", env->nip);
>              msr |= 0x00080000;
> diff --git a/target-ppc/translate.c b/target-ppc/translate.c
> index 3cfa40f..ba14bda 100644
> --- a/target-ppc/translate.c
> +++ b/target-ppc/translate.c
> @@ -3060,7 +3060,6 @@ static void gen_conditional_store(DisasContext *ctx, TCGv EA,
>                                    int reg, int size)
>  {
>      TCGv t0 = tcg_temp_new();
> -    uint32_t save_exception = ctx->exception;

This looks like an unrelated change, and one which would break compile
without other changes in gen_conditional_store() that I don't see.

Have you compiled the user-only targets with this change?

>      tcg_gen_st_tl(EA, cpu_env, offsetof(CPUPPCState, reserve_ea));
>      tcg_gen_movi_tl(t0, (size << 5) | reg);

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

  reply	other threads:[~2016-07-27  8:43 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-27  6:56 [Qemu-devel] [PATCHv2 01/31] ppc: Provide basic raise_exception_* functions Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 02/31] ppc: Move classic fp ops out of translate.c Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 03/31] ppc: Move embedded spe " Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 04/31] ppc: Move DFP " Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 05/31] ppc: Move VMX " Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 06/31] ppc: Move VSX " Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 07/31] ppc: Rename fload_invalid_op_excp to float_invalid_op_excp Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 08/31] ppc: Make float_invalid_op_excp() pass the return address Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 09/31] ppc: Make float_check_status() " Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 10/31] ppc: Don't update the NIP in floating point generated code Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 11/31] ppc: FP exceptions are always precise Benjamin Herrenschmidt
2016-07-27  7:21   ` David Gibson [this message]
2016-07-27  9:44     ` Benjamin Herrenschmidt
2016-07-28  0:32       ` David Gibson
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 12/31] ppc: Don't update NIP in lswi/lswx/stswi/stswx Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 13/31] ppc: Don't update NIP in lmw/stmw/icbi Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 14/31] ppc: Make tlb_fill() use new exception helper Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 15/31] ppc: Rework NIP updates vs. exception generation Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 16/31] ppc: Fix source NIP on SLB related interrupts Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 17/31] ppc: Don't update NIP in DCR access routines Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 18/31] ppc: Don't update NIP in facility unavailable interrupts Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 19/31] ppc: Don't update NIP BookE 2.06 tlbwe Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 20/31] ppc: Don't update NIP on conditional trap instructions Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 21/31] ppc: Don't update NIP if not taking alignment exceptions Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 22/31] ppc: Don't update NIP in dcbz and lscbx Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 23/31] ppc: Make alignment exceptions suck less Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 24/31] ppc: Handle unconditional (always/never) traps at translation time Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 25/31] ppc: Speed up dcbz Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 26/31] ppc: Fix CFAR updates Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 27/31] ppc: Avoid double translation for lvx/lvxl/stvx/stvxl Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 28/31] ppc: Don't set access_type on all load/stores on hash64 Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 29/31] ppc: Use a helper to generate "LE unsupported" alignment interrupts Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 30/31] ppc: load/store multiple and string insns don't do LE Benjamin Herrenschmidt
2016-07-27  6:56 ` [Qemu-devel] [PATCHv2 31/31] ppc: Speed up load/store multiple Benjamin Herrenschmidt

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=20160727072107.GV17429@voom.fritz.box \
    --to=david@gibson.dropbear.id.au \
    --cc=benh@kernel.crashing.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@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.