summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Shalayeff <mickey@cvs.openbsd.org>2006-11-15 14:40:51 +0000
committerMichael Shalayeff <mickey@cvs.openbsd.org>2006-11-15 14:40:51 +0000
commitc886977765a0093363bde1a8795c13df730ee285 (patch)
tree990b7df4cc9e8a457ce6e60f3db330b9e3e29947
parente1f870cf54dd6152220af8075a0f9a6a5bce5cfa (diff)
do not go processing normal interrupts after ipi.
this is to avoid spins at high spl especialy on cpu0. other local interrupts (timer and softint) still do also pending interrupts processing. niklas@ ok
-rw-r--r--sys/arch/i386/i386/apicvec.s6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/arch/i386/i386/apicvec.s b/sys/arch/i386/i386/apicvec.s
index 48a3f8e4f5a..aa6ee91a1fb 100644
--- a/sys/arch/i386/i386/apicvec.s
+++ b/sys/arch/i386/i386/apicvec.s
@@ -1,4 +1,4 @@
-/* $OpenBSD: apicvec.s,v 1.7 2006/06/12 04:41:30 gwk Exp $ */
+/* $OpenBSD: apicvec.s,v 1.8 2006/11/15 14:40:50 mickey Exp $ */
/* $NetBSD: apicvec.s,v 1.1.2.2 2000/02/21 21:54:01 sommerfeld Exp $ */
/*-
@@ -63,7 +63,9 @@ XINTR(ipi):
ioapic_asm_ack()
sti /* safe to take interrupts.. */
call _C_LABEL(i386_ipi_handler)
- jmp _C_LABEL(Xdoreti)
+ cli
+ popl CPL
+ INTRFASTEXIT
#endif
/*