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