summaryrefslogtreecommitdiff
path: root/linux-user
diff options
context:
space:
mode:
authorAnton Johansson <anjo@rev.ng>2026-05-20 14:54:02 +0200
committerAlistair Francis <alistair.francis@wdc.com>2026-06-15 13:10:15 +1000
commite59bd5cdb7d28a8ea0ee0b3ddabad17b296386a5 (patch)
tree43a5ce419044b7a66e369e6459f23a4d07c7348c /linux-user
parentcfc1d1ade17c598999e5bd1283e6c0fa9e5fe7b5 (diff)
downloadqemu-e59bd5cdb7d28a8ea0ee0b3ddabad17b296386a5.tar.gz
qemu-e59bd5cdb7d28a8ea0ee0b3ddabad17b296386a5.zip
target/riscv: Introduce externally facing CSR access functions
Convert riscv_csr_[read|write]() into target_ulong angnostic CSR access functions that can be safely used from outside of target/ without knowledge of the target register size. Replace the 4 existing CSR accesses in hw/ and linux-user/. Signed-off-by: Anton Johansson <anjo@rev.ng> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Message-ID: <20260520125406.28693-25-anjo@rev.ng> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Diffstat (limited to 'linux-user')
-rw-r--r--linux-user/riscv/signal.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/linux-user/riscv/signal.c b/linux-user/riscv/signal.c
index 358fa1d82d..9d5ba300e4 100644
--- a/linux-user/riscv/signal.c
+++ b/linux-user/riscv/signal.c
@@ -90,7 +90,8 @@ static void setup_sigcontext(struct target_sigcontext *sc, CPURISCVState *env)
__put_user(env->fpr[i], &sc->fpr[i]);
}
- uint32_t fcsr = riscv_csr_read(env, CSR_FCSR);
+ uint64_t fcsr;
+ riscv_csr_read_i64(env, CSR_FCSR, &fcsr);
__put_user(fcsr, &sc->fcsr);
}
@@ -159,7 +160,7 @@ static void restore_sigcontext(CPURISCVState *env, struct target_sigcontext *sc)
uint32_t fcsr;
__get_user(fcsr, &sc->fcsr);
- riscv_csr_write(env, CSR_FCSR, fcsr);
+ riscv_csr_write_i64(env, CSR_FCSR, fcsr);
}
static void restore_ucontext(CPURISCVState *env, struct target_ucontext *uc)