diff options
author | Niklas Hallqvist <niklas@cvs.openbsd.org> | 2001-12-04 00:00:37 +0000 |
---|---|---|
committer | Niklas Hallqvist <niklas@cvs.openbsd.org> | 2001-12-04 00:00:37 +0000 |
commit | 9bf62191c2a2e2d5aeb7537858d4a8164ea9ebcc (patch) | |
tree | 2bdc2c594e23844416a8dc77a6c5a4b0f5517b74 /sys/arch/i386/isa/icu.s | |
parent | 1354afe4470c3aeace3d9c3ea0857e8ba5499de4 (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.s | 20 |
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) |