From: "Nicholas Piggin" <npiggin@gmail.com>
To: "BALATON Zoltan" <balaton@eik.bme.hu>, <qemu-devel@nongnu.org>,
<qemu-ppc@nongnu.org>
Cc: "Daniel Henrique Barboza" <danielhb413@gmail.com>, <clg@kaod.org>
Subject: Re: [PATCH v6 3/9] target/ppc: Fix gen_sc to use correct nip
Date: Tue, 27 Feb 2024 16:23:59 +1000 [thread overview]
Message-ID: <CZFN9QFWXWJS.3QUUL2OSEITNM@wheely> (raw)
In-Reply-To: <9bb0926a0e9f3b5c703fe0b4b6d21edd8eb79bdd.1708601065.git.balaton@eik.bme.hu>
On Thu Feb 22, 2024 at 9:33 PM AEST, BALATON Zoltan wrote:
> Most exceptions are raised with nip pointing to the faulting
> instruction but the sc instruction generating a syscall exception
> leaves nip pointing to next instruction. Fix gen_sc to not use
> gen_exception_err() which sets nip back but correctly set nip to
> pc_next so we don't have to patch this in the exception handlers.
>
> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
> Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Mixed feelings about this one still but I suppose I will add it
now you have the tracing corrected. Although one more thing:
> diff --git a/target/ppc/translate.c b/target/ppc/translate.c
> index 049f636927..6a43eda3b9 100644
> --- a/target/ppc/translate.c
> +++ b/target/ppc/translate.c
> @@ -4535,15 +4535,17 @@ static void gen_hrfid(DisasContext *ctx)
> #endif
> static void gen_sc(DisasContext *ctx)
> {
> - uint32_t lev;
> -
> /*
> * LEV is a 7-bit field, but the top 6 bits are treated as a reserved
> * field (i.e., ignored). ISA v3.1 changes that to 5 bits, but that is
> * for Ultravisor which TCG does not support, so just ignore the top 6.
> */
> - lev = (ctx->opcode >> 5) & 0x1;
> - gen_exception_err(ctx, POWERPC_SYSCALL, lev);
> + uint32_t lev = (ctx->opcode >> 5) & 0x1;
> +
> + gen_update_nip(ctx, ctx->base.pc_next);
> + gen_helper_raise_exception_err(tcg_env, tcg_constant_i32(POWERPC_SYSCALL),
> + tcg_constant_i32(lev));
> + ctx->base.is_jmp = DISAS_NORETURN;
> }
>
> #if defined(TARGET_PPC64)
Can you share this code with gen_exception_err, by making
gen_exception_err_nip that takes the nip?
Thanks,
Nick
next prev parent reply other threads:[~2024-02-27 6:25 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-22 11:33 [PATCH v6 0/9] Misc clean ups to target/ppc exception handling BALATON Zoltan
2024-02-22 11:33 ` [PATCH v6 1/9] target/ppc: Use env_cpu for cpu_abort in excp_helper BALATON Zoltan
2024-02-22 12:06 ` Philippe Mathieu-Daudé
2024-02-22 11:33 ` [PATCH v6 2/9] target/ppc: Readability improvements in exception handlers BALATON Zoltan
2024-02-22 11:33 ` [PATCH v6 3/9] target/ppc: Fix gen_sc to use correct nip BALATON Zoltan
2024-02-27 6:23 ` Nicholas Piggin [this message]
2024-02-22 11:33 ` [PATCH v6 4/9] target/ppc: Move patching nip from exception handler to helper_scv BALATON Zoltan
2024-02-22 11:33 ` [PATCH v6 5/9] target/ppc: Simplify syscall exception handlers BALATON Zoltan
2024-02-22 12:09 ` Philippe Mathieu-Daudé
2024-02-22 12:20 ` BALATON Zoltan
2024-02-27 6:36 ` Nicholas Piggin
2024-02-27 6:32 ` Nicholas Piggin
2024-02-22 11:34 ` [PATCH v6 6/9] target/ppc: Clean up ifdefs in excp_helper.c, part 1 BALATON Zoltan
2024-02-22 11:34 ` [PATCH v6 7/9] target/ppc: Clean up ifdefs in excp_helper.c, part 2 BALATON Zoltan
2024-02-22 11:34 ` [PATCH v6 8/9] target/ppc: Clean up ifdefs in excp_helper.c, part 3 BALATON Zoltan
2024-02-22 11:34 ` [PATCH v6 9/9] target/ppc: Remove interrupt handler wrapper functions BALATON Zoltan
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=CZFN9QFWXWJS.3QUUL2OSEITNM@wheely \
--to=npiggin@gmail.com \
--cc=balaton@eik.bme.hu \
--cc=clg@kaod.org \
--cc=danielhb413@gmail.com \
--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 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).