XenevaOS
Loading...
Searching...
No Matches
paging.h
Go to the documentation of this file.
1
30#ifndef __PAGING_H__
31#define __PAGING_H__
32
33#include <stdint.h>
34
35/* memory attributes*/
36#define PAGE_TABLE_ENTRY_PRESENT (1UL << 0)
37#define PAGE_TABLE_ENTRY_BLOCK (0UL << 1)
38#define PAGE_TABLE_ENTRY_PAGE (1UL << 1)
39#define PAGE_TABLE_ENTRY_AF (1UL << 10)
40#define PAGE_TABLE_ENTRY_SH (3UL << 8)
41#define PAGE_TABLE_ENTRY_SH_NONE (0UL << 8)
42#define PAGE_TABLE_ENTRY_AP_RW (0UL << 6)
43#define PAGE_TABLE_ENTRY_MEMATTR (1UL << 2)
44#define PAGE_TABLE_ENTRY_PXN (1ULL << 53)
45#define PAGE_TABLE_ENTRY_UXN (1ULL << 54)
46#define PAGE_TABLE_ENTRY_DEVICE (0ULL << 2)
47
48#define PAGE_FLAGS \
49 (PAGE_TABLE_ENTRY_PRESENT | PAGE_TABLE_ENTRY_PAGE | PAGE_TABLE_ENTRY_AF | \
50 PAGE_TABLE_ENTRY_SH | PAGE_TABLE_ENTRY_AP_RW | PAGE_TABLE_ENTRY_MEMATTR);
51
52/*
53 * XEPagingInitialize -- initialize paging
54 */
55extern void XEPagingInitialize();
56
57/*
58 * XEPagingMap -- maps a physical address to virtual address
59 * @param virtualAddr -- virtual address
60 * @param physAddr -- physical address
61 */
62extern void XEPagingMap(uint64_t virtualAddr, uint64_t physAddr);
64
65/* Checks if a virtual page is already mapped to prevent overwriting during PE section overlapping */
66extern bool XEPagingIsMapped(uint64_t virtualAddr);
67
68extern void XEMapMMIO(uint64_t* l1_table, uint64_t va, uint64_t pa);
69
70extern void XEPagingCopy();
71#endif
void XEPagingInitialize()
Definition paging.cpp:81
void XEMapMMIO(uint64_t *l1_table, uint64_t va, uint64_t pa)
Definition paging.cpp:68
void XEPagingCopy()
Definition paging.cpp:227
void XEPagingInstallPhysicalDirectMap()
Definition paging.cpp:161
bool XEPagingIsMapped(uint64_t virtualAddr)
Definition paging.cpp:298
bool XEPagingMap(void *vaddr, paddr_t paddr, size_t length, size_t attributes)
Definition paging.cpp:382
COMPILER_DEPENDENT_UINT64 uint64_t
Definition acefiex.h:165