svn commit: r324299 - in stable/11/sys/i386: i386 include
Konstantin Belousov
kib at FreeBSD.org
Thu Oct 5 11:00:06 UTC 2017
Author: kib
Date: Thu Oct 5 11:00:04 2017
New Revision: 324299
URL: https://svnweb.freebsd.org/changeset/base/324299
Log:
MFC r324079:
Do not return from interrupt using the POP_FRAME;iret instruction
sequence, always jump to doreti.
Modified:
stable/11/sys/i386/i386/apic_vector.s
stable/11/sys/i386/include/asmacros.h
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/sys/i386/i386/apic_vector.s
==============================================================================
--- stable/11/sys/i386/i386/apic_vector.s Thu Oct 5 10:47:04 2017 (r324298)
+++ stable/11/sys/i386/i386/apic_vector.s Thu Oct 5 11:00:04 2017 (r324299)
@@ -189,8 +189,7 @@ IDTVEC(xen_intr_upcall)
SUPERALIGN_TEXT
invltlb_ret:
call as_lapic_eoi
- POP_FRAME
- iret
+ jmp doreti
SUPERALIGN_TEXT
IDTVEC(invltlb)
@@ -274,10 +273,8 @@ IDTVEC(cpustop)
call as_lapic_eoi
call cpustop_handler
+ jmp doreti
- POP_FRAME
- iret
-
/*
* Executed by a CPU when it receives an IPI_SUSPEND from another CPU.
*/
@@ -290,10 +287,8 @@ IDTVEC(cpususpend)
call as_lapic_eoi
call cpususpend_handler
+ jmp doreti
- POP_FRAME
- jmp doreti_iret
-
/*
* Executed by a CPU when it receives a RENDEZVOUS IPI from another CPU.
*
@@ -314,7 +309,6 @@ IDTVEC(rendezvous)
call smp_rendezvous_action
call as_lapic_eoi
- POP_FRAME
- iret
+ jmp doreti
#endif /* SMP */
Modified: stable/11/sys/i386/include/asmacros.h
==============================================================================
--- stable/11/sys/i386/include/asmacros.h Thu Oct 5 10:47:04 2017 (r324298)
+++ stable/11/sys/i386/include/asmacros.h Thu Oct 5 11:00:04 2017 (r324299)
@@ -153,13 +153,6 @@
pushl $0 ; \
movw %fs,(%esp)
-#define POP_FRAME \
- popl %fs ; \
- popl %es ; \
- popl %ds ; \
- popal ; \
- addl $4+4,%esp
-
/*
* Access per-CPU data.
*/
More information about the svn-src-stable-11
mailing list