1 /* 2 * Copyright 2007, Haiku Inc. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * François Revol <revol@free.fr> 7 */ 8 9 #include <arch/cpu.h> 10 11 #include <arch_030_mmu.h> 12 13 #define ARCH_M68K_MMU_TYPE 68030 14 15 #include "arch_vm_translation_map_impl.cpp" 16 17 static void 18 set_pgdir(void *rt) 19 { 20 long_page_directory_entry entry; 21 *(uint64 *)&entry = DFL_PAGEENT_VAL; 22 entry.type = DT_ROOT; 23 entry.addr = TA_TO_PREA(((addr_t)rt)); 24 25 asm volatile( \ 26 "pmove (%0),%%srp\n" \ 27 "pmove (%0),%%crp\n" \ 28 : : "a"((uint64 *)&entry)); 29 30 } 31 32 33 struct m68k_vm_ops m68030_vm_ops = { 34 _m68k_translation_map_get_pgdir, 35 m68k_vm_translation_map_init_map, 36 m68k_vm_translation_map_init_kernel_map_post_sem, 37 m68k_vm_translation_map_init, 38 m68k_vm_translation_map_init_post_area, 39 m68k_vm_translation_map_init_post_sem, 40 m68k_vm_translation_map_early_map, 41 /*m68k_vm_translation_map_*/early_query, 42 set_pgdir, 43 #if 0 44 m68k_map_address_range, 45 m68k_unmap_address_range, 46 m68k_remap_address_range 47 #endif 48 m68k_vm_translation_map_is_kernel_page_accessible 49 }; 50