1 /* 2 * Copyright 2010, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * Distributed under the terms of the MIT License. 4 */ 5 #ifndef KERNEL_ARCH_X86_PAGING_PAE_X86_PAGING_STRUCTURES_PAE_H 6 #define KERNEL_ARCH_X86_PAGING_PAE_X86_PAGING_STRUCTURES_PAE_H 7 8 9 #include "paging/pae/paging.h" 10 #include "paging/X86PagingStructures.h" 11 12 13 #if B_HAIKU_PHYSICAL_BITS == 64 14 15 16 struct X86PagingStructuresPAE : X86PagingStructures { 17 X86PagingStructuresPAE(); 18 virtual ~X86PagingStructuresPAE(); 19 20 void Init(pae_page_directory_pointer_table_entry* 21 virtualPDPT, 22 phys_addr_t physicalPDPT, void* pdptHandle, 23 pae_page_directory_entry* const* 24 virtualPageDirs, 25 const phys_addr_t* physicalPageDirs); 26 27 virtual void Delete(); 28 29 pae_page_directory_entry* const* VirtualPageDirs() const 30 { return fVirtualPageDirs; } 31 32 private: 33 pae_page_directory_pointer_table_entry* fPageDirPointerTable; 34 void* fPageDirPointerTableHandle; 35 pae_page_directory_entry* fVirtualPageDirs[4]; 36 phys_addr_t fPhysicalPageDirs[4]; 37 }; 38 39 40 #endif // B_HAIKU_PHYSICAL_BITS == 64 41 42 43 #endif // KERNEL_ARCH_X86_PAGING_PAE_X86_PAGING_STRUCTURES_PAE_H 44