xref: /haiku/src/system/kernel/arch/arm/paging/arm_physical_page_mapper.h (revision 22440f4105cafc95cc1d49f9bc65bb395c527d86)
1 /*
2  * Copyright 2008-2010, Ingo Weinhold, ingo_weinhold@gmx.de.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef KERNEL_ARCH_ARM_PAGING_ARM_PHYSICAL_PAGE_MAPPER_H
6 #define KERNEL_ARCH_ARM_PAGING_ARM_PHYSICAL_PAGE_MAPPER_H
7 
8 
9 #include <vm/VMTranslationMap.h>
10 
11 
12 struct kernel_args;
13 
14 
15 class TranslationMapPhysicalPageMapper {
16 public:
17 	virtual						~TranslationMapPhysicalPageMapper() { }
18 
19 	virtual	void				Delete() = 0;
20 
21 	virtual	void*				GetPageTableAt(phys_addr_t physicalAddress) = 0;
22 		// Must be invoked with thread pinned to current CPU.
23 };
24 
25 
26 class ARMPhysicalPageMapper : public VMPhysicalPageMapper {
27 public:
28 	virtual	status_t			CreateTranslationMapPhysicalPageMapper(
29 									TranslationMapPhysicalPageMapper** _mapper)
30 										= 0;
31 
32 	virtual	void*				InterruptGetPageTableAt(
33 									phys_addr_t physicalAddress) = 0;
34 };
35 
36 
37 #endif	// KERNEL_ARCH_ARM_PAGING_ARM_PHYSICAL_PAGE_MAPPER_H
38