1 /* 2 * Copyright 2010, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * Distributed under the terms of the MIT License. 4 */ 5 #ifndef KERNEL_ARCH_M68K_PAGING_M68K_PAGING_METHOD_H 6 #define KERNEL_ARCH_M68K_PAGING_M68K_PAGING_METHOD_H 7 8 9 #include <SupportDefs.h> 10 11 12 struct kernel_args; 13 struct VMPhysicalPageMapper; 14 struct VMTranslationMap; 15 16 17 class M68KPagingMethod { 18 public: 19 virtual ~M68KPagingMethod(); 20 21 virtual status_t Init(kernel_args* args, 22 VMPhysicalPageMapper** _physicalPageMapper) 23 = 0; 24 virtual status_t InitPostArea(kernel_args* args) = 0; 25 26 virtual status_t CreateTranslationMap(bool kernel, 27 VMTranslationMap** _map) = 0; 28 29 virtual status_t MapEarly(kernel_args* args, 30 addr_t virtualAddress, 31 phys_addr_t physicalAddress, 32 uint8 attributes, 33 phys_addr_t (*get_free_page)(kernel_args*)) 34 = 0; 35 36 virtual bool IsKernelPageAccessible(addr_t virtualAddress, 37 uint32 protection) = 0; 38 39 virtual void SetPageRoot(uint32 pageRoot) = 0; 40 }; 41 42 43 extern M68KPagingMethod* gM68KPagingMethod; 44 45 46 #endif // KERNEL_ARCH_M68K_PAGING_M68K_PAGING_METHOD_H 47