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