*** src/intvects.c 21 Oct 2003 05:38:30 -0000 1.13 --- src/intvects.c 20 Nov 2003 21:30:02 -0000 *************** *** 126,152 **** */ static IntVectTable vtab_atmega16 = { ! .RESET = { "IRQ_RESET", 0x00, 0x00 }, ! .INT0 = { "IRQ_INT0", 0x02, 0x00 }, ! .INT1 = { "IRQ_INT1", 0x04, 0x00 }, ! .TIMER2_COMP = { "IRQ_TIMER2_COMP", 0x06, 0x00 }, ! .TIMER2_OVF = { "IRQ_TIMER2_OVF", 0x08, 0x00 }, ! .TIMER1_CAPT = { "IRQ_TIMER1_CAPT", 0x0a, 0x00 }, ! .TIMER1_COMPA = { "IRQ_TIMER1_COMPA", 0x0c, 0x00 }, ! .TIMER1_COMPB = { "IRQ_TIMER1_COMPB", 0x0e, 0x00 }, ! .TIMER1_OVF = { "IRQ_TIMER1_OVF", 0x10, 0x00 }, ! .TIMER0_OVF = { "IRQ_TIMER0_OVF", 0x12, 0x00 }, ! .SPI_STC = { "IRQ_SPI_STC", 0x14, 0x00 }, ! .UART_RX = { "IRQ_UART_RX", 0x16, 0x00 }, ! .UART_UDRE = { "IRQ_UART_UDRE", 0x18, 0x00 }, ! .UART_TX = { "IRQ_UART_TX", 0x1a, 0x00 }, ! .ADC = { "IRQ_ADC", 0x1c, 0x00 }, ! .EE_READY = { "IRQ_EE_READY", 0x1e, 0x00 }, ! .ANA_COMP = { "IRQ_ANA_COMP", 0x20, 0x00 }, ! .TWI = { "IRQ_TWI", 0x22, 0x00 }, ! .INT2 = { "IRQ_INT2", 0x24, 0x00 }, ! .TIMER0_COMP = { "IRQ_TIMER0_COMP", 0x26, 0x00 }, ! .SPM_READY = { "IRQ_SPM_READY", 0x28, 0x00 } }; --- 126,152 ---- */ static IntVectTable vtab_atmega16 = { ! .RESET = { "IRQ_RESET", 0x00, 0x00, NO_BIT, NO_BIT }, ! .INT0 = { "IRQ_INT0", 0x02, 0x00, { 0x5b, 6 }, { 0x5a, 6 } }, ! .INT1 = { "IRQ_INT1", 0x04, 0x00, { 0x5b, 7 }, { 0x5a, 7 } }, ! .TIMER2_COMP = { "IRQ_TIMER2_COMP", 0x06, 0x00, { 0x59, 7 }, { 0x58, 7 } }, ! .TIMER2_OVF = { "IRQ_TIMER2_OVF", 0x08, 0x00, { 0x59, 6 }, { 0x58, 6 } }, ! .TIMER1_CAPT = { "IRQ_TIMER1_CAPT", 0x0a, 0x00, { 0x59, 5 }, { 0x58, 5 } }, ! .TIMER1_COMPA = { "IRQ_TIMER1_COMPA", 0x0c, 0x00, { 0x59, 4 }, { 0x58, 4 } }, ! .TIMER1_COMPB = { "IRQ_TIMER1_COMPB", 0x0e, 0x00, { 0x59, 3 }, { 0x58, 3 } }, ! .TIMER1_OVF = { "IRQ_TIMER1_OVF", 0x10, 0x00, { 0x59, 2 }, { 0x58, 2 } }, ! .TIMER0_OVF = { "IRQ_TIMER0_OVF", 0x12, 0x00, { 0x59, 0 }, { 0x58, 0 } }, ! .SPI_STC = { "IRQ_SPI_STC", 0x14, 0x00, { 0x2d, 7 }, { 0x2e, 7 } }, ! .UART_RX = { "IRQ_UART_RX", 0x16, 0x00, { 0x2a, 7 }, { 0x2b, 7 } }, ! .UART_UDRE = { "IRQ_UART_UDRE", 0x18, 0x00, { 0x2a, 5 }, { 0x2b, 5 } }, ! .UART_TX = { "IRQ_UART_TX", 0x1a, 0x00, { 0x2a, 6 }, { 0x2b, 6 } }, ! .ADC = { "IRQ_ADC", 0x1c, 0x00, { 0x26, 3 }, { 0x26, 4 } }, ! .EE_READY = { "IRQ_EE_READY", 0x1e, 0x00, { 0x3c, 3 }, NO_BIT }, ! .ANA_COMP = { "IRQ_ANA_COMP", 0x20, 0x00, { 0x28, 3 }, { 0x28, 4 } }, ! .TWI = { "IRQ_TWI", 0x22, 0x00, { 0x57, 0 }, { 0x56, 7 } }, ! .INT2 = { "IRQ_INT2", 0x24, 0x00, { 0x5b, 5 }, { 0x5a, 5 } }, ! .TIMER0_COMP = { "IRQ_TIMER0_COMP", 0x26, 0x00, { 0x59, 1 }, { 0x58, 1 } }, ! .SPM_READY = { "IRQ_SPM_READY", 0x28, 0x00, { 0x57, 7 }, { 0x57, 0 } }, }; *** src/intvects.h 14 Oct 2003 22:22:34 -0000 1.5 --- src/intvects.h 20 Nov 2003 21:30:02 -0000 *************** *** 44,49 **** --- 44,58 ---- /* NOTE: When an interrupt occurs, we just place a pointer to IntVect into the pending vector list (sorted by addr). */ + typedef struct _IntBit IntBit; + + struct _IntBit { + int addr; + int bit; + }; + + #define NO_BIT { -1, -1 } + typedef struct _IntVect IntVect; struct _IntVect { *************** *** 53,58 **** --- 62,69 ---- mode, can it wake the processor? Each bit represents a different sleep mode which the processor might be in. */ + IntBit enable; + IntBit flag; }; /* Macro to calculate the field index into the structure instead of maintaining