From: Anton Johansson via <qemu-devel@nongnu.org>
To: qemu-devel@nongnu.org
Cc: pierrick.bouvier@linaro.org, philmd@linaro.org,
richard.henderson@linaro.org, alistair.francis@wdc.com,
palmer@dabbelt.com
Subject: [PATCH v2 13/33] target/riscv: Fix size of badaddr and bins
Date: Wed, 1 Oct 2025 09:32:46 +0200 [thread overview]
Message-ID: <20251001073306.28573-14-anjo@rev.ng> (raw)
In-Reply-To: <20251001073306.28573-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>
---
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 f1875c6d99..9e3b6b6879 100644
--- a/target/riscv/cpu.h
+++ b/target/riscv/cpu.h
@@ -233,8 +233,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 62d103c09e..7aafe5f5dd 100644
--- a/target/riscv/machine.c
+++ b/target/riscv/machine.c
@@ -412,7 +412,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 b856792d3b..339ef91f6b 100644
--- a/target/riscv/translate.c
+++ b/target/riscv/translate.c
@@ -252,7 +252,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);
@@ -263,7 +263,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-10-01 7:33 UTC|newest]
Thread overview: 99+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-01 7:32 [PATCH v2 00/33] single-binary: Make riscv cpu.h target independent Anton Johansson via
2025-10-01 7:32 ` [PATCH v2 01/33] target/riscv: Use 32 bits for misa extensions Anton Johansson via
2025-10-01 7:34 ` Philippe Mathieu-Daudé
2025-10-02 1:56 ` Alistair Francis
2025-10-02 18:31 ` Pierrick Bouvier
2025-10-01 7:32 ` [PATCH v2 02/33] target/riscv: Fix size of trivial CPUArchState fields Anton Johansson via
2025-10-02 1:57 ` Alistair Francis
2025-10-02 18:31 ` Pierrick Bouvier
2025-10-01 7:32 ` [PATCH v2 03/33] target/riscv: Fix size of mhartid Anton Johansson via
2025-10-01 7:38 ` Philippe Mathieu-Daudé
2025-10-01 8:28 ` Anton Johansson via
2025-10-02 18:34 ` Pierrick Bouvier
2025-10-01 7:32 ` [PATCH v2 04/33] target/riscv: Bugfix riscv_pmu_ctr_get_fixed_counters_val() Anton Johansson via
2025-10-02 18:50 ` Pierrick Bouvier
2025-10-02 23:34 ` Alistair Francis
2025-10-07 11:08 ` Anton Johansson via
2025-10-15 2:55 ` Alistair Francis
2025-10-15 9:58 ` Anton Johansson via
2025-10-16 4:01 ` Alistair Francis
2025-10-17 14:24 ` Anton Johansson via
2025-10-23 1:54 ` Alistair Francis
2025-10-01 7:32 ` [PATCH v2 05/33] target/riscv: Combine mhpmevent and mhpmeventh Anton Johansson via
2025-10-01 7:39 ` Philippe Mathieu-Daudé
2025-10-02 19:09 ` Pierrick Bouvier
2025-10-02 23:52 ` Alistair Francis
2025-10-02 19:08 ` Pierrick Bouvier
2025-10-02 19:33 ` Pierrick Bouvier
2025-10-02 23:55 ` Alistair Francis
2025-10-07 11:29 ` Anton Johansson via
2025-10-14 11:25 ` Anton Johansson via
2025-10-01 7:32 ` [PATCH v2 06/33] target/riscv: Combine mcyclecfg and mcyclecfgh Anton Johansson via
2025-10-02 19:13 ` Pierrick Bouvier
2025-10-03 0:05 ` Alistair Francis
2025-10-01 7:32 ` [PATCH v2 07/33] target/riscv: Combine minstretcfg and minstretcfgh Anton Johansson via
2025-10-02 19:14 ` Pierrick Bouvier
2025-10-03 0:06 ` Alistair Francis
2025-10-01 7:32 ` [PATCH v2 08/33] target/riscv: Combine mhpmcounter and mhpmcounterh Anton Johansson via
2025-10-02 19:24 ` Pierrick Bouvier
2025-10-02 19:25 ` Pierrick Bouvier
2025-10-01 7:32 ` [PATCH v2 09/33] target/riscv: Fix size of gpr and gprh Anton Johansson via
2025-10-01 7:42 ` Philippe Mathieu-Daudé
2025-10-03 9:00 ` Anton Johansson via
2025-10-01 7:32 ` [PATCH v2 10/33] target/riscv: Fix size of vector CSRs Anton Johansson via
2025-10-02 19:42 ` Pierrick Bouvier
2025-10-01 7:32 ` [PATCH v2 11/33] target/riscv: Fix size of pc, load_[val|res] Anton Johansson via
2025-10-02 19:54 ` Pierrick Bouvier
2025-10-03 12:43 ` Anton Johansson via
2025-10-01 7:32 ` [PATCH v2 12/33] target/riscv: Fix size of frm and fflags Anton Johansson via
2025-10-02 19:57 ` Pierrick Bouvier
2025-10-01 7:32 ` Anton Johansson via [this message]
2025-10-02 20:02 ` [PATCH v2 13/33] target/riscv: Fix size of badaddr and bins Pierrick Bouvier
2025-10-01 7:32 ` [PATCH v2 14/33] target/riscv: Fix size of guest_phys_fault_addr Anton Johansson via
2025-10-02 20:03 ` Pierrick Bouvier
2025-10-01 7:32 ` [PATCH v2 15/33] target/riscv: Fix size of priv_ver and vext_ver Anton Johansson via
2025-10-02 20:03 ` Pierrick Bouvier
2025-10-01 7:32 ` [PATCH v2 16/33] target/riscv: Fix size of retxh Anton Johansson via
2025-10-02 20:05 ` Pierrick Bouvier
2025-10-01 7:32 ` [PATCH v2 17/33] target/riscv: Fix size of ssp Anton Johansson via
2025-10-02 20:06 ` Pierrick Bouvier
2025-10-01 7:32 ` [PATCH v2 18/33] target/riscv: Fix size of excp_uw2 Anton Johansson via
2025-10-02 20:06 ` Pierrick Bouvier
2025-10-01 7:32 ` [PATCH v2 19/33] target/riscv: Fix size of sw_check_code Anton Johansson via
2025-10-02 20:07 ` Pierrick Bouvier
2025-10-01 7:32 ` [PATCH v2 20/33] target/riscv: Fix size of priv Anton Johansson via
2025-10-02 20:07 ` Pierrick Bouvier
2025-10-01 7:32 ` [PATCH v2 21/33] target/riscv: Fix size of gei fields Anton Johansson via
2025-10-02 20:08 ` Pierrick Bouvier
2025-10-01 7:32 ` [PATCH v2 22/33] target/riscv: Fix size of [m|s|vs]iselect fields Anton Johansson via
2025-10-02 20:09 ` Pierrick Bouvier
2025-10-01 7:32 ` [PATCH v2 23/33] target/riscv: Fix arguments to board IMSIC emulation callbacks Anton Johansson via
2025-10-02 20:15 ` Pierrick Bouvier
2025-10-01 7:32 ` [PATCH v2 24/33] target/riscv: Fix size of irq_overflow_left Anton Johansson via
2025-10-02 20:15 ` Pierrick Bouvier
2025-10-01 7:32 ` [PATCH v2 25/33] target/riscv: Indent PMUFixedCtrState correctly Anton Johansson via
2025-10-01 7:43 ` Philippe Mathieu-Daudé
2025-10-02 20:15 ` Pierrick Bouvier
2025-10-01 7:32 ` [PATCH v2 26/33] target/riscv: Replace target_ulong in riscv_cpu_get_trap_name() Anton Johansson via
2025-10-01 7:43 ` Philippe Mathieu-Daudé
2025-10-02 20:15 ` Pierrick Bouvier
2025-10-01 7:33 ` [PATCH v2 27/33] target/riscv: Replace target_ulong in riscv_ctr_add_entry() Anton Johansson via
2025-10-01 7:44 ` Philippe Mathieu-Daudé
2025-10-02 20:19 ` Pierrick Bouvier
2025-10-01 7:33 ` [PATCH v2 28/33] target/riscv: Fix size of trigger data Anton Johansson via
2025-10-01 7:46 ` Philippe Mathieu-Daudé
2025-10-02 20:19 ` Pierrick Bouvier
2025-10-01 7:33 ` [PATCH v2 29/33] target/riscv: Fix size of mseccfg Anton Johansson via
2025-10-01 7:46 ` Philippe Mathieu-Daudé
2025-10-02 20:20 ` Pierrick Bouvier
2025-10-01 7:33 ` [PATCH v2 30/33] target/riscv: Move debug.h include away from cpu.h Anton Johansson via
2025-10-02 20:21 ` Pierrick Bouvier
2025-10-03 12:52 ` Anton Johansson via
2025-10-01 7:33 ` [PATCH v2 31/33] target/riscv: Move CSR declarations to separate csr.h header Anton Johansson via
2025-10-02 20:22 ` Pierrick Bouvier
2025-10-01 7:33 ` [PATCH v2 32/33] target/riscv: Introduce externally facing CSR access functions Anton Johansson via
2025-10-02 20:24 ` Pierrick Bouvier
2025-10-01 7:33 ` [PATCH v2 33/33] target/riscv: Make pmp.h target_ulong agnostic Anton Johansson via
2025-10-01 7:49 ` Philippe Mathieu-Daudé
2025-10-03 12:57 ` Anton Johansson via
2025-10-02 20:23 ` Pierrick Bouvier
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=20251001073306.28573-14-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 \
--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).