target/riscv: Remove the hardcoded SSTATUS_SD macro
This also ensures that the SD bit is not writable. Signed-off-by: Alistair Francis <alistair.francis@wdc.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Message-id: 9ea842309f0fd7adff172790f5b5fc058b40f2f1.1619234854.git.alistair.francis@wdc.com
This commit is contained in:
parent
3820602f80
commit
5f10e6d895
@ -403,12 +403,6 @@
|
||||
#define SSTATUS32_SD 0x80000000
|
||||
#define SSTATUS64_SD 0x8000000000000000ULL
|
||||
|
||||
#if defined(TARGET_RISCV32)
|
||||
#define SSTATUS_SD SSTATUS32_SD
|
||||
#elif defined(TARGET_RISCV64)
|
||||
#define SSTATUS_SD SSTATUS64_SD
|
||||
#endif
|
||||
|
||||
/* hstatus CSR bits */
|
||||
#define HSTATUS_VSBE 0x00000020
|
||||
#define HSTATUS_GVA 0x00000040
|
||||
|
@ -459,7 +459,7 @@ static const target_ulong delegable_excps =
|
||||
(1ULL << (RISCV_EXCP_STORE_GUEST_AMO_ACCESS_FAULT));
|
||||
static const target_ulong sstatus_v1_10_mask = SSTATUS_SIE | SSTATUS_SPIE |
|
||||
SSTATUS_UIE | SSTATUS_UPIE | SSTATUS_SPP | SSTATUS_FS | SSTATUS_XS |
|
||||
SSTATUS_SUM | SSTATUS_MXR | SSTATUS_SD;
|
||||
SSTATUS_SUM | SSTATUS_MXR;
|
||||
static const target_ulong sip_writable_mask = SIP_SSIP | MIP_USIP | MIP_UEIP;
|
||||
static const target_ulong hip_writable_mask = MIP_VSSIP;
|
||||
static const target_ulong hvip_writable_mask = MIP_VSSIP | MIP_VSTIP | MIP_VSEIP;
|
||||
@ -788,6 +788,13 @@ static RISCVException read_sstatus(CPURISCVState *env, int csrno,
|
||||
target_ulong *val)
|
||||
{
|
||||
target_ulong mask = (sstatus_v1_10_mask);
|
||||
|
||||
if (riscv_cpu_is_32bit(env)) {
|
||||
mask |= SSTATUS32_SD;
|
||||
} else {
|
||||
mask |= SSTATUS64_SD;
|
||||
}
|
||||
|
||||
*val = env->mstatus & mask;
|
||||
return RISCV_EXCP_NONE;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user