blob: 7094eb63ea572eb56ba2a91b86cf115157d4829e [file] [log] [blame]
wdenk4a551702003-10-08 23:26:14 +00001/*
2 * (C) Copyright 2003, Psyent Corporation <www.psyent.com>
3 * Scott McNutt <smcnutt@psyent.com>
4 *
5 * See file CREDITS for list of people who contributed to this
6 * project.
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License as
10 * published by the Free Software Foundation; either version 2 of
11 * the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
21 * MA 02111-1307 USA
22 */
23
24
25/*************************************************************************
26 * Exception Vector Table
27 *
28 * This could have gone in the cpu soure tree, but the whole point of
29 * Nios is customization -- and polluting the cpu source tree with
30 * board-specific ifdef's really defeats the purpose, no? With this in
31 * the board-specific tree, each board has the freedom to organize
32 * vectors/traps, etc anyway it wants. The init code copies this table
33 * to the proper location.
34 *
35 * Each board can do what it likes here. But there are four "standard"
36 * handlers availble:
37 *
38 * _cwp_lolimit -Handles register window underflows.
39 * _cwp_hilimit -Handles register window overflows.
40 * _timebase_int -Increments the timebase.
41 * _def_xhandler -Default exception handler.
42 *
43 * _timebase_int handles a Nios Timer interrupt and increments the
44 * timestamp used for the get_timer(), reset_timer(), etc. routines. It
45 * expects the timer to be configured like the standard-32 low priority
46 * timer.
47 *
48 * _def_xhandler dispatches exceptions/traps via the external_interrupt()
49 * routine. This lets you use the irq_install_handler() and handle your
50 * interrupts/traps with code written in C.
51 ************************************************************************/
52
53 .data
54 .global _vectors
55 .align 4
56_vectors:
57
58 .long _def_xhandler@h /* Vector 0 - NMI */
59 .long _cwp_lolimit@h /* Vector 1 - underflow */
60 .long _cwp_hilimit@h /* Vector 2 - overflow */
61
62 .long _def_xhandler@h /* Vector 3 - GNUPro debug */
63 .long _def_xhandler@h /* Vector 4 - GNUPro debug */
64 .long _def_xhandler@h /* Vector 5 - GNUPro debug */
65 .long _def_xhandler@h /* Vector 6 - future reserved */
66 .long _def_xhandler@h /* Vector 7 - future reserved */
67 .long _def_xhandler@h /* Vector 8 - future reserved */
68 .long _def_xhandler@h /* Vector 9 - future reserved */
69 .long _def_xhandler@h /* Vector 10 - future reserved */
70 .long _def_xhandler@h /* Vector 11 - future reserved */
71 .long _def_xhandler@h /* Vector 12 - future reserved */
72 .long _def_xhandler@h /* Vector 13 - future reserved */
73 .long _def_xhandler@h /* Vector 14 - future reserved */
74 .long _def_xhandler@h /* Vector 15 - future reserved */
75 .long _def_xhandler@h /* Vector 16 */
76 .long _def_xhandler@h /* Vector 17 */
77 .long _def_xhandler@h /* Vector 18 */
78 .long _def_xhandler@h /* Vector 19 */
79 .long _def_xhandler@h /* Vector 20 */
80 .long _def_xhandler@h /* Vector 21 */
81 .long _def_xhandler@h /* Vector 22 */
82 .long _def_xhandler@h /* Vector 23 */
83 .long _def_xhandler@h /* Vector 24 */
84 .long _def_xhandler@h /* Vector 25 */
85 .long _def_xhandler@h /* Vector 26 */
86 .long _def_xhandler@h /* Vector 27 */
87 .long _def_xhandler@h /* Vector 28 */
88 .long _def_xhandler@h /* Vector 29 */
89 .long _def_xhandler@h /* Vector 30 */
90 .long _def_xhandler@h /* Vector 31 */
91 .long _def_xhandler@h /* Vector 32 */
92 .long _def_xhandler@h /* Vector 33 */
93 .long _def_xhandler@h /* Vector 34 */
94 .long _def_xhandler@h /* Vector 35 */
95 .long _def_xhandler@h /* Vector 36 */
96 .long _def_xhandler@h /* Vector 37 */
97 .long _def_xhandler@h /* Vector 38 */
98 .long _def_xhandler@h /* Vector 39 */
99 .long _def_xhandler@h /* Vector 40 */
100 .long _def_xhandler@h /* Vector 41 */
101 .long _def_xhandler@h /* Vector 42 */
102 .long _def_xhandler@h /* Vector 43 */
103 .long _def_xhandler@h /* Vector 44 */
104 .long _def_xhandler@h /* Vector 45 */
105 .long _def_xhandler@h /* Vector 46 */
106 .long _def_xhandler@h /* Vector 47 */
107 .long _def_xhandler@h /* Vector 48 */
108 .long _def_xhandler@h /* Vector 49 */
109 .long _timebase_int@h /* Vector 50 - lopri timer*/
110 .long _def_xhandler@h /* Vector 51 */
111 .long _def_xhandler@h /* Vector 52 */
112 .long _def_xhandler@h /* Vector 53 */
113 .long _def_xhandler@h /* Vector 54 */
114 .long _def_xhandler@h /* Vector 55 */
115 .long _def_xhandler@h /* Vector 56 */
116 .long _def_xhandler@h /* Vector 57 */
117 .long _def_xhandler@h /* Vector 58 */
118 .long _def_xhandler@h /* Vector 59 */
119 .long _def_xhandler@h /* Vector 60 */
120 .long _def_xhandler@h /* Vector 61 */
121 .long _def_xhandler@h /* Vector 62 */
122 .long _def_xhandler@h /* Vector 63 */