From: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
To: qemu-devel@nongnu.org
Cc: kbastian@mail.uni-paderborn.de, richard.henderson@linaro.org
Subject: [PATCH v3 7/8] target/tricore: Honour privilege changes on PSW write
Date: Wed, 21 Jun 2023 12:19:49 +0200 [thread overview]
Message-ID: <20230621101950.1645420-8-kbastian@mail.uni-paderborn.de> (raw)
In-Reply-To: <20230621101950.1645420-1-kbastian@mail.uni-paderborn.de>
the CPU can change the privilege level by writing the corresponding bits
in PSW. If this happens all instructions after this 'mtcr' in the TB are
translated with the wrong privilege level. So we have to exit to the
cpu_loop() and start translating again with the new privilege level.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
---
target/tricore/translate.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/target/tricore/translate.c b/target/tricore/translate.c
index 1d570b49ff..71b6209af4 100644
--- a/target/tricore/translate.c
+++ b/target/tricore/translate.c
@@ -333,7 +333,6 @@ static void gen_swapmsk(DisasContext *ctx, int reg, TCGv ea)
tcg_gen_mov_tl(cpu_gpr_d[reg], temp);
}
-
/* We generate loads and store to core special function register (csfr) through
the function gen_mfcr and gen_mtcr. To handle access permissions, we use 3
makros R, A and E, which allow read-only, all and endinit protected access.
@@ -381,6 +380,7 @@ static inline void gen_mtcr(DisasContext *ctx, TCGv r1,
/* since we're caching PSW make this a special case */
if (offset == 0xfe04) {
gen_helper_psw_write(cpu_env, r1);
+ ctx->base.is_jmp = DISAS_EXIT_UPDATE;
} else {
switch (offset) {
#include "csfr.h.inc"
--
2.40.1
next prev parent reply other threads:[~2023-06-21 10:21 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-21 10:19 [PATCH v3 0/8] TriCore Privilege Levels Bastian Koppelmann
2023-06-21 10:19 ` [PATCH v3 1/8] target/tricore: Fix RR_JLI clobbering reg A[11] Bastian Koppelmann
2023-06-21 10:19 ` [PATCH v3 2/8] target/tricore: Introduce DISAS_TARGET_EXIT Bastian Koppelmann
2023-06-21 10:19 ` [PATCH v3 3/8] target/tricore: ENABLE exit to main-loop Bastian Koppelmann
2023-06-21 10:19 ` [PATCH v3 4/8] target/tricore: Indirect jump insns use tcg_gen_lookup_and_goto_ptr() Bastian Koppelmann
2023-06-21 11:05 ` Richard Henderson
2023-06-21 10:19 ` [PATCH v3 5/8] target/tricore: Introduce priv tb flag Bastian Koppelmann
2023-06-21 10:19 ` [PATCH v3 6/8] target/tricore: Implement privilege level for all insns Bastian Koppelmann
2023-06-21 10:19 ` Bastian Koppelmann [this message]
2023-06-21 10:19 ` [PATCH v3 8/8] target/tricore: Fix ICR.IE offset in RESTORE insn Bastian Koppelmann
2023-06-21 11:06 ` Richard Henderson
2023-06-21 14:19 ` Bastian Koppelmann
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=20230621101950.1645420-8-kbastian@mail.uni-paderborn.de \
--to=kbastian@mail.uni-paderborn.de \
--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 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).