summaryrefslogtreecommitdiffstats
path: root/sys/i386/isa/apic_ipl.s
diff options
context:
space:
mode:
authortegge <tegge@FreeBSD.org>1997-12-15 02:18:35 +0000
committertegge <tegge@FreeBSD.org>1997-12-15 02:18:35 +0000
commitba494eff3a511b2f5c5d9bbc02686772b9ed4de7 (patch)
tree6d2e4d72fd7140f16dc511d497a2d2acfcae6f26 /sys/i386/isa/apic_ipl.s
parentda6ab2349a36aff5f17c3d322976dace8fa64ac7 (diff)
downloadFreeBSD-src-ba494eff3a511b2f5c5d9bbc02686772b9ed4de7.zip
FreeBSD-src-ba494eff3a511b2f5c5d9bbc02686772b9ed4de7.tar.gz
Add support for low resolution SMP kernel profiling.
- A nonprofiling version of s_lock (called s_lock_np) is used by mcount. - When profiling is active, more registers are clobbered in seemingly simple assembly routines. This means that some callers needed to save/restore extra registers. - The stack pointer must have space for a 'fake' return address in idle, to avoid stack underflow.
Diffstat (limited to 'sys/i386/isa/apic_ipl.s')
-rw-r--r--sys/i386/isa/apic_ipl.s6
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/i386/isa/apic_ipl.s b/sys/i386/isa/apic_ipl.s
index e0c6027..7635445 100644
--- a/sys/i386/isa/apic_ipl.s
+++ b/sys/i386/isa/apic_ipl.s
@@ -22,7 +22,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: apic_ipl.s,v 1.35 1997/09/07 19:23:45 smp Exp smp $
+ * $Id: apic_ipl.s,v 1.16 1997/09/07 22:02:28 fsmp Exp $
*/
@@ -137,7 +137,9 @@ splz_unpend:
je splz_next /* "can't happen" */
cmpl $NHWI,%ecx
jae splz_swi
+ pushl %ecx
AICPL_UNLOCK
+ popl %ecx
/*
* We would prefer to call the intr handler directly here but that
@@ -158,7 +160,9 @@ splz_swi:
pushl %eax
orl imasks(,%ecx,4),%eax
movl %eax,_cpl
+ pushl %edx
AICPL_UNLOCK
+ popl %edx
call %edx
AICPL_LOCK
popl %eax
OpenPOWER on IntegriCloud