Main Page | File List | Globals | Related Pages

intvects.c

00001 /* 00002 * $Id: intvects.c,v 1.16 2003/12/02 20:28:27 troth Exp $ 00003 * 00004 **************************************************************************** 00005 * 00006 * simulavr - A simulator for the Atmel AVR family of microcontrollers. 00007 * Copyright (C) 2001, 2002, 2003 Theodore A. Roth 00008 * 00009 * This program is free software; you can redistribute it and/or modify 00010 * it under the terms of the GNU General Public License as published by 00011 * the Free Software Foundation; either version 2 of the License, or 00012 * (at your option) any later version. 00013 * 00014 * This program is distributed in the hope that it will be useful, 00015 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 * GNU General Public License for more details. 00018 * 00019 * You should have received a copy of the GNU General Public License 00020 * along with this program; if not, write to the Free Software 00021 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00022 * 00023 **************************************************************************** 00024 */ 00025 00026 #include <config.h> 00027 00028 #include <stdio.h> 00029 #include <stdlib.h> 00030 00031 #include "intvects.h" 00032 00033 /****************************************************************************\ 00034 * 00035 * Interrupt Vector Tables: 00036 * 00037 * Since each device could have a different set of available interrupts, the 00038 * following tables map all interrupts to the addr to jump to when the 00039 * interrupt happens. If the device doesn't support an interrupt, the table 00040 * will contain a NULL entry. Only one table will be installed into the core 00041 * for a given device. 00042 * 00043 \****************************************************************************/ 00044 00045 /* *INDENT-OFF* */ 00046 00047 /* 00048 * Vector Table for devices: 00049 * at90s1200 00050 */ 00051 static IntVectTable vtab_at90s1200 = { 00052 .RESET = { "IRQ_RESET", 00053 0x00, 0x00, NO_BIT, NO_BIT }, 00054 .INT0 = { "IRQ_INT0", 00055 0x01, 0x00, { 0x5b, 1<<6 }, NO_BIT }, 00056 .TIMER0_OVF = { "IRQ_TIMER0_OVF", 00057 0x02, 0x00, { 0x59, 1<<1 }, { 0x58, 1<<1 } }, 00058 .ANA_COMP = { "IRQ_ANA_COMP", 00059 0x03, 0x00, { 0x28, 1<<3 }, { 0x28, 1<<4 } } 00060 }; 00061 00062 /* 00063 * Vector Table for devices: 00064 * at90s2313 00065 */ 00066 static IntVectTable vtab_at90s2313 = { 00067 .RESET = { "IRQ_RESET", 00068 0x00, 0x00, NO_BIT, NO_BIT }, 00069 .INT0 = { "IRQ_INT0", 00070 0x01, 0x00, { 0x5b, 1<<6 }, { 0x5a, 1<<6 } }, 00071 .INT1 = { "IRQ_INT1", 00072 0x02, 0x00, { 0x5b, 1<<7 }, { 0x5a, 1<<7 } }, 00073 .TIMER1_CAPT = { "IRQ_TIMER1_CAPT", 00074 0x03, 0x00, { 0x59, 1<<3 }, { 0x58, 1<<3 } }, 00075 .TIMER1_COMPA = { "IRQ_TIMER1_COMPA", 00076 0x04, 0x00, { 0x59, 1<<6 }, { 0x58, 1<<6 } }, 00077 .TIMER1_OVF = { "IRQ_TIMER1_OVF", 00078 0x05, 0x00, { 0x59, 1<<7 }, { 0x58, 1<<7 } }, 00079 .TIMER0_OVF = { "IRQ_TIMER0_OVF", 00080 0x06, 0x00, { 0x59, 1<<1 }, { 0x58, 1<<1 } }, 00081 .UART_RX = { "IRQ_UART_RX", 00082 0x07, 0x00, { 0x2a, 1<<7 }, { 0x2b, 1<<7 } }, 00083 .UART_UDRE = { "IRQ_UART_UDRE", 00084 0x08, 0x00, { 0x2a, 1<<5 }, { 0x2b, 1<<5 } }, 00085 .UART_TX = { "IRQ_UART_TX", 00086 0x09, 0x00, { 0x2a, 1<<6 }, { 0x2b, 1<<6 } }, 00087 .ANA_COMP = { "IRQ_ANA_COMP", 00088 0x0a, 0x00, { 0x28, 1<<3 }, { 0x28, 1<<4 } } 00089 }; 00090 00091 /* 00092 * Vector Table for devices: 00093 * at90s4414, at90s8515 00094 */ 00095 static IntVectTable vtab_at90s4414 = { 00096 .RESET = { "IRQ_RESET", 00097 0x00, 0x00, NO_BIT, NO_BIT }, 00098 .INT0 = { "IRQ_INT0", 00099 0x01, 0x00, { 0x5b, 1<<6 }, { 0x5a, 1<<6 } }, 00100 .INT1 = { "IRQ_INT1", 00101 0x02, 0x00, { 0x5b, 1<<7 }, { 0x5a, 1<<7 } }, 00102 .TIMER1_CAPT = { "IRQ_TIMER1_CAPT", 00103 0x03, 0x00, { 0x59, 1<<3 }, { 0x58, 1<<3 } }, 00104 .TIMER1_COMPA = { "IRQ_TIMER1_COMPA", 00105 0x04, 0x00, { 0x59, 1<<6 }, { 0x58, 1<<6 } }, 00106 .TIMER1_COMPB = { "IRQ_TIMER1_COMPB", 00107 0x05, 0x00, { 0x59, 1<<5 }, { 0x58, 1<<5 } }, 00108 .TIMER1_OVF = { "IRQ_TIMER1_OVF", 00109 0x06, 0x00, { 0x59, 1<<7 }, { 0x58, 1<<7 } }, 00110 .TIMER0_OVF = { "IRQ_TIMER0_OVF", 00111 0x07, 0x00, { 0x59, 1<<1 }, { 0x58, 1<<1 } }, 00112 .SPI_STC = { "IRQ_SPI_STC", 00113 0x08, 0x00, { 0x2d, 1<<7 }, NO_BIT }, 00114 .UART_RX = { "IRQ_UART_RX", 00115 0x09, 0x00, { 0x2a, 1<<7 }, { 0x2b, 1<<7 } }, 00116 .UART_UDRE = { "IRQ_UART_UDRE", 00117 0x0a, 0x00, { 0x2a, 1<<5 }, { 0x2b, 1<<5 } }, 00118 .UART_TX = { "IRQ_UART_TX", 00119 0x0b, 0x00, { 0x2a, 1<<6 }, { 0x2b, 1<<6 } }, 00120 .ANA_COMP = { "IRQ_ANA_COMP", 00121 0x0c, 0x00, { 0x28, 1<<3 }, { 0x28, 1<<4 } } 00122 }; 00123 00124 /* 00125 * Vector Table for devices: 00126 * atmega8 00127 */ 00128 00129 static IntVectTable vtab_atmega8 = { 00130 .RESET = { "IRQ_RESET", 00131 0x00, 0x00, NO_BIT, NO_BIT }, 00132 .INT0 = { "IRQ_INT0", 00133 0x01, 0x00, { 0x5b, 1<<6 }, { 0x5a, 1<<6 } }, 00134 .INT1 = { "IRQ_INT1", 00135 0x02, 0x00, { 0x5b, 1<<7 }, { 0x5a, 1<<7 } }, 00136 .TIMER2_COMP = { "IRQ_TIMER2_COMP", 00137 0x03, 0x00, { 0x59, 1<<7 }, { 0x58, 1<<7 } }, 00138 .TIMER2_OVF = { "IRQ_TIMER2_OVF", 00139 0x04, 0x00, { 0x59, 1<<6 }, { 0x58, 1<<6 } }, 00140 .TIMER1_CAPT = { "IRQ_TIMER1_CAPT", 00141 0x05, 0x00, { 0x59, 1<<5 }, { 0x58, 1<<5 } }, 00142 .TIMER1_COMPA = { "IRQ_TIMER1_COMPA", 00143 0x06, 0x00, { 0x59, 1<<4 }, { 0x58, 1<<4 } }, 00144 .TIMER1_COMPB = { "IRQ_TIMER1_COMPB", 00145 0x07, 0x00, { 0x59, 1<<3 }, { 0x58, 1<<3 } }, 00146 .TIMER1_OVF = { "IRQ_TIMER1_OVF", 00147 0x08, 0x00, { 0x59, 1<<2 }, { 0x58, 1<<2 } }, 00148 .TIMER0_OVF = { "IRQ_TIMER0_OVF", 00149 0x09, 0x00, { 0x59, 1<<0 }, { 0x58, 1<<0 } }, 00150 .SPI_STC = { "IRQ_SPI_STC", 00151 0x0a, 0x00, { 0x2d, 1<<7 }, NO_BIT }, 00152 .UART_RX = { "IRQ_UART_RX", 00153 0x0b, 0x00, { 0x2a, 1<<7 }, { 0x2b, 1<<7 } }, 00154 .UART_UDRE = { "IRQ_UART_UDRE", 00155 0x0c, 0x00, { 0x2a, 1<<5 }, { 0x2b, 1<<5 } }, 00156 .UART_TX = { "IRQ_UART_TX", 00157 0x0d, 0x00, { 0x2a, 1<<6 }, { 0x2b, 1<<6 } }, 00158 .ADC = { "IRQ_ADC", 00159 0x0e, 0x00, { 0x26, 1<<3 }, { 0x26, 1<<4 } }, 00160 .EE_READY = { "IRQ_EE_READY", 00161 0x0f, 0x00, { 0x3c, 1<<3 }, NO_BIT }, 00162 .ANA_COMP = { "IRQ_ANA_COMP", 00163 0x10, 0x00, { 0x28, 1<<3 }, { 0x28, 1<<4 } }, 00164 .TWI = { "IRQ_TWI", 00165 0x11, 0x00, { 0x56, 1<<0 }, { 0x56, 1<<7 } }, 00166 .SPM_READY = { "IRQ_SPM_READY", 00167 0x12, 0x00, { 0x57, 1<<7 }, NO_BIT } 00168 }; 00169 00170 00171 00172 /* 00173 * Vector Table for devices: 00174 * atmega16 00175 */ 00176 00177 static IntVectTable vtab_atmega16 = { 00178 .RESET = { "IRQ_RESET", 00179 0x00, 0x00, NO_BIT, NO_BIT }, 00180 .INT0 = { "IRQ_INT0", 00181 0x02, 0x00, { 0x5b, 1<<6 }, { 0x5a, 1<<6 } }, 00182 .INT1 = { "IRQ_INT1", 00183 0x04, 0x00, { 0x5b, 1<<7 }, { 0x5a, 1<<7 } }, 00184 .TIMER2_COMP = { "IRQ_TIMER2_COMP", 00185 0x06, 0x00, { 0x59, 1<<7 }, { 0x58, 1<<7 } }, 00186 .TIMER2_OVF = { "IRQ_TIMER2_OVF", 00187 0x08, 0x00, { 0x59, 1<<6 }, { 0x58, 1<<6 } }, 00188 .TIMER1_CAPT = { "IRQ_TIMER1_CAPT", 00189 0x0a, 0x00, { 0x59, 1<<5 }, { 0x58, 1<<5 } }, 00190 .TIMER1_COMPA = { "IRQ_TIMER1_COMPA", 00191 0x0c, 0x00, { 0x59, 1<<4 }, { 0x58, 1<<4 } }, 00192 .TIMER1_COMPB = { "IRQ_TIMER1_COMPB", 00193 0x0e, 0x00, { 0x59, 1<<3 }, { 0x58, 1<<3 } }, 00194 .TIMER1_OVF = { "IRQ_TIMER1_OVF", 00195 0x10, 0x00, { 0x59, 1<<2 }, { 0x58, 1<<2 } }, 00196 .TIMER0_OVF = { "IRQ_TIMER0_OVF", 00197 0x12, 0x00, { 0x59, 1<<0 }, { 0x58, 1<<0 } }, 00198 .SPI_STC = { "IRQ_SPI_STC", 00199 0x14, 0x00, { 0x2d, 1<<7 }, NO_BIT }, 00200 .UART_RX = { "IRQ_UART_RX", 00201 0x16, 0x00, { 0x2a, 1<<7 }, { 0x2b, 1<<7 } }, 00202 .UART_UDRE = { "IRQ_UART_UDRE", 00203 0x18, 0x00, { 0x2a, 1<<5 }, { 0x2b, 1<<5 } }, 00204 .UART_TX = { "IRQ_UART_TX", 00205 0x1a, 0x00, { 0x2a, 1<<6 }, { 0x2b, 1<<6 } }, 00206 .ADC = { "IRQ_ADC", 00207 0x1c, 0x00, { 0x26, 1<<3 }, { 0x26, 1<<4 } }, 00208 .EE_READY = { "IRQ_EE_READY", 00209 0x1e, 0x00, { 0x3c, 1<<3 }, NO_BIT }, 00210 .ANA_COMP = { "IRQ_ANA_COMP", 00211 0x20, 0x00, { 0x28, 1<<3 }, { 0x28, 1<<4 } }, 00212 .TWI = { "IRQ_TWI", 00213 0x22, 0x00, { 0x57, 1<<0 }, { 0x56, 1<<7 } }, 00214 .INT2 = { "IRQ_INT2", 00215 0x24, 0x00, { 0x5b, 1<<5 }, { 0x5a, 1<<5 } }, 00216 .TIMER0_COMP = { "IRQ_TIMER0_COMP", 00217 0x26, 0x00, { 0x59, 1<<1 }, { 0x58, 1<<1 } }, 00218 .SPM_READY = { "IRQ_SPM_READY", 00219 0x28, 0x00, { 0x57, 1<<7 }, NO_BIT } 00220 }; 00221 00222 00223 /* 00224 * Vector Table for devices: 00225 * atmega103 00226 */ 00227 00228 static IntVectTable vtab_atmega103 = { 00229 .RESET = { "IRQ_RESET", 00230 0x00, 0x00, NO_BIT, NO_BIT }, 00231 .INT0 = { "IRQ_INT0", 00232 0x02, 0x00, { 0x59, 1<<0 }, NO_BIT }, 00233 .INT1 = { "IRQ_INT1", 00234 0x04, 0x00, { 0x59, 1<<1 }, NO_BIT }, 00235 .INT2 = { "IRQ_INT2", 00236 0x06, 0x00, { 0x59, 1<<2 }, NO_BIT }, 00237 .INT3 = { "IRQ_INT3", 00238 0x08, 0x00, { 0x59, 1<<3 }, NO_BIT }, 00239 .INT4 = { "IRQ_INT4", 00240 0x0a, 0x00, { 0x59, 1<<4 }, { 0x58, 1<<4 } }, 00241 .INT5 = { "IRQ_INT5", 00242 0x0c, 0x00, { 0x59, 1<<5 }, { 0x58, 1<<5 } }, 00243 .INT6 = { "IRQ_INT6", 00244 0x0e, 0x00, { 0x59, 1<<6 }, { 0x58, 1<<6 } }, 00245 .INT7 = { "IRQ_INT7", 00246 0x10, 0x00, { 0x59, 1<<7 }, { 0x58, 1<<7 } }, 00247 .TIMER2_COMP = { "IRQ_TIMER2_COMP", 00248 0x12, 0x00, { 0x57, 1<<7 }, { 0x56, 1<<7 } }, 00249 .TIMER2_OVF = { "IRQ_TIMER2_OVF", 00250 0x14, 0x00, { 0x57, 1<<6 }, { 0x56, 1<<6 } }, 00251 .TIMER1_CAPT = { "IRQ_TIMER1_CAPT", 00252 0x16, 0x00, { 0x57, 1<<5 }, { 0x56, 1<<5 } }, 00253 .TIMER1_COMPA = { "IRQ_TIMER1_COMPA", 00254 0x18, 0x00, { 0x57, 1<<4 }, { 0x56, 1<<4 } }, 00255 .TIMER1_COMPB = { "IRQ_TIMER1_COMPB", 00256 0x1a, 0x00, { 0x57, 1<<3 }, { 0x56, 1<<3 } }, 00257 .TIMER1_OVF = { "IRQ_TIMER1_OVF", 00258 0x1c, 0x00, { 0x57, 1<<2 }, { 0x56, 1<<2 } }, 00259 .TIMER0_COMP = { "IRQ_TIMER0_COMP", 00260 0x1e, 0x00, { 0x57, 1<<1 }, { 0x56, 1<<1 } }, 00261 .TIMER0_OVF = { "IRQ_TIMER0_OVF", 00262 0x20, 0x00, { 0x57, 1<<0 }, { 0x56, 1<<0 } }, 00263 .SPI_STC = { "IRQ_SPI_STC", 00264 0x22, 0x00, { 0x2d, 1<<7 }, NO_BIT }, 00265 .UART_RX = { "IRQ_UART_RX", 00266 0x24, 0x00, { 0x2a, 1<<7 }, { 0x2b, 1<<7 } }, 00267 .UART_UDRE = { "IRQ_UART_UDRE", 00268 0x26, 0x00, { 0x2a, 1<<5 }, { 0x2b, 1<<5 } }, 00269 .UART_TX = { "IRQ_UART_TX", 00270 0x28, 0x00, { 0x2a, 1<<6 }, { 0x2b, 1<<6 } }, 00271 .ADC = { "IRQ_ADC", 00272 0x2a, 0x00, { 0x26, 1<<3 }, { 0x26, 1<<4 } }, 00273 .ANA_COMP = { "IRQ_ANA_COMP", 00274 0x2e, 0x00, { 0x28, 1<<3 }, { 0x28, 1<<4 } }, 00275 .EE_READY = { "IRQ_EE_READY", 00276 0x2c, 0x00, { 0x3c, 1<<3 }, NO_BIT } 00277 }; 00278 00279 /* 00280 * Vector Table for devices: 00281 * atmega128 00282 */ 00283 00284 /* Note that the mega128 has BOOTRST and IVSEL fuses which can be used to 00285 change the interrupt vectors. If used, the new vectors are just the 00286 following plus some Boot Reset Address. This could be implemented just as 00287 we vector to handler. */ 00288 00289 /* Note that the vectors address for mega128 are two insn's. This is needed 00290 since they can use jmp (32-bit) insn at the vector address. */ 00291 00292 static IntVectTable vtab_atmega128 = { 00293 .RESET = { "IRQ_RESET", 00294 0x00, 0x00, NO_BIT, NO_BIT }, 00295 .INT0 = { "IRQ_INT0", 00296 0x02, 0x00, { 0x59, 1<<7 }, { 0x58, 1<<7 } }, 00297 .INT1 = { "IRQ_INT1", 00298 0x04, 0x00, { 0x59, 1<<6 }, { 0x58, 1<<6 } }, 00299 .INT2 = { "IRQ_INT2", 00300 0x06, 0x00, { 0x59, 1<<5 }, { 0x58, 1<<5 } }, 00301 .INT3 = { "IRQ_INT3", 00302 0x08, 0x00, { 0x59, 1<<4 }, { 0x58, 1<<4 } }, 00303 .INT4 = { "IRQ_INT4", 00304 0x0a, 0x00, { 0x59, 1<<3 }, { 0x58, 1<<3 } }, 00305 .INT5 = { "IRQ_INT5", 00306 0x0c, 0x00, { 0x59, 1<<2 }, { 0x58, 1<<2 } }, 00307 .INT6 = { "IRQ_INT6", 00308 0x0e, 0x00, { 0x59, 1<<1 }, { 0x58, 1<<1 } }, 00309 .INT7 = { "IRQ_INT7", 00310 0x10, 0x00, { 0x59, 1<<0 }, { 0x58, 1<<0 } }, 00311 .TIMER2_COMP = { "IRQ_TIMER2_COMP", 00312 0x12, 0x00, { 0x57, 1<<7 }, { 0x56, 1<<7 } }, 00313 .TIMER2_OVF = { "IRQ_TIMER2_OVF", 00314 0x14, 0x00, { 0x57, 1<<6 }, { 0x56, 1<<6 } }, 00315 .TIMER1_CAPT = { "IRQ_TIMER1_CAPT", 00316 0x16, 0x00, { 0x57, 1<<5 }, { 0x56, 1<<5 } }, 00317 .TIMER1_COMPA = { "IRQ_TIMER1_COMPA", 00318 0x18, 0x00, { 0x57, 1<<4 }, { 0x56, 1<<4 } }, 00319 .TIMER1_COMPB = { "IRQ_TIMER1_COMPB", 00320 0x1a, 0x00, { 0x57, 1<<3 }, { 0x56, 1<<3 } }, 00321 .TIMER1_OVF = { "IRQ_TIMER1_OVF", 00322 0x1c, 0x00, { 0x57, 1<<2 }, { 0x56, 1<<2 } }, 00323 .TIMER0_COMP = { "IRQ_TIMER0_COMP", 00324 0x1e, 0x00, { 0x57, 1<<1 }, { 0x56, 1<<1 } }, 00325 .TIMER0_OVF = { "IRQ_TIMER0_OVF", 00326 0x20, 0x00, { 0x57, 1<<0 }, { 0x56, 1<<0 } }, 00327 .SPI_STC = { "IRQ_SPI_STC", 00328 0x22, 0x00, { 0x2d, 1<<7 }, NO_BIT }, 00329 .USART0_RX = { "IRQ_USART0_RX", 00330 0x24, 0x00, { 0x2a, 1<<7 }, { 0x2b, 1<<7 } }, 00331 .USART0_UDRE = { "IRQ_USART0_UDRE", 00332 0x26, 0x00, { 0x2a, 1<<5 }, { 0x2b, 1<<5 } }, 00333 .USART0_TX = { "IRQ_USART0_TX", 00334 0x28, 0x00, { 0x2a, 1<<6 }, { 0x2b, 1<<6 } }, 00335 .ADC = { "IRQ_ADC", 00336 0x2a, 0x00, { 0x26, 1<<3 }, { 0x26, 1<<4 } }, 00337 .EE_READY = { "IRQ_EE_READY", 00338 0x2c, 0x00, { 0x3c, 1<<3 }, NO_BIT }, 00339 .ANA_COMP = { "IRQ_ANA_COMP", 00340 0x2e, 0x00, { 0x28, 1<<3 }, { 0x28, 1<<4 } }, 00341 .TIMER1_COMPC = { "IRQ_TIMER1_COMPC", 00342 0x30, 0x00, { 0x7d, 1<<0 }, { 0x7c, 1<<0 } }, 00343 .TIMER3_CAPT = { "IRQ_TIMER3_CAPT", 00344 0x32, 0x00, { 0x7d, 1<<5 }, { 0x7c, 1<<5 } }, 00345 .TIMER3_COMPA = { "IRQ_TIMER3_COMPA", 00346 0x34, 0x00, { 0x7d, 1<<4 }, { 0x7c, 1<<4 } }, 00347 .TIMER3_COMPB = { "IRQ_TIMER3_COMPB", 00348 0x36, 0x00, { 0x7d, 1<<3 }, { 0x7c, 1<<3 } }, 00349 .TIMER3_COMPC = { "IRQ_TIMER3_COMPC", 00350 0x38, 0x00, { 0x7d, 1<<1 }, { 0x7c, 1<<1 } }, 00351 .TIMER3_OVF = { "IRQ_TIMER3_OVF", 00352 0x3a, 0x00, { 0x7d, 1<<2 }, { 0x7c, 1<<2 } }, 00353 .USART1_RX = { "IRQ_USART1_RX", 00354 0x3c, 0x00, { 0x9a, 1<<7 }, { 0x9b, 1<<7 } }, 00355 .USART1_UDRE = { "IRQ_USART1_UDRE", 00356 0x3e, 0x00, { 0x9a, 1<<5 }, { 0x9b, 1<<5 } }, 00357 .USART1_TX = { "IRQ_USART1_TX", 00358 0x40, 0x00, { 0x9a, 1<<6 }, { 0x9b, 1<<6 } }, 00359 .TWI = { "IRQ_TWI", 00360 0x42, 0x00, { 0x74, 1<<0 }, { 0x74, 1<<7 } }, 00361 .SPM_READY = { "IRQ_SPM_READY", 00362 0x44, 0x00, { 0x68, 1<<7 }, NO_BIT } 00363 }; 00364 00365 /* supports 355, 353, 351 00366 NOTE: The vector addresses are not sequential. */ 00367 static IntVectTable vtab_at43usb355 = { 00368 .RESET = { "IRQ_RESET", 00369 0x00, 0x00, NO_BIT, NO_BIT }, 00370 .INT0 = { "IRQ_INT0", 00371 0x02, 0x00, { 0x5b, 1<<6 }, { 0x5a, 1<<6 } }, 00372 .INT1 = { "IRQ_INT1", 00373 0x04, 0x00, { 0x5b, 1<<7 }, { 0x5a, 1<<7 } }, 00374 .TIMER1_CAPT = { "IRQ_TIMER1_CAPT", 00375 0x06, 0x00, { 0x59, 1<<3 }, { 0x58, 1<<3 } }, 00376 .TIMER1_COMPA = { "IRQ_TIMER1_COMPA", 00377 0x08, 0x00, { 0x59, 1<<6 }, { 0x58, 1<<6 } }, 00378 .TIMER1_COMPB = { "IRQ_TIMER1_COMPB", 00379 0x0a, 0x00, { 0x59, 1<<5 }, { 0x58, 1<<5 } }, 00380 .TIMER1_OVF = { "IRQ_TIMER1_OVF", 00381 0x0c, 0x00, { 0x59, 1<<7 }, { 0x58, 1<<7 } }, 00382 .TIMER0_OVF = { "IRQ_TIMER0_OVF", 00383 0x0e, 0x00, { 0x59, 1<<1 }, { 0x58, 1<<1 } }, 00384 .SPI_STC = { "IRQ_SPI_STC", 00385 0x10, 0x00, { 0x2d, 1<<7 }, NO_BIT }, 00386 .ADC = { "IRQ_ADC", 00387 0x16, 0x00, { 0x27, 1<<3 }, { 0x27, 1<<4 } }, 00388 .USB_HW = { "IRQ_USB_HW", 00389 0x18, 0x00, NO_BIT, NO_BIT } /* TODO */ 00390 }; 00391 00392 /* supports 320 */ 00393 static IntVectTable vtab_at43usb320 = { 00394 .RESET = { "IRQ_RESET", 00395 0x00, 0x00, NO_BIT, NO_BIT }, 00396 .INT0 = { "IRQ_INT0", 00397 0x02, 0x00, { 0x5b, 1<<6 }, { 0x5a, 1<<6 } }, 00398 .INT1 = { "IRQ_INT1", 00399 0x04, 0x00, { 0x5b, 1<<7 }, { 0x5a, 1<<7 } }, 00400 .TIMER1_CAPT = { "IRQ_TIMER1_CAPT", 00401 0x06, 0x00, { 0x59, 1<<3 }, { 0x58, 1<<3 } }, 00402 .TIMER1_COMPA = { "IRQ_TIMER1_COMPA", 00403 0x08, 0x00, { 0x59, 1<<6 }, { 0x58, 1<<6 } }, 00404 .TIMER1_COMPB = { "IRQ_TIMER1_COMPB", 00405 0x0a, 0x00, { 0x59, 1<<5 }, { 0x58, 1<<5 } }, 00406 .TIMER1_OVF = { "IRQ_TIMER1_OVF", 00407 0x0c, 0x00, { 0x59, 1<<7 }, { 0x58, 1<<7 } }, 00408 .TIMER0_OVF = { "IRQ_TIMER0_OVF", 00409 0x0e, 0x00, { 0x59, 1<<1 }, { 0x58, 1<<1 } }, 00410 .SPI_STC = { "IRQ_SPI_STC", 00411 0x10, 0x00, { 0x2d, 1<<7 }, NO_BIT }, 00412 .UART_RX = { "IRQ_UART_RX", 00413 0x12, 0x00, { 0x2a, 1<<7 }, { 0x2b, 1<<7 } }, 00414 .UART_UDRE = { "IRQ_UART_UDRE", 00415 0x14, 0x00, { 0x2a, 1<<5 }, { 0x2b, 1<<5 } }, 00416 .UART_TX = { "IRQ_UART_TX", 00417 0x16, 0x00, { 0x2a, 1<<6 }, { 0x2b, 1<<6 } }, 00418 .USB_HW = { "IRQ_USB", 00419 0x18, 0x00, NO_BIT, NO_BIT } /* TODO */ 00420 }; 00421 00422 /* supports 325 00423 NOTE: The vector addresses are not sequential. */ 00424 static IntVectTable vtab_at43usb325 = { 00425 .RESET = { "IRQ_RESET", 00426 0x00, 0x00, NO_BIT, NO_BIT }, 00427 .INT0 = { "IRQ_INT0", 00428 0x02, 0x00, { 0x5b, 1<<6 }, { 0x5a, 1<<6 } }, 00429 .INT1 = { "IRQ_INT1", 00430 0x04, 0x00, { 0x5b, 1<<7 }, { 0x5a, 1<<7 } }, 00431 .TIMER1_CAPT = { "IRQ_TIMER1_CAPT", 00432 0x06, 0x00, { 0x59, 1<<3 }, { 0x58, 1<<3 } }, 00433 .TIMER1_COMPA = { "IRQ_TIMER1_COMPA", 00434 0x08, 0x00, { 0x59, 1<<6 }, { 0x58, 1<<6 } }, 00435 .TIMER1_COMPB = { "IRQ_TIMER1_COMPB", 00436 0x0a, 0x00, { 0x59, 1<<5 }, { 0x58, 1<<5 } }, 00437 .TIMER1_OVF = { "IRQ_TIMER1_OVF", 00438 0x0c, 0x00, { 0x59, 1<<7 }, { 0x58, 1<<7 } }, 00439 .TIMER0_OVF = { "IRQ_TIMER0_OVF", 00440 0x0e, 0x00, { 0x59, 1<<1 }, { 0x58, 1<<1 } }, 00441 .USB_HW = { "IRQ_USB_HW", 00442 0x18, 0x00, NO_BIT, NO_BIT } /* TODO */ 00443 }; 00444 00445 /* supports 324 00446 NOTE: The vector addresses are not sequential. */ 00447 static IntVectTable vtab_at43usb324 = { 00448 .RESET = { "IRQ_RESET", 00449 0x00, 0x00, NO_BIT, NO_BIT }, 00450 .INT0 = { "IRQ_INT0", 00451 0x02, 0x00, { 0x5b, 1<<6 }, { 0x5a, 1<<6 } }, 00452 .INT1 = { "IRQ_INT1", 00453 0x04, 0x00, { 0x5b, 1<<7 }, { 0x5a, 1<<7 } }, 00454 .TIMER0_OVF = { "IRQ_TIMER0_OVF", 00455 0x0e, 0x00, { 0x59, 1<<1 }, { 0x58, 1<<1 } }, 00456 .USB_HW = { "IRQ_USB_HW", 00457 0x18, 0x00, NO_BIT, NO_BIT } /* TODO */ 00458 }; 00459 00460 /* supports 326 00461 NOTE: The vector addresses are not sequential. */ 00462 static IntVectTable vtab_at43usb326 = { 00463 .RESET = { "IRQ_RESET", 00464 0x00, 0x00, NO_BIT, NO_BIT }, 00465 .INT0 = { "IRQ_INT0", 00466 0x02, 0x00, { 0x5b, 1<<6 }, { 0x5a, 1<<6 } }, 00467 .TIMER0_OVF = { "IRQ_TIMER0_OVF", 00468 0x0e, 0x00, { 0x59, 1<<1 }, { 0x58, 1<<1 } }, 00469 .USB_HW = { "IRQ_USB_HW", 00470 0x18, 0x00, NO_BIT, NO_BIT } /* TODO */ 00471 }; 00472 00473 /* *INDENT-ON* */ 00474 00475 /* 00476 * Vector Table Lookup List. 00477 * 00478 * Maps a _vector_table_name to a device vector table. 00479 */ 00480 IntVectTable *global_vtable_list[] = { 00481 &vtab_at90s1200, 00482 &vtab_at90s2313, 00483 &vtab_at90s4414, 00484 &vtab_atmega8, 00485 &vtab_atmega16, 00486 &vtab_atmega103, 00487 &vtab_atmega128, 00488 &vtab_at43usb355, 00489 &vtab_at43usb320, 00490 &vtab_at43usb325, 00491 &vtab_at43usb324, 00492 &vtab_at43usb326, 00493 NULL 00494 };

Automatically generated by Doxygen 1.3.8 on 11 Aug 2004.