1/* @title: Higher Half Direct Mapping */
2#pragma once
3#include <global.h>
4#include <types/types.h>
5
6bool hhdm_vaddr_in_range(vaddr_t vaddr);
7bool hhdm_paddr_in_range(paddr_t paddr);
8bool hhdm_ptr_in_range(void *ptr);
9
10static inline vaddr_t hhdm_paddr_to_vaddr(paddr_t p) {
11 return p + global.hhdm_offset;
12}
13
14static inline paddr_t hhdm_vaddr_to_paddr(vaddr_t v) {
15 return v - global.hhdm_offset;
16}
17
18static inline paddr_t hhdm_ptr_to_paddr(const void *ptr) {
19 return hhdm_vaddr_to_paddr(v: (vaddr_t) ptr);
20}
21
22static inline void *hhdm_paddr_to_ptr(paddr_t p) {
23 return (void *) hhdm_paddr_to_vaddr(p);
24}
25