summaryrefslogtreecommitdiffstats
path: root/sys/sparc64
diff options
context:
space:
mode:
authormarius <marius@FreeBSD.org>2010-10-14 21:34:53 +0000
committermarius <marius@FreeBSD.org>2010-10-14 21:34:53 +0000
commitd4dfd1db594fda2eb1069f82b45d735613569ef0 (patch)
treeacca79c1c1e65bc7a8e156c64f6d9bd7ed7b4ce6 /sys/sparc64
parente71ea3cf24d77db22db46ba9b15734567b291204 (diff)
downloadFreeBSD-src-d4dfd1db594fda2eb1069f82b45d735613569ef0.zip
FreeBSD-src-d4dfd1db594fda2eb1069f82b45d735613569ef0.tar.gz
- In the spirit of r212559 add a comment describing what will eventually
lower the PIL. - Just as with the AP ensure that the (S)TICK timer(s) are in a known state when starting BSPs.
Diffstat (limited to 'sys/sparc64')
-rw-r--r--sys/sparc64/sparc64/mp_machdep.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/sys/sparc64/sparc64/mp_machdep.c b/sys/sparc64/sparc64/mp_machdep.c
index 29c7434..5a4bba6 100644
--- a/sys/sparc64/sparc64/mp_machdep.c
+++ b/sys/sparc64/sparc64/mp_machdep.c
@@ -433,6 +433,12 @@ cpu_mp_bootstrap(struct pcpu *pc)
*/
cache_enable(pc->pc_impl);
+ /*
+ * Clear (S)TICK timer(s) (including NPT) and ensure they are stopped.
+ */
+ tick_clear(pc->pc_impl);
+ tick_stop(pc->pc_impl);
+
/* Lock the kernel TSB in the TLB. */
pmap_map_tsb();
@@ -445,7 +451,11 @@ cpu_mp_bootstrap(struct pcpu *pc)
/* Initialize global registers. */
cpu_setregs(pc);
- /* Enable interrupts. */
+ /*
+ * Enable interrupts.
+ * Note that the PIL we be lowered indirectly via sched_throw(NULL)
+ * when fake spinlock held by the idle thread eventually is released.
+ */
wrpr(pstate, 0, PSTATE_KERNEL);
smp_cpus++;
OpenPOWER on IntegriCloud