summaryrefslogtreecommitdiff
path: root/emulators/kqemu-kmod-devel/files/patch-z-kqemu-freebsd.c
blob: 3839f51de5c6d415956346e905b0d63dc63bf241 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
--- kqemu-freebsd.c~	2014-02-07 20:00:33.656255395 +0200
+++ kqemu-freebsd.c	2014-02-08 08:43:19.209100708 +0200
@@ -105,17 +105,29 @@
  */
 struct kqemu_page *CDECL kqemu_alloc_zeroed_page(unsigned long *ppage_index)
 {
+#if __FreeBSD_version < 1000030
     pmap_t pmap;
+#endif
     vm_offset_t va;
     vm_paddr_t pa;
 
+#if __FreeBSD_version >= 1000030
+    va = kmem_malloc(kernel_arena, PAGE_SIZE, M_ZERO | M_WAITOK);
+#else
     va = kmem_alloc(kernel_map, PAGE_SIZE);
+#endif
+
     if (va == 0) {
 	kqemu_log("kqemu_alloc_zeroed_page: NULL\n");
 	return NULL;
     }
+
+#if __FreeBSD_version >= 1000030
+    pa = vtophys(va);
+#else
     pmap = vm_map_pmap(kernel_map);
     pa = pmap_extract(pmap, va);
+#endif
     /* kqemu_log("kqemu_alloc_zeroed_page: %08x\n", pa); */
     *ppage_index = pa >> PAGE_SHIFT;
     return (struct kqemu_page *)va;
@@ -125,7 +137,11 @@
 {
     if (kqemu_debug > 0)
     	kqemu_log("kqemu_free_page(%p)\n", page);
+#if __FreeBSD_version >= 1000030
+    kmem_free(kernel_arena, (vm_offset_t) page, PAGE_SIZE);
+#else
     kmem_free(kernel_map, (vm_offset_t) page, PAGE_SIZE);
+#endif
 }
 
 /* return kernel address of the physical page page_index */