Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/sparc/sparc lock the kernel around calling interrup...
details: https://anonhg.NetBSD.org/src/rev/4f5f86af4a44
branches: trunk
changeset: 507148:4f5f86af4a44
user: mrg <mrg%NetBSD.org@localhost>
date: Thu Mar 15 03:20:43 2001 +0000
description:
lock the kernel around calling interrupt stubs.
diffstat:
sys/arch/sparc/sparc/locore.s | 17 +++++++++++++++--
1 files changed, 15 insertions(+), 2 deletions(-)
diffs (52 lines):
diff -r b852e49888e7 -r 4f5f86af4a44 sys/arch/sparc/sparc/locore.s
--- a/sys/arch/sparc/sparc/locore.s Thu Mar 15 03:01:39 2001 +0000
+++ b/sys/arch/sparc/sparc/locore.s Thu Mar 15 03:20:43 2001 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: locore.s,v 1.136 2001/03/02 10:27:00 pk Exp $ */
+/* $NetBSD: locore.s,v 1.137 2001/03/15 03:20:43 mrg Exp $ */
/*
* Copyright (c) 1996 Paul Kranenburg
@@ -2161,6 +2161,7 @@
bz slowtrap ! no, go do regular trap
nop
+/* XXXSMP */
/*
* Build a trap frame for kgdb_trap_glue to copy.
* Enable traps but set ipl high so that we will not
@@ -2506,6 +2507,12 @@
st %o0, [%l4 + %l5]
set _C_LABEL(intrhand), %l4 ! %l4 = intrhand[intlev];
ld [%l4 + %l5], %l4
+
+#if defined(MULTIPROCESSOR) && defined(SUN4M) /* XXX */
+ call _C_LABEL(intr_lock_kernel)
+ nop
+#endif
+
b 3f
st %fp, [%sp + CCFSZ + 16]
@@ -2533,7 +2540,12 @@
call _C_LABEL(strayintr) ! strayintr(&intrframe)
add %sp, CCFSZ, %o0
/* all done: restore registers and go return */
-4: mov %l7, %g1
+4:
+#if defined(MULTIPROCESSOR) && defined(SUN4M) /* XXX */
+ call _C_LABEL(intr_unlock_kernel)
+ nop
+#endif
+ mov %l7, %g1
wr %l6, 0, %y
ldd [%sp + CCFSZ + 24], %g2
ldd [%sp + CCFSZ + 32], %g4
@@ -4453,6 +4465,7 @@
mov %g5, %l6 ! %l6 = _idle_u
SET_SP_REDZONE(%l6, %l5)
#endif
+
wr %g0, PSR_S|PSR_ET, %psr ! and then enable traps
call _C_LABEL(exit2) ! exit2(p)
mov %g2, %o0
Home |
Main Index |
Thread Index |
Old Index