summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Gallatin <gallatin@FreeBSD.org>2001-04-17 14:15:12 +0000
committerAndrew Gallatin <gallatin@FreeBSD.org>2001-04-17 14:15:12 +0000
commited4835b64dcb75cb30aa6a8e901cee67717b9dbd (patch)
tree2b11cc9be830963c08ec22cc1ffb13c66a6491f9
parent2766dc31dafa92834be9b3c1f32a8a4518555e02 (diff)
Notes
-rw-r--r--sys/alpha/alpha/locore.s30
1 files changed, 11 insertions, 19 deletions
diff --git a/sys/alpha/alpha/locore.s b/sys/alpha/alpha/locore.s
index 5f1f1917b0db..81884ad47fec 100644
--- a/sys/alpha/alpha/locore.s
+++ b/sys/alpha/alpha/locore.s
@@ -147,34 +147,26 @@
* be executing on their private idle stack.
*/
NESTED(smp_init_secondary_glue, 1, 0, ra, 0, 0)
- mov pv, globalp
-
- ldiq a0, ALPHA_PSL_IPL_HIGH /* disable all interrupts */
- call_pal PAL_OSF1_swpipl
-
+
br pv, 1f
1: LDGP(pv)
- mov gp, a0
- call_pal PAL_OSF1_wrkgp /* clobbers a0, t0, t8-t11 */
-
- ldiq a0, -2 /* TBIA */
- call_pal PAL_OSF1_tbi
- call_pal PAL_imb
+ call_pal PAL_rdunique /* initialise globalp */
+ mov v0, globalp
ldq a0, GD_IDLEPCBPHYS(globalp) /* switch to idle ctx */
call_pal PAL_OSF1_swpctx
-
- CALL(smp_init_secondary) /* initialise the rest */
- /*
- * After initialising, we start idling for real.
- * We have the kernel lock at this point.
- */
- CALL(cpu_switch) /* never returns */
+ /* Load KGP with current GP. */
+ or gp,zero,a0
+ call_pal PAL_OSF1_wrkgp /* clobbers a0, t0, t8-t11 */
+
+ CALL(smp_init_secondary) /* never returns */
+
+ /* NOTREACHED */
call_pal PAL_halt
-
+
END(smp_init_secondary_glue)
#endif