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_M68K_PAGING_M68K_PHYSICAL_PAGE_MAPPER_H
6#define KERNEL_ARCH_M68K_PAGING_M68K_PHYSICAL_PAGE_MAPPER_H
7
8
9#include <vm/VMTranslationMap.h>
10
11
12struct kernel_args;
13struct vm_translation_map_ops;
14
15
16class TranslationMapPhysicalPageMapper {
17public:
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
27class M68KPhysicalPageMapper : public VMPhysicalPageMapper {
28public:
29	virtual						~M68KPhysicalPageMapper();
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_M68K_PAGING_M68K_PHYSICAL_PAGE_MAPPER_H
41