/* * (C) Copyright 2003, Psyent Corporation * Scott McNutt * * See file CREDITS for list of people who contributed to this * project. * * 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 (at your option) 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., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA */ /************************************************************************* * Exception Vector Table * * This could have gone in the cpu soure tree, but the whole point of * Nios is customization -- and polluting the cpu source tree with * board-specific ifdef's really defeats the purpose, no? With this in * the board-specific tree, each board has the freedom to organize * vectors/traps, etc anyway it wants. The init code copies this table * to the proper location. * * Each board can do what it likes here. But there are four "standard" * handlers availble: * * _cwp_lolimit -Handles register window underflows. * _cwp_hilimit -Handles register window overflows. * _timebase_int -Increments the timebase. * _def_xhandler -Default exception handler. * * _timebase_int handles a Nios Timer interrupt and increments the * timestamp used for the get_timer(), reset_timer(), etc. routines. It * expects the timer to be configured like the standard-32 low priority * timer. * * _def_xhandler dispatches exceptions/traps via the external_interrupt() * routine. This lets you use the irq_install_handler() and handle your * interrupts/traps with code written in C. ************************************************************************/ .data .global _vectors .align 4 _vectors: .long _def_xhandler@h /* Vector 0 - NMI */ .long _cwp_lolimit@h /* Vector 1 - underflow */ .long _cwp_hilimit@h /* Vector 2 - overflow */ .long _def_xhandler@h /* Vector 3 - GNUPro debug */ .long _def_xhandler@h /* Vector 4 - GNUPro debug */ .long _def_xhandler@h /* Vector 5 - GNUPro debug */ .long _def_xhandler@h /* Vector 6 - future reserved */ .long _def_xhandler@h /* Vector 7 - future reserved */ .long _def_xhandler@h /* Vector 8 - future reserved */ .long _def_xhandler@h /* Vector 9 - future reserved */ .long _def_xhandler@h /* Vector 10 - future reserved */ .long _def_xhandler@h /* Vector 11 - future reserved */ .long _def_xhandler@h /* Vector 12 - future reserved */ .long _def_xhandler@h /* Vector 13 - future reserved */ .long _def_xhandler@h /* Vector 14 - future reserved */ .long _def_xhandler@h /* Vector 15 - future reserved */ .long _def_xhandler@h /* Vector 16 */ .long _def_xhandler@h /* Vector 17 */ .long _def_xhandler@h /* Vector 18 */ .long _def_xhandler@h /* Vector 19 */ .long _def_xhandler@h /* Vector 20 */ .long _def_xhandler@h /* Vector 21 */ .long _def_xhandler@h /* Vector 22 */ .long _def_xhandler@h /* Vector 23 */ .long _def_xhandler@h /* Vector 24 */ .long _def_xhandler@h /* Vector 25 */ .long _def_xhandler@h /* Vector 26 */ .long _def_xhandler@h /* Vector 27 */ .long _def_xhandler@h /* Vector 28 */ .long _def_xhandler@h /* Vector 29 */ .long _def_xhandler@h /* Vector 30 */ .long _def_xhandler@h /* Vector 31 */ .long _def_xhandler@h /* Vector 32 */ .long _def_xhandler@h /* Vector 33 */ .long _def_xhandler@h /* Vector 34 */ .long _def_xhandler@h /* Vector 35 */ .long _def_xhandler@h /* Vector 36 */ .long _def_xhandler@h /* Vector 37 */ .long _def_xhandler@h /* Vector 38 */ .long _def_xhandler@h /* Vector 39 */ .long _def_xhandler@h /* Vector 40 */ .long _def_xhandler@h /* Vector 41 */ .long _def_xhandler@h /* Vector 42 */ .long _def_xhandler@h /* Vector 43 */ .long _def_xhandler@h /* Vector 44 */ .long _def_xhandler@h /* Vector 45 */ .long _def_xhandler@h /* Vector 46 */ .long _def_xhandler@h /* Vector 47 */ .long _def_xhandler@h /* Vector 48 */ .long _def_xhandler@h /* Vector 49 */ .long _timebase_int@h /* Vector 50 - lopri timer*/ .long _def_xhandler@h /* Vector 51 */ .long _def_xhandler@h /* Vector 52 */ .long _def_xhandler@h /* Vector 53 */ .long _def_xhandler@h /* Vector 54 */ .long _def_xhandler@h /* Vector 55 */ .long _def_xhandler@h /* Vector 56 */ .long _def_xhandler@h /* Vector 57 */ .long _def_xhandler@h /* Vector 58 */ .long _def_xhandler@h /* Vector 59 */ .long _def_xhandler@h /* Vector 60 */ .long _def_xhandler@h /* Vector 61 */ .long _def_xhandler@h /* Vector 62 */ .long _def_xhandler@h /* Vector 63 */