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
12struct kernel_args;
13
14
15class TranslationMapPhysicalPageMapper {
16public:
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
26class ARMPhysicalPageMapper : public VMPhysicalPageMapper {
27public:
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