summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authordillon <dillon@FreeBSD.org>2000-06-06 15:28:00 +0000
committerdillon <dillon@FreeBSD.org>2000-06-06 15:28:00 +0000
commit44bb24d5ce91167c673c276c05871ebaf6bbc8cd (patch)
tree0a62f0cef565208847f124fbd62a8cc34306d1b0 /sys
parentaeaf778a36fd11e1ee4c364801601c6fcb364067 (diff)
downloadFreeBSD-src-44bb24d5ce91167c673c276c05871ebaf6bbc8cd.zip
FreeBSD-src-44bb24d5ce91167c673c276c05871ebaf6bbc8cd.tar.gz
INTR_TYPE_FAST / FAST_INTR interrupts (currently just serial interrupts)
have their own lock and do not need the MP lock. The SMP cleanup was a little too conservative in MP locking fast interrupts but at least it's trivial to fix. MFC soon. Submitted by: bde
Diffstat (limited to 'sys')
-rw-r--r--sys/amd64/amd64/apic_vector.S13
-rw-r--r--sys/i386/i386/apic_vector.s13
-rw-r--r--sys/i386/isa/apic_vector.s13
3 files changed, 0 insertions, 39 deletions
diff --git a/sys/amd64/amd64/apic_vector.S b/sys/amd64/amd64/apic_vector.S
index c7dde7b..2a7559d 100644
--- a/sys/amd64/amd64/apic_vector.S
+++ b/sys/amd64/amd64/apic_vector.S
@@ -9,17 +9,6 @@
#include "i386/isa/intr_machdep.h"
-/*
- * Interrupts must be enabled while waiting for the MP lock.
- */
-
-#define GET_FAST_INTR_LOCK \
- sti; call _get_mplock; cli
-
-#define REL_FAST_INTR_LOCK \
- movl $_mp_lock, %edx ; /* GIANT_LOCK */ \
- call _MPrellock_edx
-
/* convert an absolute IRQ# into a bitmask */
#define IRQ_BIT(irq_num) (1 << (irq_num))
@@ -48,9 +37,7 @@ IDTVEC(vec_name) ; \
mov %ax,%fs ; \
FAKE_MCOUNT((5+ACTUALLY_PUSHED)*4(%esp)) ; \
pushl _intr_unit + (irq_num) * 4 ; \
- GET_FAST_INTR_LOCK ; \
call *_intr_handler + (irq_num) * 4 ; /* do the work ASAP */ \
- REL_FAST_INTR_LOCK ; \
addl $4, %esp ; \
movl $0, lapic_eoi ; \
lock ; \
diff --git a/sys/i386/i386/apic_vector.s b/sys/i386/i386/apic_vector.s
index c7dde7b..2a7559d 100644
--- a/sys/i386/i386/apic_vector.s
+++ b/sys/i386/i386/apic_vector.s
@@ -9,17 +9,6 @@
#include "i386/isa/intr_machdep.h"
-/*
- * Interrupts must be enabled while waiting for the MP lock.
- */
-
-#define GET_FAST_INTR_LOCK \
- sti; call _get_mplock; cli
-
-#define REL_FAST_INTR_LOCK \
- movl $_mp_lock, %edx ; /* GIANT_LOCK */ \
- call _MPrellock_edx
-
/* convert an absolute IRQ# into a bitmask */
#define IRQ_BIT(irq_num) (1 << (irq_num))
@@ -48,9 +37,7 @@ IDTVEC(vec_name) ; \
mov %ax,%fs ; \
FAKE_MCOUNT((5+ACTUALLY_PUSHED)*4(%esp)) ; \
pushl _intr_unit + (irq_num) * 4 ; \
- GET_FAST_INTR_LOCK ; \
call *_intr_handler + (irq_num) * 4 ; /* do the work ASAP */ \
- REL_FAST_INTR_LOCK ; \
addl $4, %esp ; \
movl $0, lapic_eoi ; \
lock ; \
diff --git a/sys/i386/isa/apic_vector.s b/sys/i386/isa/apic_vector.s
index c7dde7b..2a7559d 100644
--- a/sys/i386/isa/apic_vector.s
+++ b/sys/i386/isa/apic_vector.s
@@ -9,17 +9,6 @@
#include "i386/isa/intr_machdep.h"
-/*
- * Interrupts must be enabled while waiting for the MP lock.
- */
-
-#define GET_FAST_INTR_LOCK \
- sti; call _get_mplock; cli
-
-#define REL_FAST_INTR_LOCK \
- movl $_mp_lock, %edx ; /* GIANT_LOCK */ \
- call _MPrellock_edx
-
/* convert an absolute IRQ# into a bitmask */
#define IRQ_BIT(irq_num) (1 << (irq_num))
@@ -48,9 +37,7 @@ IDTVEC(vec_name) ; \
mov %ax,%fs ; \
FAKE_MCOUNT((5+ACTUALLY_PUSHED)*4(%esp)) ; \
pushl _intr_unit + (irq_num) * 4 ; \
- GET_FAST_INTR_LOCK ; \
call *_intr_handler + (irq_num) * 4 ; /* do the work ASAP */ \
- REL_FAST_INTR_LOCK ; \
addl $4, %esp ; \
movl $0, lapic_eoi ; \
lock ; \
OpenPOWER on IntegriCloud