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