[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 04/23] target/loongarch: Perform sign extension for IOCSR read
From: |
Jiaxun Yang |
Subject: |
[PATCH v2 04/23] target/loongarch: Perform sign extension for IOCSR reads |
Date: |
Thu, 26 Dec 2024 21:19:35 +0000 |
As per LoongArch Reference Manual - Volume 1: Basic Architecture,
4.2.2. IOCSR Access Instructions:
The reading value is described as "writes it to the general register rd
after symbolic expansion." which means it should be sign extended.
Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
---
target/loongarch/tcg/iocsr_helper.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/target/loongarch/tcg/iocsr_helper.c
b/target/loongarch/tcg/iocsr_helper.c
index
b6916f53d20ca133f0000e773685cb94240bafe2..db30de2523fff01bcc8923eb12c7fca7bedca7bf
100644
--- a/target/loongarch/tcg/iocsr_helper.c
+++ b/target/loongarch/tcg/iocsr_helper.c
@@ -17,20 +17,20 @@
uint64_t helper_iocsrrd_b(CPULoongArchState *env, target_ulong r_addr)
{
- return address_space_ldub(env->address_space_iocsr, r_addr,
- GET_MEMTXATTRS(env), NULL);
+ return (int8_t)address_space_ldub(env->address_space_iocsr, r_addr,
+ GET_MEMTXATTRS(env), NULL);
}
uint64_t helper_iocsrrd_h(CPULoongArchState *env, target_ulong r_addr)
{
- return address_space_lduw(env->address_space_iocsr, r_addr,
- GET_MEMTXATTRS(env), NULL);
+ return (int16_t)address_space_lduw(env->address_space_iocsr, r_addr,
+ GET_MEMTXATTRS(env), NULL);
}
uint64_t helper_iocsrrd_w(CPULoongArchState *env, target_ulong r_addr)
{
- return address_space_ldl(env->address_space_iocsr, r_addr,
- GET_MEMTXATTRS(env), NULL);
+ return (int32_t)address_space_ldl(env->address_space_iocsr, r_addr,
+ GET_MEMTXATTRS(env), NULL);
}
uint64_t helper_iocsrrd_d(CPULoongArchState *env, target_ulong r_addr)
--
2.43.0
- [PATCH v2 00/23] target/loongarch: LoongArch32 fixes 1, Jiaxun Yang, 2024/12/26
- [PATCH v2 01/23] target/loongarch: Enable rotr.w/rotri.w for LoongArch32, Jiaxun Yang, 2024/12/26
- [PATCH v2 02/23] target/loongarch: Fix address generation for gen_sc, Jiaxun Yang, 2024/12/26
- [PATCH v2 03/23] target/loongarch: Fix PGD CSR for LoongArch32, Jiaxun Yang, 2024/12/26
- [PATCH v2 04/23] target/loongarch: Perform sign extension for IOCSR reads,
Jiaxun Yang <=
- [PATCH v2 05/23] target/loongarch: Use target_ulong for iocsrrd helper results, Jiaxun Yang, 2024/12/26
- [PATCH v2 06/23] target/loongarch: Store some uint64_t values as target_ulong, Jiaxun Yang, 2024/12/26
- [PATCH v2 07/23] target/loongarch: Cast address to 64bit before DMW_64_VSEG shift, Jiaxun Yang, 2024/12/26
- [PATCH v2 08/23] target/loongarch: Fix some modifiers for log formatting, Jiaxun Yang, 2024/12/26