#ifndef _JOVE_ARCH_PAGE_H #define _JOVE_ARCH_PAGE_H 1 #define PAGE_SHIFT (12) #define PAGE_SIZE (1 << PAGE_SHIFT) #define PAGE_MASK (PAGE_SIZE - 1) #ifdef __x86_64__ #include "x86_64/page.h" #endif typedef struct page_mapping_flags { char present : 1; char writeable : 1; char useraccess : 1; char executable : 1; } page_flags_t; typedef struct page_mapping { uintptr_t phys; page_flags_t pf; } page_mapping_t; typedef intmax_t pdid_t; page_directory_t *pd_new(void); page_directory_t *pd_dup(page_directory_t *pd); page_directory_t *pd_get(pdid_t id); void pd_switch(page_directory_t *pd); #endif