Changeset View
Changeset View
Standalone View
Standalone View
sys/powerpc/aim/slb.c
Show First 20 Lines • Show All 494 Lines • ▼ Show 20 Lines | slb_uma_real_alloc(uma_zone_t zone, vm_size_t bytes, int domain, | ||||
static vm_offset_t realmax = 0; | static vm_offset_t realmax = 0; | ||||
void *va; | void *va; | ||||
vm_page_t m; | vm_page_t m; | ||||
if (realmax == 0) | if (realmax == 0) | ||||
realmax = platform_real_maxaddr(); | realmax = platform_real_maxaddr(); | ||||
*flags = UMA_SLAB_PRIV; | *flags = UMA_SLAB_PRIV; | ||||
m = vm_page_alloc_contig_domain(NULL, 0, domain, | m = vm_page_alloc_noobj_contig_domain(domain, malloc2vm_flags(wait) | | ||||
malloc2vm_flags(wait) | VM_ALLOC_NOOBJ | VM_ALLOC_WIRED, | VM_ALLOC_WIRED, 1, 0, realmax, PAGE_SIZE, PAGE_SIZE, | ||||
1, 0, realmax, PAGE_SIZE, PAGE_SIZE, VM_MEMATTR_DEFAULT); | VM_MEMATTR_DEFAULT); | ||||
if (m == NULL) | if (m == NULL) | ||||
return (NULL); | return (NULL); | ||||
if (hw_direct_map) | if (hw_direct_map) | ||||
va = (void *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m)); | va = (void *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m)); | ||||
else { | else { | ||||
va = (void *)(VM_PAGE_TO_PHYS(m) | DMAP_BASE_ADDRESS); | va = (void *)(VM_PAGE_TO_PHYS(m) | DMAP_BASE_ADDRESS); | ||||
pmap_kenter((vm_offset_t)va, VM_PAGE_TO_PHYS(m)); | pmap_kenter((vm_offset_t)va, VM_PAGE_TO_PHYS(m)); | ||||
} | } | ||||
if ((wait & M_ZERO) && (m->flags & PG_ZERO) == 0) | |||||
bzero(va, PAGE_SIZE); | |||||
return (va); | return (va); | ||||
} | } | ||||
static void | static void | ||||
slb_zone_init(void *dummy) | slb_zone_init(void *dummy) | ||||
{ | { | ||||
slbt_zone = uma_zcreate("SLB tree node", sizeof(struct slbtnode), | slbt_zone = uma_zcreate("SLB tree node", sizeof(struct slbtnode), | ||||
▲ Show 20 Lines • Show All 104 Lines • Show Last 20 Lines |