BSD 4_3_Net_2 release
[unix-history] / usr / src / sys / i386 / isa / icu.h
index bd0b8c3..7237237 100644 (file)
@@ -5,9 +5,35 @@
  * This code is derived from software contributed to Berkeley by
  * William Jolitz.
  *
  * This code is derived from software contributed to Berkeley by
  * William Jolitz.
  *
- * %sccs.include.386.c%
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
  *
  *
- *     @(#)icu.h       5.5 (Berkeley) %G%
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *     @(#)icu.h       5.6 (Berkeley) 5/9/91
  */
 
 /*
  */
 
 /*
@@ -41,33 +67,8 @@ extern       unsigned short netmask; /* group of interrupts masked with splimp() */
  * Macro's for interrupt level priority masks (used in interrupt vector entry)
  */
 
  * Macro's for interrupt level priority masks (used in interrupt vector entry)
  */
 
-/* Just mask this interrupt only */
-#define        INTR(a) \
-       pushl   $0 ; \
-       pushl   $ T_ASTFLT ; \
-       pushal ; \
-       push    %ds ; \
-       push    %es ; \
-       movw    $0x10, %ax ; \
-       movw    %ax, %ds ; \
-       movw    %ax,%es ; \
-       incl    _cnt+V_INTR ; \
-       movzwl  _cpl,%eax ; \
-       pushl   %eax ; \
-       pushl   $ a ; \
-       orw     $ IRQ/**/a ,%ax ; \
-       movw    %ax,_cpl ; \
-       orw     _imen,%ax ; \
-       NOP ; \
-       outb    %al,$ IO_ICU1+1 ; \
-       NOP ; \
-       movb    %ah,%al ; \
-       outb    %al,$ IO_ICU2+1 ; \
-       NOP     ; \
-       sti
-
 /* Mask a group of interrupts atomically */
 /* Mask a group of interrupts atomically */
-#define        INTRN(a,b) \
+#define        INTR(unit,mask,offst) \
        pushl   $0 ; \
        pushl   $ T_ASTFLT ; \
        pushal ; \
        pushl   $0 ; \
        pushl   $ T_ASTFLT ; \
        pushal ; \
@@ -77,11 +78,11 @@ extern      unsigned short netmask; /* group of interrupts masked with splimp() */
        movw    %ax, %ds ; \
        movw    %ax,%es ; \
        incl    _cnt+V_INTR ; \
        movw    %ax, %ds ; \
        movw    %ax,%es ; \
        incl    _cnt+V_INTR ; \
+       incl    _isa_intr + offst * 4 ; \
        movzwl  _cpl,%eax ; \
        pushl   %eax ; \
        movzwl  _cpl,%eax ; \
        pushl   %eax ; \
-       pushl   $ a ; \
-       orw     $ IRQ/**/a ,%ax ; \
-       orw     b ,%ax ; \
+       pushl   $ unit ; \
+       orw     mask ,%ax ; \
        movw    %ax,_cpl ; \
        orw     _imen,%ax ; \
        NOP ; \
        movw    %ax,_cpl ; \
        orw     _imen,%ax ; \
        NOP ; \
@@ -90,18 +91,19 @@ extern      unsigned short netmask; /* group of interrupts masked with splimp() */
        movb    %ah,%al ; \
        outb    %al,$ IO_ICU2+1 ; \
        NOP     ; \
        movb    %ah,%al ; \
        outb    %al,$ IO_ICU2+1 ; \
        NOP     ; \
+       inb     $0x84,%al ; \
        sti
 
 /* Interrupt vector exit macros */
 
 /* First eight interrupts (ICU1) */
        sti
 
 /* Interrupt vector exit macros */
 
 /* First eight interrupts (ICU1) */
-#define        INTREXT1        \
+#define        INTREXIT1       \
        movb    $0x20,%al ; \
        outb    %al,$ IO_ICU1 ; \
        jmp     doreti
 
 /* Second eight interrupts (ICU2) */
        movb    $0x20,%al ; \
        outb    %al,$ IO_ICU1 ; \
        jmp     doreti
 
 /* Second eight interrupts (ICU2) */
-#define        INTREXT2        \
+#define        INTREXIT2       \
        movb    $0x20,%al ; \
        outb    %al,$ IO_ICU1 ; \
        outb    %al,$ IO_ICU2 ; \
        movb    $0x20,%al ; \
        outb    %al,$ IO_ICU1 ; \
        outb    %al,$ IO_ICU2 ; \