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_040_mmu.h>
12
13 #define ARCH_M68K_MMU_TYPE 68040
14
15 #include "arch_vm_translation_map_impl.cpp"
16
17 static void
set_pgdir(void * rt)18 set_pgdir(void *rt)
19 {
20 uint32 rp;
21 rp = (uint32)rt & ~((1 << 9) - 1);
22
23 asm volatile( \
24 "movec %0,%%srp\n" \
25 "movec %0,%%urp\n" \
26 : : "d"(rp));
27
28 }
29
30
31 struct m68k_vm_ops m68040_vm_ops = {
32 _m68k_translation_map_get_pgdir,
33 m68k_vm_translation_map_init_map,
34 m68k_vm_translation_map_init_kernel_map_post_sem,
35 m68k_vm_translation_map_init,
36 m68k_vm_translation_map_init_post_area,
37 m68k_vm_translation_map_init_post_sem,
38 m68k_vm_translation_map_early_map,
39 /*m68k_vm_translation_map_*/early_query,
40 set_pgdir,
41 #if 0
42 m68k_map_address_range,
43 m68k_unmap_address_range,
44 m68k_remap_address_range
45 #endif
46 m68k_vm_translation_map_is_kernel_page_accessible
47 };
48