aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/sbi/sbi_fwft.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/sbi/sbi_fwft.c b/lib/sbi/sbi_fwft.c
index aff087f..595819b 100644
--- a/lib/sbi/sbi_fwft.c
+++ b/lib/sbi/sbi_fwft.c
@@ -84,10 +84,12 @@ static int fwft_misaligned_delegation_supported(struct fwft_config *conf)
static int fwft_set_misaligned_delegation(struct fwft_config *conf,
unsigned long value)
{
- if (value)
+ if (value == 1)
csr_set(CSR_MEDELEG, MIS_DELEG);
- else
+ else if (value == 0)
csr_clear(CSR_MEDELEG, MIS_DELEG);
+ else
+ return SBI_EINVAL;
return SBI_OK;
}
@@ -111,18 +113,20 @@ static int fwft_adue_supported(struct fwft_config *conf)
static int fwft_set_adue(struct fwft_config *conf, unsigned long value)
{
- if (value)
+ if (value == 1)
#if __riscv_xlen == 32
csr_set(CSR_MENVCFGH, ENVCFG_ADUE >> 32);
#else
csr_set(CSR_MENVCFG, ENVCFG_ADUE);
#endif
- else
+ else if (value == 0)
#if __riscv_xlen == 32
csr_clear(CSR_MENVCFGH, ENVCFG_ADUE >> 32);
#else
csr_clear(CSR_MENVCFG, ENVCFG_ADUE);
#endif
+ else
+ return SBI_EINVAL;
return SBI_OK;
}