summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkettenis <kettenis@openbsd.org>2007-11-09 16:13:52 +0000
committerkettenis <kettenis@openbsd.org>2007-11-09 16:13:52 +0000
commit4c0e0115130855b371eb0998b0ef3b567da91eb5 (patch)
tree7b901d6b069ee77cb9af0dc55ddef92e3caeb1d7
parentAn umask is octet not decimal. This means we cannot use strtonum() to (diff)
downloadwireguard-openbsd-4c0e0115130855b371eb0998b0ef3b567da91eb5.tar.xz
wireguard-openbsd-4c0e0115130855b371eb0998b0ef3b567da91eb5.zip
Use the interrupt stack as the initial stack for spinning up secondary CPUs.
Inspired by a change in NetBSD pointed out by miod@.
-rw-r--r--sys/arch/sparc64/sparc64/cpu.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/sys/arch/sparc64/sparc64/cpu.c b/sys/arch/sparc64/sparc64/cpu.c
index f0bb472d1d0..eda5c156a5e 100644
--- a/sys/arch/sparc64/sparc64/cpu.c
+++ b/sys/arch/sparc64/sparc64/cpu.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cpu.c,v 1.28 2007/10/28 12:34:05 kettenis Exp $ */
+/* $OpenBSD: cpu.c,v 1.29 2007/11/09 16:13:52 kettenis Exp $ */
/* $NetBSD: cpu.c,v 1.13 2001/05/26 21:27:15 chs Exp $ */
/*
@@ -100,7 +100,7 @@ struct cpu_info *
alloc_cpuinfo(int node)
{
paddr_t pa0, pa;
- vaddr_t va, va0, kstack;
+ vaddr_t va, va0;
vsize_t sz = 8 * PAGE_SIZE;
int portid;
struct cpu_info *cpi, *ci;
@@ -133,10 +133,6 @@ alloc_cpuinfo(int node)
memset((void *)va0, 0, sz);
- kstack = uvm_km_alloc (kernel_map, USPACE);
- if (kstack == 0)
- panic("alloc_cpuinfo: unable to allocate pcb");
-
/*
* Initialize cpuinfo structure.
*
@@ -154,11 +150,10 @@ alloc_cpuinfo(int node)
cpi->ci_spinup = NULL;
#endif
- cpi->ci_initstack = (void *)(kstack + USPACE);
+ cpi->ci_initstack = (void *)EINTSTACK;
cpi->ci_paddr = pa0;
cpi->ci_self = cpi;
cpi->ci_node = node;
- cpi->ci_cpcb = (struct pcb *)kstack;
sched_init_cpu(cpi);