xref: /haiku/src/system/kernel/arch/arm/paging/arm_physical_page_mapper.h (revision f2b4344867e97c3f4e742a1b4a15e6879644601a)
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 struct vm_translation_map_ops;
14 
15 
16 class TranslationMapPhysicalPageMapper {
17 public:
18 	virtual						~TranslationMapPhysicalPageMapper();
19 
20 	virtual	void				Delete() = 0;
21 
22 	virtual	void*				GetPageTableAt(phys_addr_t physicalAddress) = 0;
23 		// Must be invoked with thread pinned to current CPU.
24 };
25 
26 
27 class ARMPhysicalPageMapper : public VMPhysicalPageMapper {
28 public:
29 	virtual						~ARMPhysicalPageMapper();
30 
31 	virtual	status_t			CreateTranslationMapPhysicalPageMapper(
32 									TranslationMapPhysicalPageMapper** _mapper)
33 										= 0;
34 
35 	virtual	void*				InterruptGetPageTableAt(
36 									phys_addr_t physicalAddress) = 0;
37 };
38 
39 
40 #endif	// KERNEL_ARCH_ARM_PAGING_ARM_PHYSICAL_PAGE_MAPPER_H
41