
| DMA number | meaning | connected to/managed by |
| IDE data in | 553.0 | |
| IDE data out | 553.1 | |
| 3 | sound in | 553.2 |
| 7 | sound out | 553.3 |
| Ether100 | Ether100.0 |
| IRQ number | meaning | connected to | notes | reset by |
| 0 | 977 | |||
| 1 | SWI | 977.1 | write 0 to IrqSoft/FiqSoft | |
| 2 | UART_DEBUG | FB.2 & FB.3 | ||
| 4 | TIMER0 | FB.timer0 | 10ms system tick | FB.Timer0Clear |
| 5 | TIMER1 | FB.timer | FB.Timer1Clear | |
| 6 | TIMER2 | FB.timer | FB.Timer2Clear | |
| 7 | WATCHDOG | FB.7 | ||
| 8 | ETHER10 | FB.8 | ETHER10 chip, IRE register | |
| 9 | ETHER100 | FB.9 | ||
| 11 | EXTERN_IRQ | FB.11 | chained from the PIC; never disable this! | |
| 15 | PCI_PERR1
PCI_PERR PCI_MABORT PCI_TABORT |
FB.pci | general parity error or pci error detected | read FB.pci status |
| 16 | TIMER0 | 553.0 internal | not used | |
| 17 | KEYBOARD | 553.1 | ||
| 18 | PIC_HI | conneted to the high PIC; never disable this! | ||
| 19 | UART_2 | 553.3 | read UART.ISR | |
| 20 | UART | 553.4 | read UART_CON.ISR | |
| 21 | MOUSE | 553.5 | ||
| 22 | UART_IR | 553.6 | ||
| 23 | PRINTER | 553.7 | ||
| 24 | RTC alarm | 553.8 | ||
| 26 | USER_BUTTON | actually, this is a button press by the user | ||
| 27 | MODEM | 553.11 | ||
| 28 | sound transfer finished | 553.12 | ||
| 30 | IDE | 553 internal | read IDE status | |
| 31 | POWERLOW | 553.15 |
To hide all of this from the OS, the include/asm/arch/irq.h and include/asm/arch/irqs.h
presents the
OS with a short list of about 25 interrupts. Several of these irq's
have multiple sources,
and multiple meanings. In general, however, an irq deals with all aspects
of a certain
device, and the OS will probably want to turn irq's on or off, all
together.
The irq.h file declares 4 bytes of static data, which keep a ghost of
which irq's are on
and which are off. NOTE: when the OS calls:
get_enabled_irqs()it is going to get back the ghost of what it previously set, which may not reflect the hardware condition.
up: TOC
