summaryrefslogtreecommitdiffstats
path: root/sys/i386/isa/apic_vector.s
diff options
context:
space:
mode:
authorfsmp <fsmp@FreeBSD.org>1997-07-15 02:49:21 +0000
committerfsmp <fsmp@FreeBSD.org>1997-07-15 02:49:21 +0000
commitdcd393b384428c3c50da2d959f5eecf113ea32c3 (patch)
tree57104cc2ce69d75155e6fd54f61962ce4f69d85b /sys/i386/isa/apic_vector.s
parente8a415386f1da7c5292cc35bee3f56bd6329744e (diff)
downloadFreeBSD-src-dcd393b384428c3c50da2d959f5eecf113ea32c3.zip
FreeBSD-src-dcd393b384428c3c50da2d959f5eecf113ea32c3.tar.gz
Tighten up asm code for EOI access.
Diffstat (limited to 'sys/i386/isa/apic_vector.s')
-rw-r--r--sys/i386/isa/apic_vector.s17
1 files changed, 6 insertions, 11 deletions
diff --git a/sys/i386/isa/apic_vector.s b/sys/i386/isa/apic_vector.s
index d42b6e6..926ce8f 100644
--- a/sys/i386/isa/apic_vector.s
+++ b/sys/i386/isa/apic_vector.s
@@ -1,6 +1,6 @@
/*
* from: vector.s, 386BSD 0.1 unknown origin
- * $Id: apic_vector.s,v 1.9 1997/07/13 00:18:33 smp Exp smp $
+ * $Id: apic_vector.s,v 1.10 1997/07/15 00:08:01 smp Exp smp $
*/
@@ -24,8 +24,7 @@
movl IOAPIC_WINDOW(%ecx),%eax ; /* current value */ \
orl $IOART_INTMASK,%eax ; /* set the mask */ \
movl %eax,IOAPIC_WINDOW(%ecx) ; /* new value */ \
- movl $lapic_eoi, %eax ; \
- movl $0, (%eax) ; \
+ movl $0, lapic_eoi ; \
orl $IRQ_BIT(irq_num), _ipending ; \
REL_MPLOCK ; /* SMP release global lock */ \
popl %es ; \
@@ -74,8 +73,7 @@ IDTVEC(vec_name) ; \
GET_MPLOCK ; /* SMP Spin lock */ \
pushl _intr_unit + (irq_num) * 4 ; \
call *_intr_handler + (irq_num) * 4 ; /* do the work ASAP */ \
- movl $lapic_eoi, %eax ; \
- movl $0, (%eax) ; \
+ movl $0, lapic_eoi ; \
addl $4,%esp ; \
incl _cnt+V_INTR ; /* book-keeping can wait */ \
movl _intr_countp + (irq_num) * 4,%eax ; \
@@ -134,8 +132,7 @@ IDTVEC(vec_name) ; \
movl %ax,%es ; \
GET_MPLOCK ; /* SMP Spin lock */ \
MAYBE_MASK_IRQ(irq_num) ; \
- movl $lapic_eoi, %eax ; \
- movl $0, (%eax) ; \
+ movl $0, lapic_eoi ; \
movl _cpl,%eax ; \
testl $IRQ_BIT(irq_num), %eax ; \
jne 3f ; \
@@ -208,9 +205,8 @@ _Xinvltlb:
movl %cr3, %eax /* invalidate the TLB */
movl %eax, %cr3
- movl $lapic_eoi, %eax
ss /* stack segment, avoid %ds load */
- movl $0, (%eax) /* End Of Interrupt to APIC */
+ movl $0, lapic_eoi /* End Of Interrupt to APIC */
popl %eax
iret
@@ -261,8 +257,7 @@ _Xcpustop:
ASMPOSTCODE_HI(0x40)
- movl $lapic_eoi, %eax
- movl $0, (%eax) /* End Of Interrupt to APIC */
+ movl $0, lapic_eoi /* End Of Interrupt to APIC */
popl %ds /* restore previous data segment */
popl %eax
OpenPOWER on IntegriCloud