SCCS-vsn: sys/i386/isa/icu.s 5.2
*
* %sccs.include.386.c%
*
*
* %sccs.include.386.c%
*
- * @(#)icu.s 5.1 (Berkeley) %G%
+ * @(#)icu.s 5.2 (Berkeley) %G%
.data
.globl _imen
.globl _cpl
.data
.globl _imen
.globl _cpl
-_cpl: .long 15 # current priority level (all off)
+_cpl: .long 0xffff # current priority level (all off)
_imen: .long 0xffff # interrupt mask enable (all off)
_imen: .long 0xffff # interrupt mask enable (all off)
+ .globl _ttymask
+_ttymask: .long IRQ1+IRQ3+IRQ4
+ .globl _biomask
+_biomask: .long IRQ14+IRQ6
.text
.globl _iml0 # masks off all interrupts
.text
.globl _iml0 # masks off all interrupts
cli # disable interrupts
movw $0xffff,%ax # set new priority level
movw %ax,%dx
cli # disable interrupts
movw $0xffff,%ax # set new priority level
movw %ax,%dx
- orw _imen,%ax # mask off those not enabled yet
+ # orw _imen,%ax # mask off those not enabled yet
movw %ax,%cx
NOP
outb %al,$0x21 /* update icu's */
movw %ax,%cx
NOP
outb %al,$0x21 /* update icu's */
NOP
movzwl _cpl,%eax # return old priority
movw %dx,_cpl # set new priority level
NOP
movzwl _cpl,%eax # return old priority
movw %dx,_cpl # set new priority level
-# sti # enable interrupts
+ sti # enable interrupts
ret
.globl _iml1 # mask off all but irq0
ret
.globl _iml1 # mask off all but irq0
_iml1:
_spltty:
cli # disable interrupts
_iml1:
_spltty:
cli # disable interrupts
- movw $0xfffe,%ax # set new priority level
+ # movw $0xfffe,%ax # set new priority level
+ movw _cpl,%ax
+ orw _ttymask,%ax
movw %ax,%dx
orw _imen,%ax # mask off those not enabled yet
movw %ax,%cx
movw %ax,%dx
orw _imen,%ax # mask off those not enabled yet
movw %ax,%cx
NOP
movzwl _cpl,%eax # return old priority
movw %dx,_cpl # set new priority level
NOP
movzwl _cpl,%eax # return old priority
movw %dx,_cpl # set new priority level
-# sti # enable interrupts
+ sti # enable interrupts
ret
.globl _iml8 # mask off all but irq0-1
ret
.globl _iml8 # mask off all but irq0-1
NOP
movzwl _cpl,%eax # return old priority
movw %dx,_cpl # set new priority level
NOP
movzwl _cpl,%eax # return old priority
movw %dx,_cpl # set new priority level
-# sti # enable interrupts
+ sti # enable interrupts
ret
.globl _iml9 # mask off all but irq0-1,8
ret
.globl _iml9 # mask off all but irq0-1,8
_splimp:
_splnet:
cli # disable interrupts
_splimp:
_splnet:
cli # disable interrupts
- movw $0xfef8,%ax # set new priority level
+ # movw $0xfef8,%ax # set new priority level
+ movw $0xffff,%ax # set new priority level
movw %ax,%dx
orw _imen,%ax # mask off those not enabled yet
movw %ax,%cx
movw %ax,%dx
orw _imen,%ax # mask off those not enabled yet
movw %ax,%cx
NOP
movzwl _cpl,%eax # return old priority
movw %dx,_cpl # set new priority level
NOP
movzwl _cpl,%eax # return old priority
movw %dx,_cpl # set new priority level
-# sti # enable interrupts
+ sti # enable interrupts
ret
.globl _iml10 # mask off all but irq0-1,8-9
ret
.globl _iml10 # mask off all but irq0-1,8-9
_iml14:
_splbio:
cli # disable interrupts
_iml14:
_splbio:
cli # disable interrupts
- movw $0xc0f8,%ax # set new priority level
+ movw _cpl,%ax
+ orw _biomask,%ax
+ # movw $0xffff,%ax # set new priority level XXX
+ # movw $0xc0f8,%ax # set new priority level
movw %ax,%dx
orw _imen,%ax # mask off those not enabled yet
movw %ax,%cx
movw %ax,%dx
orw _imen,%ax # mask off those not enabled yet
movw %ax,%cx
NOP
movzwl _cpl,%eax # return old priority
movw %dx,_cpl # set new priority level
NOP
movzwl _cpl,%eax # return old priority
movw %dx,_cpl # set new priority level
-# sti # enable interrupts
+ sti # enable interrupts
ret
.globl _iml15 # mask off all but irq0-1,8-14
ret
.globl _iml15 # mask off all but irq0-1,8-14
NOP
movzwl _cpl,%eax # return old priority
movw %dx,_cpl # set new priority level
NOP
movzwl _cpl,%eax # return old priority
movw %dx,_cpl # set new priority level
-# sti # enable interrupts
+ sti # enable interrupts
ret
.globl _imlnone # masks off no interrupts
ret
.globl _imlnone # masks off no interrupts
NOP
movzwl _cpl,%eax # return old priority
movw %dx,_cpl # set new priority level
NOP
movzwl _cpl,%eax # return old priority
movw %dx,_cpl # set new priority level
- cmpw $0,%dx # XXX
- jne 1f # XXX