diff --git a/src/system/kernel/arch/x86/paging/pae/paging.h b/src/system/kernel/arch/x86/paging/pae/paging.h index f14b59d341..b8d72ad423 100644 --- a/src/system/kernel/arch/x86/paging/pae/paging.h +++ b/src/system/kernel/arch/x86/paging/pae/paging.h @@ -12,7 +12,52 @@ #if B_HAIKU_PHYSICAL_BITS == 64 -// TODO:... +// page directory pointer table entry bits +#define X86_PAE_PDPTE_PRESENT 0x0000000000000001LL +#define X86_PAE_PDPTE_WRITE_THROUGH 0x0000000000000008LL +#define X86_PAE_PDPTE_CACHING_DISABLED 0x0000000000000010LL +#define X86_PAE_PDPTE_ADDRESS_MASK 0x000ffffffffff000LL + +// page directory entry bits +#define X86_PAE_PDE_PRESENT 0x0000000000000001LL +#define X86_PAE_PDE_WRITABLE 0x0000000000000002LL +#define X86_PAE_PDE_USER 0x0000000000000004LL +#define X86_PAE_PDE_WRITE_THROUGH 0x0000000000000008LL +#define X86_PAE_PDE_CACHING_DISABLED 0x0000000000000010LL +#define X86_PAE_PDE_ACCESSED 0x0000000000000020LL +#define X86_PAE_PDE_IGNORED1 0x0000000000000040LL +#define X86_PAE_PDE_LARGE_PAGE 0x0000000000000080LL +#define X86_PAE_PDE_IGNORED2 0x0000000000000100LL +#define X86_PAE_PDE_IGNORED3 0x0000000000000200LL +#define X86_PAE_PDE_IGNORED4 0x0000000000000400LL +#define X86_PAE_PDE_IGNORED5 0x0000000000000800LL +#define X86_PAE_PDE_ADDRESS_MASK 0x000ffffffffff000LL +#define X86_PAE_PDE_NOT_EXECUTABLE 0x8000000000000000LL + +// page table entry bits +#define X86_PAE_PTE_PRESENT 0x0000000000000001LL +#define X86_PAE_PTE_WRITABLE 0x0000000000000002LL +#define X86_PAE_PTE_USER 0x0000000000000004LL +#define X86_PAE_PTE_WRITE_THROUGH 0x0000000000000008LL +#define X86_PAE_PTE_CACHING_DISABLED 0x0000000000000010LL +#define X86_PAE_PTE_ACCESSED 0x0000000000000020LL +#define X86_PAE_PTE_DIRTY 0x0000000000000040LL +#define X86_PAE_PTE_PAT 0x0000000000000080LL +#define X86_PAE_PTE_GLOBAL 0x0000000000000100LL +#define X86_PAE_PTE_IGNORED1 0x0000000000000200LL +#define X86_PAE_PTE_IGNORED2 0x0000000000000400LL +#define X86_PAE_PTE_IGNORED3 0x0000000000000800LL +#define X86_PAE_PTE_ADDRESS_MASK 0x000ffffffffff000LL +#define X86_PAE_PTE_NOT_EXECUTABLE 0x8000000000000000LL +#define X86_PAE_PTE_PROTECTION_MASK (X86_PAE_PTE_WRITABLE \ + | X86_PAE_PTE_USER) +#define X86_PAE_PTE_MEMORY_TYPE_MASK (X86_PAE_PTE_WRITE_THROUGH \ + | X86_PAE_PTE_CACHING_DISABLED) + + +typedef uint64 pae_page_directory_pointer_table_entry; +typedef uint64 pae_page_directory_entry; +typedef uint64 pae_page_table_entry; #endif // B_HAIKU_PHYSICAL_BITS == 64