summaryrefslogtreecommitdiff
path: root/arch/x86/machine/pmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/machine/pmap.c')
-rw-r--r--arch/x86/machine/pmap.c34
1 files changed, 15 insertions, 19 deletions
diff --git a/arch/x86/machine/pmap.c b/arch/x86/machine/pmap.c
index f77c6aa5..064b98ce 100644
--- a/arch/x86/machine/pmap.c
+++ b/arch/x86/machine/pmap.c
@@ -21,6 +21,7 @@
#include <assert.h>
#include <errno.h>
#include <stdalign.h>
+#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
@@ -503,22 +504,17 @@ pmap_ap_setup_paging(unsigned int ap_id)
#endif /* CONFIG_X86_PAE */
}
-/*
- * Check address range with regard to physical map.
- */
-#define pmap_assert_range(pmap, start, end) \
-MACRO_BEGIN \
- assert((start) < (end)); \
- assert(((end) <= PMAP_START_DIRECTMAP_ADDRESS) \
- || ((start) >= PMAP_END_DIRECTMAP_ADDRESS)); \
- \
- if ((pmap) == pmap_get_kernel_pmap()) { \
- assert(((start) >= PMAP_START_KMEM_ADDRESS) \
- && ((end) <= PMAP_END_KMEM_ADDRESS)); \
- } else { \
- assert((end) <= PMAP_END_ADDRESS); \
- } \
-MACRO_END
+static bool
+pmap_range_valid(const struct pmap *pmap, uintptr_t start, uintptr_t end)
+{
+ return (start < end)
+ && ((end <= PMAP_START_DIRECTMAP_ADDRESS)
+ || (start >= PMAP_END_DIRECTMAP_ADDRESS))
+ && ((pmap == pmap_get_kernel_pmap())
+ ? ((start >= PMAP_START_KMEM_ADDRESS)
+ && (end <= PMAP_END_KMEM_ADDRESS))
+ : (end <= PMAP_END_ADDRESS));
+}
static inline pmap_pte_t *
pmap_ptp_from_pa(phys_addr_t pa)
@@ -1223,7 +1219,7 @@ pmap_enter(struct pmap *pmap, uintptr_t va, phys_addr_t pa,
va = vm_page_trunc(va);
pa = vm_page_trunc(pa);
- pmap_assert_range(pmap, va, va + PAGE_SIZE);
+ assert(pmap_range_valid(pmap, va, va + PAGE_SIZE));
oplist = pmap_update_oplist_get();
error = pmap_update_oplist_prepare(oplist, pmap);
@@ -1296,7 +1292,7 @@ pmap_remove(struct pmap *pmap, uintptr_t va, const struct cpumap *cpumap)
int error;
va = vm_page_trunc(va);
- pmap_assert_range(pmap, va, va + PAGE_SIZE);
+ assert(pmap_range_valid(pmap, va, va + PAGE_SIZE));
oplist = pmap_update_oplist_get();
error = pmap_update_oplist_prepare(oplist, pmap);
@@ -1347,7 +1343,7 @@ pmap_protect(struct pmap *pmap, uintptr_t va, int prot,
int error;
va = vm_page_trunc(va);
- pmap_assert_range(pmap, va, va + PAGE_SIZE);
+ assert(pmap_range_valid(pmap, va, va + PAGE_SIZE));
oplist = pmap_update_oplist_get();
error = pmap_update_oplist_prepare(oplist, pmap);