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