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
16struct 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
32private:
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