diff options
author | dillon <dillon@FreeBSD.org> | 2000-06-06 15:28:00 +0000 |
---|---|---|
committer | dillon <dillon@FreeBSD.org> | 2000-06-06 15:28:00 +0000 |
commit | 44bb24d5ce91167c673c276c05871ebaf6bbc8cd (patch) | |
tree | 0a62f0cef565208847f124fbd62a8cc34306d1b0 /sys | |
parent | aeaf778a36fd11e1ee4c364801601c6fcb364067 (diff) | |
download | FreeBSD-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.S | 13 | ||||
-rw-r--r-- | sys/i386/i386/apic_vector.s | 13 | ||||
-rw-r--r-- | sys/i386/isa/apic_vector.s | 13 |
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 ; \ |