1*599f30f9SFrançois Revol /* 2*599f30f9SFrançois Revol * Copyright 2008-2010, Ingo Weinhold, ingo_weinhold@gmx.de. 3*599f30f9SFrançois Revol * Distributed under the terms of the MIT License. 4*599f30f9SFrançois Revol */ 5*599f30f9SFrançois Revol #ifndef KERNEL_ARCH_M68K_PAGING_M68K_PHYSICAL_PAGE_MAPPER_H 6*599f30f9SFrançois Revol #define KERNEL_ARCH_M68K_PAGING_M68K_PHYSICAL_PAGE_MAPPER_H 7*599f30f9SFrançois Revol 8*599f30f9SFrançois Revol 9*599f30f9SFrançois Revol #include <vm/VMTranslationMap.h> 10*599f30f9SFrançois Revol 11*599f30f9SFrançois Revol 12*599f30f9SFrançois Revol struct kernel_args; 13*599f30f9SFrançois Revol struct vm_translation_map_ops; 14*599f30f9SFrançois Revol 15*599f30f9SFrançois Revol 16*599f30f9SFrançois Revol class TranslationMapPhysicalPageMapper { 17*599f30f9SFrançois Revol public: 18*599f30f9SFrançois Revol virtual ~TranslationMapPhysicalPageMapper(); 19*599f30f9SFrançois Revol 20*599f30f9SFrançois Revol virtual void Delete() = 0; 21*599f30f9SFrançois Revol 22*599f30f9SFrançois Revol virtual void* GetPageTableAt(phys_addr_t physicalAddress) = 0; 23*599f30f9SFrançois Revol // Must be invoked with thread pinned to current CPU. 24*599f30f9SFrançois Revol }; 25*599f30f9SFrançois Revol 26*599f30f9SFrançois Revol 27*599f30f9SFrançois Revol class M68KPhysicalPageMapper : public VMPhysicalPageMapper { 28*599f30f9SFrançois Revol public: 29*599f30f9SFrançois Revol virtual ~M68KPhysicalPageMapper(); 30*599f30f9SFrançois Revol 31*599f30f9SFrançois Revol virtual status_t CreateTranslationMapPhysicalPageMapper( 32*599f30f9SFrançois Revol TranslationMapPhysicalPageMapper** _mapper) 33*599f30f9SFrançois Revol = 0; 34*599f30f9SFrançois Revol 35*599f30f9SFrançois Revol virtual void* InterruptGetPageTableAt( 36*599f30f9SFrançois Revol phys_addr_t physicalAddress) = 0; 37*599f30f9SFrançois Revol }; 38*599f30f9SFrançois Revol 39*599f30f9SFrançois Revol 40*599f30f9SFrançois Revol #endif // KERNEL_ARCH_M68K_PAGING_M68K_PHYSICAL_PAGE_MAPPER_H 41