!************************************************************************** !* !* Boot-ROM-Code to load an operating system across a TCP/IP network. !* !* Module: i8259a.inc !* Purpose: Definitions for using i8259A interrupt controllers !* Entries: None !* !************************************************************************** !* !* Copyright (C) 1998-2003 Gero Kuhlmann !* !* This program is free software; you can redistribute it and/or modify !* it under the terms of the GNU General Public License as published by !* the Free Software Foundation; either version 2 of the License, or !* any later version. !* !* This program is distributed in the hope that it will be useful, !* but WITHOUT ANY WARRANTY; without even the implied warranty of !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the !* GNU General Public License for more details. !* !* You should have received a copy of the GNU General Public License !* along with this program; if not, write to the Free Software !* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. !* !* $Id: i8259a.inc,v 1.4 2003/01/25 23:29:40 gkminix Exp $ !* #ifndef _HW_I8259A_INC #define _HW_I8259A_INC ! !************************************************************************** ! ! I/O addresses used by PICs in a typical PC: ! MASTER_CMD equ $20 ! master PIC command port MASTER_IMR equ $21 ! master PIC interrupt mask register SLAVE_CMD equ $A0 ! slave PIC command port SLAVE_IMR equ $A1 ! slave PIC interrupt mask register ! !************************************************************************** ! ! Command codes for i8259A: ! CMD_NS_EOI equ $20 ! non-specific EOI command CMD_S_EOI equ $60 ! specific EOI command CMD_READ_IRR equ $0A ! read IR register CMD_READ_ISR equ $0B ! read IS register CMD_SET_SMM equ $68 ! set special-mask mode CMD_RST_SMM equ $48 ! reset special-mask mode ! !************************************************************************** ! ! Definitions used for handling the redirected slave interrupt on AT and ! higher systems: ! SLAVE_IRQ_MASK equ $04 ! IRQ mask for slave PIC on master PIC SLAVE_IRQ_NUM equ $02 ! IRQ number for slave PIC on master SLAVE_IRQ_REDIR equ $09 ! IRQ number for redirected int 2 ! !************************************************************************** ! ! Interrupt vector ranges with some special meaning: ! ! Hardware interrupts. Not that some master PIC hardware interrupts may ! also be generated by CPU error conditions. ! MIN_MASTER_HWINT equ $08 ! first interrupt vector on master PIC MAX_MASTER_HWINT equ $0F ! last interrupt vector on master PIC MIN_SLAVE_HWINT equ $70 ! first interrupt vector on slave PIC MAX_SLAVE_HWINT equ $77 ! last interrupt vector on slave PIC PIC_IRQ_NUM equ 8 ! number of IRQs per PIC ! !************************************************************************** ! ! Define hardware interrupt vectors, which are usually assigned some ! special meaning in PC/AT compatible systems: ! HWINT_TIMER equ $08 ! hardware timer interrupt HWINT_KBD equ $09 ! keyboard data ready interrupt HWINT_LPT2_XT equ $0A ! LPT2 interrupt on old PC/XT HWINT_SLAVE equ $0A ! slave PIC interrupt on PC/AT HWINT_COM2 equ $0B ! COM2 interrupt HWINT_COM1 equ $0C ! COM1 interrupt HWINT_LPT2_AT equ $0D ! LPT2 interrupt on PC/AT HWINT_HD_XT equ $0D ! hard disk interrupt on old PC/XT HWINT_DISKETTE equ $0E ! diskette driver interrupt HWINT_LPT1 equ $0F ! LPT1 interrupt HWINT_CLOCK equ $70 ! CMOS clock interrupt HWINT_IRQ9 equ $71 ! IRQ 2 hardware interrupt HWINT_MOUSE_PS2 equ $74 ! PS/2 mouse interrupt HWINT_MATHERR equ $75 ! math coprocessor error HWINT_HD_AT equ $76 ! hard disk interrupt on PC/AT ! !************************************************************************** ! #endif