summaryrefslogtreecommitdiff
path: root/sys/arch/i386/isa/icu.s
diff options
context:
space:
mode:
authorNiklas Hallqvist <niklas@cvs.openbsd.org>2001-12-04 00:00:37 +0000
committerNiklas Hallqvist <niklas@cvs.openbsd.org>2001-12-04 00:00:37 +0000
commit9bf62191c2a2e2d5aeb7537858d4a8164ea9ebcc (patch)
tree2bdc2c594e23844416a8dc77a6c5a4b0f5517b74 /sys/arch/i386/isa/icu.s
parent1354afe4470c3aeace3d9c3ea0857e8ba5499de4 (diff)
New try at a level based irq system.
Diffstat (limited to 'sys/arch/i386/isa/icu.s')
-rw-r--r--sys/arch/i386/isa/icu.s20
1 files changed, 11 insertions, 9 deletions
diff --git a/sys/arch/i386/isa/icu.s b/sys/arch/i386/isa/icu.s
index 8be1d64520b..57b11456f29 100644
--- a/sys/arch/i386/isa/icu.s
+++ b/sys/arch/i386/isa/icu.s
@@ -1,4 +1,4 @@
-/* $OpenBSD: icu.s,v 1.17 2001/11/18 20:46:49 aaron Exp $ */
+/* $OpenBSD: icu.s,v 1.18 2001/12/04 00:00:36 niklas Exp $ */
/* $NetBSD: icu.s,v 1.45 1996/01/07 03:59:34 mycroft Exp $ */
/*-
@@ -45,7 +45,7 @@ _C_LABEL(imen):
ALIGN_TEXT
_C_LABEL(splhigh):
- movl $-1,%eax
+ movl $IPL_HIGH,%eax
xchgl %eax,_C_LABEL(cpl)
ret
@@ -72,8 +72,9 @@ IDTVEC(spllower)
pushl %edi
movl _C_LABEL(cpl),%ebx # save priority
movl $1f,%esi # address to resume loop at
-1: movl %ebx,%eax
- notl %eax
+1: movl %ebx,%eax # get cpl
+ shrl $4,%eax # find its mask.
+ movl _C_LABEL(iunmask)(,%eax,4),%eax
andl _C_LABEL(ipending),%eax
jz 2f
bsfl %eax,%eax
@@ -97,8 +98,9 @@ IDTVEC(doreti)
popl %ebx # get previous priority
movl %ebx,_C_LABEL(cpl)
movl $1f,%esi # address to resume loop at
-1: movl %ebx,%eax
- notl %eax
+1: movl %ebx,%eax # get cpl
+ shrl $4,%eax # find its mask
+ movl _C_LABEL(iunmask)(,%eax,4),%eax
andl _C_LABEL(ipending),%eax
jz 2f
bsfl %eax,%eax # slow, but not worth optimizing
@@ -132,7 +134,7 @@ IDTVEC(doreti)
IDTVEC(softtty)
#if NPCCOM > 0
- leal SIR_TTYMASK(%ebx),%eax
+ movl $IPL_SOFTTTY,%eax
movl %eax,_C_LABEL(cpl)
call _C_LABEL(comsoft)
movl %ebx,_C_LABEL(cpl)
@@ -147,7 +149,7 @@ IDTVEC(softtty)
1:
IDTVEC(softnet)
- leal SIR_NETMASK(%ebx),%eax
+ movl $IPL_SOFTNET,%eax
movl %eax,_C_LABEL(cpl)
xorl %edi,%edi
xchgl _C_LABEL(netisr),%edi
@@ -157,7 +159,7 @@ IDTVEC(softnet)
#undef DONETISR
IDTVEC(softclock)
- leal SIR_CLOCKMASK(%ebx),%eax
+ movl $IPL_SOFTCLOCK,%eax
movl %eax,_C_LABEL(cpl)
call _C_LABEL(softclock)
movl %ebx,_C_LABEL(cpl)