- for (boundary = PAGE_SIZE; boundary <= KERNEL_STACK_SIZE; )
- boundary <<= 1;
-
- stack_addr_mask = boundary - 1;
-
- if (kmem_suballoc(kernel_map, &stacks, (boundary * (2 * THREAD_MAX + 64)),
- FALSE, VM_FLAGS_ANYWHERE, &stack_map) != KERN_SUCCESS)
- panic("stack_init: kmem_suballoc");
-
- map_addr = vm_map_min(stack_map);
- if (vm_map_enter(stack_map, &map_addr, vm_map_round_page(PAGE_SIZE), 0, (VM_MAKE_TAG(VM_MEMORY_STACK) | VM_FLAGS_FIXED),
- VM_OBJECT_NULL, 0, FALSE, VM_PROT_NONE, VM_PROT_NONE, VM_INHERIT_DEFAULT) != KERN_SUCCESS)
- panic("stack_init: vm_map_enter");