mon_kpfret(): return from a kernel page fault
[akaros.git] / kern / include / pmap.h
index b9ec442..e7c4710 100644 (file)
@@ -40,6 +40,9 @@
        __m_pa; \
 })
 
+#define paddr_low32(p) ((uint32_t)(uintptr_t)PADDR(p))
+#define paddr_high32(p) ((uint32_t)((uint64_t)PADDR(p) >> 32))
+
 /* This macro takes a physical address and returns the corresponding kernel
  * virtual address.  It warns if you pass an invalid physical address. */
 #define KADDR(pa)                                              \
@@ -51,6 +54,7 @@
        (void*TRUSTED) (__m_pa + KERNBASE);                             \
 })
 
+#define KADDR_NOCHECK(pa) ((void*)(pa + KERNBASE))
 #define KBASEADDR(kla) KADDR(PADDR(kla))
 
 extern char (SNT RO bootstacktop)[], (SNT RO bootstack)[];
@@ -143,4 +147,9 @@ static inline ppn_t kva2ppn(void* addr)
        return page2ppn(kva2page(addr));
 }
 
+static inline bool is_kaddr(void *addr)
+{
+       return (uintptr_t)addr >= KERNBASE;
+}
+
 #endif /* !ROS_KERN_PMAP_H */