lib: sbi: Simplified mmio match checking

We simplify the mmio flag matching in sbi_domain_check_addr().

Signed-off-by: Xiang W <wxjstz@126.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
Xiang W
2022-11-24 11:16:03 +08:00
committed by Anup Patel
parent 49b0e355e6
commit 74e20293c4

View File

@@ -105,7 +105,7 @@ bool sbi_domain_check_addr(const struct sbi_domain *dom,
unsigned long addr, unsigned long mode, unsigned long addr, unsigned long mode,
unsigned long access_flags) unsigned long access_flags)
{ {
bool mmio = FALSE; bool rmmio, mmio = FALSE;
struct sbi_domain_memregion *reg; struct sbi_domain_memregion *reg;
unsigned long rstart, rend, rflags, rwx = 0; unsigned long rstart, rend, rflags, rwx = 0;
@@ -130,8 +130,8 @@ bool sbi_domain_check_addr(const struct sbi_domain *dom,
rend = (reg->order < __riscv_xlen) ? rend = (reg->order < __riscv_xlen) ?
rstart + ((1UL << reg->order) - 1) : -1UL; rstart + ((1UL << reg->order) - 1) : -1UL;
if (rstart <= addr && addr <= rend) { if (rstart <= addr && addr <= rend) {
if ((mmio && !(rflags & SBI_DOMAIN_MEMREGION_MMIO)) || rmmio = (rflags & SBI_DOMAIN_MEMREGION_MMIO) ? TRUE : FALSE;
(!mmio && (rflags & SBI_DOMAIN_MEMREGION_MMIO))) if (mmio != rmmio)
return FALSE; return FALSE;
return ((rflags & rwx) == rwx) ? TRUE : FALSE; return ((rflags & rwx) == rwx) ? TRUE : FALSE;
} }