diff options
Diffstat (limited to 'sys/powerpc/aim/uma_machdep.c')
-rw-r--r-- | sys/powerpc/aim/uma_machdep.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/sys/powerpc/aim/uma_machdep.c b/sys/powerpc/aim/uma_machdep.c index 89d092a..dc03a26 100644 --- a/sys/powerpc/aim/uma_machdep.c +++ b/sys/powerpc/aim/uma_machdep.c @@ -35,9 +35,13 @@ __FBSDID("$FreeBSD$"); #include <sys/sysctl.h> #include <vm/vm.h> #include <vm/vm_page.h> +#include <vm/vm_kern.h> #include <vm/vm_pageout.h> +#include <vm/vm_extern.h> +#include <vm/uma.h> #include <vm/uma.h> #include <vm/uma_int.h> +#include <machine/md_var.h> #include <machine/vmparam.h> static int hw_uma_mdpages; @@ -51,6 +55,13 @@ uma_small_alloc(uma_zone_t zone, int bytes, u_int8_t *flags, int wait) void *va; vm_page_t m; int pflags; + + if (!hw_direct_map) { + *flags = UMA_SLAB_KMEM; + va = (void *)kmem_malloc(kmem_map, bytes, wait); + + return va; + } *flags = UMA_SLAB_PRIV; if ((wait & (M_NOWAIT|M_USE_RESERVE)) == M_NOWAIT) @@ -83,6 +94,12 @@ uma_small_free(void *mem, int size, u_int8_t flags) { vm_page_t m; + if (!hw_direct_map) { + kmem_free(kmem_map, (vm_offset_t)mem, size); + + return; + } + m = PHYS_TO_VM_PAGE((u_int32_t)mem); m->wire_count--; vm_page_free(m); |