diff options
author | Xiang W <wxjstz@126.com> | 2022-11-24 06:16:03 +0300 |
---|---|---|
committer | Anup Patel <anup@brainfault.org> | 2022-12-04 18:46:45 +0300 |
commit | 74e20293c45634048d2a3ab045e8531bca904818 (patch) | |
tree | 615592fe8339c09537b746ca507d5e51a08f426c /lib | |
parent | 49b0e355e6586dbb55bc8bb4d3b073f3e692d765 (diff) | |
download | opensbi-74e20293c45634048d2a3ab045e8531bca904818.tar.xz |
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>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/sbi/sbi_domain.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/sbi/sbi_domain.c b/lib/sbi/sbi_domain.c index f24a8e5..fec9074 100644 --- a/lib/sbi/sbi_domain.c +++ b/lib/sbi/sbi_domain.c @@ -105,7 +105,7 @@ bool sbi_domain_check_addr(const struct sbi_domain *dom, unsigned long addr, unsigned long mode, unsigned long access_flags) { - bool mmio = FALSE; + bool rmmio, mmio = FALSE; struct sbi_domain_memregion *reg; 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) ? rstart + ((1UL << reg->order) - 1) : -1UL; if (rstart <= addr && addr <= rend) { - if ((mmio && !(rflags & SBI_DOMAIN_MEMREGION_MMIO)) || - (!mmio && (rflags & SBI_DOMAIN_MEMREGION_MMIO))) + rmmio = (rflags & SBI_DOMAIN_MEMREGION_MMIO) ? TRUE : FALSE; + if (mmio != rmmio) return FALSE; return ((rflags & rwx) == rwx) ? TRUE : FALSE; } |