xref: /haiku/src/system/kernel/arch/x86/paging/pae/X86PagingStructuresPAE.h (revision 1e60bdeab63fa7a57bc9a55b032052e95a18bd2c)
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