From: Anton Johansson via <qemu-devel@nongnu.org>
To: qemu-devel@nongnu.org
Cc: pierrick.bouvier@linaro.org, philmd@linaro.org,
alistair.francis@wdc.com, palmer@dabbelt.com,
Anton Johansson <anjo@rev.ng>
Subject: [PATCH v5 05/25] target/riscv: Fix size of badaddr and bins
Date: Mon, 3 Nov 2025 18:11:48 +0100 [thread overview]
Message-ID: <20251103171208.24355-6-anjo@rev.ng> (raw)
In-Reply-To: <20251103171208.24355-1-anjo@rev.ng>
Fix these fields to 64 bits as they cannot be made smaller. Also make
sure stores to these fields from TCG are 64 bits in size to avoid
incorrect values on big endian hosts.
Signed-off-by: Anton Johansson <anjo@rev.ng>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Acked-by: Alistair Francis <alistair.francis@wdc.com>
---
target/riscv/cpu.h | 4 ++--
target/riscv/machine.c | 2 +-
target/riscv/translate.c | 6 ++++--
target/riscv/insn_trans/trans_privileged.c.inc | 2 +-
4 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h
index a55d4ac690..77dd0ad6e4 100644
--- a/target/riscv/cpu.h
+++ b/target/riscv/cpu.h
@@ -234,8 +234,8 @@ struct CPUArchState {
uint8_t frm;
float_status fp_status;
- target_ulong badaddr;
- target_ulong bins;
+ uint64_t badaddr;
+ uint64_t bins;
target_ulong guest_phys_fault_addr;
diff --git a/target/riscv/machine.c b/target/riscv/machine.c
index 07995fb303..b047321073 100644
--- a/target/riscv/machine.c
+++ b/target/riscv/machine.c
@@ -437,7 +437,7 @@ const VMStateDescription vmstate_riscv_cpu = {
VMSTATE_UINT64(env.load_res, RISCVCPU),
VMSTATE_UINT64(env.load_val, RISCVCPU),
VMSTATE_UINT8(env.frm, RISCVCPU),
- VMSTATE_UINTTL(env.badaddr, RISCVCPU),
+ VMSTATE_UINT64(env.badaddr, RISCVCPU),
VMSTATE_UINTTL(env.guest_phys_fault_addr, RISCVCPU),
VMSTATE_UINTTL(env.priv_ver, RISCVCPU),
VMSTATE_UINTTL(env.vext_ver, RISCVCPU),
diff --git a/target/riscv/translate.c b/target/riscv/translate.c
index e82805e178..5eabc7b9dc 100644
--- a/target/riscv/translate.c
+++ b/target/riscv/translate.c
@@ -265,7 +265,7 @@ static void generate_exception(DisasContext *ctx, RISCVException excp)
static void gen_exception_illegal(DisasContext *ctx)
{
- tcg_gen_st_i32(tcg_constant_i32(ctx->opcode), tcg_env,
+ tcg_gen_st_i64(tcg_constant_i64(ctx->opcode), tcg_env,
offsetof(CPURISCVState, bins));
if (ctx->virt_inst_excp) {
generate_exception(ctx, RISCV_EXCP_VIRT_INSTRUCTION_FAULT);
@@ -276,7 +276,9 @@ static void gen_exception_illegal(DisasContext *ctx)
static void gen_exception_inst_addr_mis(DisasContext *ctx, TCGv target)
{
- tcg_gen_st_tl(target, tcg_env, offsetof(CPURISCVState, badaddr));
+ TCGv_i64 ext = tcg_temp_new_i64();
+ tcg_gen_extu_tl_i64(ext, target);
+ tcg_gen_st_i64(ext, tcg_env, offsetof(CPURISCVState, badaddr));
generate_exception(ctx, RISCV_EXCP_INST_ADDR_MIS);
}
diff --git a/target/riscv/insn_trans/trans_privileged.c.inc b/target/riscv/insn_trans/trans_privileged.c.inc
index 8a62b4cfcd..a8eaccef67 100644
--- a/target/riscv/insn_trans/trans_privileged.c.inc
+++ b/target/riscv/insn_trans/trans_privileged.c.inc
@@ -68,7 +68,7 @@ static bool trans_ebreak(DisasContext *ctx, arg_ebreak *a)
if (pre == 0x01f01013 && ebreak == 0x00100073 && post == 0x40705013) {
generate_exception(ctx, RISCV_EXCP_SEMIHOST);
} else {
- tcg_gen_st_tl(tcg_constant_tl(ebreak_addr), tcg_env,
+ tcg_gen_st_i64(tcg_constant_i64(ebreak_addr), tcg_env,
offsetof(CPURISCVState, badaddr));
generate_exception(ctx, RISCV_EXCP_BREAKPOINT);
}
--
2.51.0
next prev parent reply other threads:[~2025-11-03 17:12 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-03 17:11 [PATCH v5 00/25] single-binary: Make riscv cpu.h target independent Anton Johansson via
2025-11-03 17:11 ` [PATCH v5 01/25] target/riscv: Fix size of gpr and gprh Anton Johansson via
2025-11-03 17:11 ` [PATCH v5 02/25] target/riscv: Fix size of vector CSRs Anton Johansson via
2025-11-03 17:11 ` [PATCH v5 03/25] target/riscv: Fix size of pc, load_[val|res] Anton Johansson via
2025-11-03 17:11 ` [PATCH v5 04/25] target/riscv: Fix size of frm and fflags Anton Johansson via
2025-11-03 17:11 ` Anton Johansson via [this message]
2025-11-03 17:11 ` [PATCH v5 06/25] target/riscv: Fix size of guest_phys_fault_addr Anton Johansson via
2025-11-03 17:11 ` [PATCH v5 07/25] target/riscv: Fix size of priv_ver and vext_ver Anton Johansson via
2025-11-03 17:11 ` [PATCH v5 08/25] target/riscv: Fix size of retxh Anton Johansson via
2025-11-03 17:11 ` [PATCH v5 09/25] target/riscv: Fix size of ssp Anton Johansson via
2025-11-03 17:11 ` [PATCH v5 10/25] target/riscv: Fix size of excp_uw2 Anton Johansson via
2025-11-03 17:11 ` [PATCH v5 11/25] target/riscv: Fix size of sw_check_code Anton Johansson via
2025-11-03 17:11 ` [PATCH v5 12/25] target/riscv: Fix size of priv Anton Johansson via
2025-11-03 17:11 ` [PATCH v5 13/25] target/riscv: Fix size of gei fields Anton Johansson via
2025-11-03 17:11 ` [PATCH v5 14/25] target/riscv: Fix size of [m|s|vs]iselect fields Anton Johansson via
2025-11-03 17:11 ` [PATCH v5 15/25] target/riscv: Fix arguments to board IMSIC emulation callbacks Anton Johansson via
2025-11-03 17:11 ` [PATCH v5 16/25] target/riscv: Fix size of irq_overflow_left Anton Johansson via
2025-11-03 17:12 ` [PATCH v5 17/25] target/riscv: Indent PMUFixedCtrState correctly Anton Johansson via
2025-11-03 17:12 ` [PATCH v5 18/25] target/riscv: Replace target_ulong in riscv_cpu_get_trap_name() Anton Johansson via
2025-11-03 17:12 ` [PATCH v5 19/25] target/riscv: Replace target_ulong in riscv_ctr_add_entry() Anton Johansson via
2025-11-03 17:12 ` [PATCH v5 20/25] target/riscv: Fix size of trigger data Anton Johansson via
2025-11-03 17:12 ` [PATCH v5 21/25] target/riscv: Fix size of mseccfg Anton Johansson via
2025-11-03 17:12 ` [PATCH v5 22/25] target/riscv: Move debug.h include away from cpu.h Anton Johansson via
2025-11-03 17:12 ` [PATCH v5 23/25] target/riscv: Move CSR declarations to separate csr.h header Anton Johansson via
2025-11-03 17:12 ` [PATCH v5 24/25] target/riscv: Introduce externally facing CSR access functions Anton Johansson via
2025-11-03 17:12 ` [PATCH v5 25/25] target/riscv: Make pmp.h target_ulong agnostic Anton Johansson via
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=20251103171208.24355-6-anjo@rev.ng \
--to=qemu-devel@nongnu.org \
--cc=alistair.francis@wdc.com \
--cc=anjo@rev.ng \
--cc=palmer@dabbelt.com \
--cc=philmd@linaro.org \
--cc=pierrick.bouvier@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).