xref: /netbsd-src/sys/arch/atari/atari/vectors.s (revision 2a84159ada57dac1a3a322c289d36b976db1a473)
1/*	$NetBSD: vectors.s,v 1.24 2023/01/06 10:28:27 tsutsui Exp $	*/
2
3/*
4 * Copyright (c) 1988 University of Utah
5 * Copyright (c) 1990 Regents of the University of California.
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 *    notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 *    notice, this list of conditions and the following disclaimer in the
15 *    documentation and/or other materials provided with the distribution.
16 * 3. Neither the name of the University nor the names of its contributors
17 *    may be used to endorse or promote products derived from this software
18 *    without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 * SUCH DAMAGE.
31 *
32 *	@(#)vectors.s	7.2 (Berkeley) 5/7/91
33 */
34
35	.data
36GLOBAL(vectab)
37	.long	0x4ef80400	| 0: jmp 0x400:w (unused reset SSP)
38	.long	0		| 1: NOT USED (reset PC)
39	VECTOR(buserr)		| 2: bus error
40	VECTOR(addrerr)		| 3: address error
41	VECTOR(illinst)		| 4: illegal instruction
42	VECTOR(zerodiv)		| 5: zero divide
43	VECTOR(chkinst)		| 6: CHK instruction
44	VECTOR(trapvinst)	| 7: TRAPV instruction
45	VECTOR(privinst)	| 8: privilege violation
46	VECTOR(trace)		| 9: trace
47	VECTOR(illinst)		| 10: line 1010 emulator
48	VECTOR(fpfline)		| 11: line 1111 emulator
49	VECTOR(badtrap)		| 12: unassigned, reserved
50	VECTOR(coperr)		| 13: coprocessor protocol violation
51	VECTOR(fmterr)		| 14: format error
52	VECTOR(badtrap)		| 15: uninitialized interrupt vector
53	VECTOR(badtrap)		| 16: unassigned, reserved
54	VECTOR(badtrap)		| 17: unassigned, reserved
55	VECTOR(badtrap)		| 18: unassigned, reserved
56	VECTOR(badtrap)		| 19: unassigned, reserved
57	VECTOR(badtrap)		| 20: unassigned, reserved
58	VECTOR(badtrap)		| 21: unassigned, reserved
59	VECTOR(badtrap)		| 22: unassigned, reserved
60	VECTOR(badtrap)		| 23: unassigned, reserved
61	VECTOR(spurintr)	| 24: spurious interrupt
62
63GLOBAL(autovects)
64#ifdef _ATARIHW_
65	VECTOR(lev1intr)	| 25: level 1 interrupt autovector
66#else
67	VECTOR(badtrap)		| 25: Not supported by hardware
68#endif
69	VECTOR(lev2intr)	| 26: level 2 interrupt autovector
70	VECTOR(lev3intr)	| 27: level 3 interrupt autovector
71	VECTOR(lev4intr)	| 28: level 4 interrupt autovector
72	VECTOR(lev5intr)	| 29: level 5 interrupt autovector
73	VECTOR(lev6intr)	| 30: level 6 interrupt autovector
74	VECTOR(lev7intr)	| 31: level 7 interrupt autovector
75	VECTOR(trap0)		| 32: syscalls
76#ifdef COMPAT_13
77	VECTOR(trap1)		| 33: compat_13_sigreturn
78#else
79	VECTOR(illinst)		| 33: TRAP instruction vector
80#endif
81	VECTOR(trap2)		| 34: trace
82#ifdef COMPAT_16
83	VECTOR(trap3)		| 35: compat_16_sigreturn special syscall
84#else
85	VECTOR(illinst)
86#endif
87	VECTOR(illinst)		| 36: TRAP instruction vector
88	VECTOR(illinst)		| 37: TRAP instruction vector
89	VECTOR(illinst)		| 38: TRAP instruction vector
90	VECTOR(illinst)		| 39: TRAP instruction vector
91	VECTOR(illinst)		| 40: TRAP instruction vector
92	VECTOR(illinst)		| 41: TRAP instruction vector
93	VECTOR(illinst)		| 42: TRAP instruction vector
94	VECTOR(illinst)		| 43: TRAP instruction vector
95	VECTOR(trap12)		| 44: TRAP instruction vector
96	VECTOR(illinst)		| 45: TRAP instruction vector
97	VECTOR(illinst)		| 46: TRAP instruction vector
98	VECTOR(trap15)		| 47: TRAP instruction vector
99#ifdef FPSP
100	ASVECTOR(bsun)		| 48: FPCP branch/set on unordered cond
101	ASVECTOR(inex)		| 49: FPCP inexact result
102	ASVECTOR(dz)		| 50: FPCP divide by zero
103	ASVECTOR(unfl)		| 51: FPCP underflow
104	ASVECTOR(operr)		| 52: FPCP operand error
105	ASVECTOR(ovfl)		| 53: FPCP overflow
106	ASVECTOR(snan)		| 54: FPCP signalling NAN
107#else
108	VECTOR(fpfault)		| 48: FPCP branch/set on unordered cond
109	VECTOR(fpfault)		| 49: FPCP inexact result
110	VECTOR(fpfault)		| 50: FPCP divide by zero
111	VECTOR(fpfault)		| 51: FPCP underflow
112	VECTOR(fpfault)		| 52: FPCP operand error
113	VECTOR(fpfault)		| 53: FPCP overflow
114	VECTOR(fpfault)		| 54: FPCP signalling NAN
115#endif
116
117	VECTOR(fpunsupp)	| 55: FPCP unimplemented data type
118	VECTOR(badtrap)		| 56: unassigned, reserved
119	VECTOR(badtrap)		| 57: unassigned, reserved
120	VECTOR(badtrap)		| 58: unassigned, reserved
121	VECTOR(badtrap)		| 59: unassigned, reserved
122	VECTOR(badtrap)		| 60: unassigned, reserved
123	VECTOR(badtrap)		| 61: unassigned, reserved
124	VECTOR(badtrap)		| 62: unassigned, reserved
125	VECTOR(badtrap)		| 63: unassigned, reserved
126
127GLOBAL(uservects)
128	/*
129	 * MFP 1 auto vectors (ipl 6)
130	 */
131	VECTOR(intr_glue)	|  64: parallel port - BUSY
132	VECTOR(badmfpint)	|  65: modem port 1 - DCD
133	VECTOR(badmfpint)	|  66: modem port 1 - CTS
134	VECTOR(badmfpint)	|  67: ISA1 [ Hades only ]
135	VECTOR(badmfpint)	|  68: modem port 1 baudgen (Timer D)
136#ifdef STATCLOCK
137	ASVECTOR(mfp_timc)	|  69: Timer C {stat,prof}clock
138#else
139	VECTOR(badmfpint)	|  69: Timer C
140#endif /* STATCLOCK */
141#if NKBD > 0
142	ASVECTOR(mfp_kbd)	|  70: KBD/MIDI IRQ
143#else
144	VECTOR(badmfpint)	|  70:
145#endif /* NKBD > 0 */
146	VECTOR(intr_glue)	|  71: FDC/ACSI DMA
147	VECTOR(badmfpint)	|  72: Display enable counter
148	VECTOR(badmfpint)	|  73: modem port 1 - XMIT error
149	VECTOR(badmfpint)	|  74: modem port 1 - XMIT buffer empty
150	VECTOR(badmfpint)	|  75: modem port 1 - RCV error
151	VECTOR(badmfpint)	|  76: modem port 1 - RCV buffer full
152	ASVECTOR(mfp_tima)	|  77: Timer A (System clock)
153	VECTOR(badmfpint)	|  78: modem port 1 - RI
154	VECTOR(badmfpint)	|  79: Monochrome detect (ISA2 [ Hades only ])
155
156	/*
157	 * MFP 2 auto vectors (ipl 6)
158	 */
159	VECTOR(badmfpint)	|  80: I/O pin 1 J602
160	VECTOR(badmfpint)	|  81: I/O pin 3 J602
161	VECTOR(badmfpint)	|  82: SCC-DMA
162	VECTOR(badmfpint)	|  83: modem port 2 - RI
163	VECTOR(badmfpint)	|  84: serial port 1 baudgen (Timer D)
164	VECTOR(badmfpint)	|  85: TCCLC SCC (Timer C)
165	VECTOR(badmfpint)	|  86: FDC Drive Ready
166#if NNCRSCSI > 0
167	ASVECTOR(mfp2_5380dm)	|  87: SCSI DMA
168#else
169	VECTOR(badmfpint)	|  87:
170#endif /* NNCRSCSI > 0 */
171	VECTOR(badmfpint)	|  88: Display enable (Timer B)
172	VECTOR(badmfpint)	|  89: serial port 1 - XMIT error
173	VECTOR(badmfpint)	|  90: serial port 1 - XMIT buffer empty
174	VECTOR(badmfpint)	|  91: serial port 1 - RCV error
175	VECTOR(badmfpint)	|  92: serial port 1 - RCV buffer full
176	VECTOR(badmfpint)	|  93: Timer A
177	VECTOR(badmfpint)	|  94: RTC
178#if NNCRSCSI > 0
179	ASVECTOR(mfp2_5380)	|  95: SCSI 5380
180#else
181	VECTOR(badmfpint)	|  95:
182#endif /* NNCRSCSI > 0 */
183
184	/*
185	 * Interrupts from the 8530 SCC
186	 */
187	VECTOR(badtrap)		|  96: SCC Tx empty channel B
188	VECTOR(badtrap)		|  97: Not used
189	VECTOR(badtrap)		|  98: SCC Ext./Status Channel B
190	VECTOR(badtrap)		|  99: Not used
191	VECTOR(badtrap)		| 100: SCC Rx Channel B
192	VECTOR(badtrap)		| 101: Not used
193	VECTOR(badtrap)		| 102: SCC Special Rx cond.  Channel B
194	VECTOR(badtrap)		| 103: Not used
195	VECTOR(badtrap)		| 104: SCC Tx empty channel A
196	VECTOR(badtrap)		| 105: Not used
197	VECTOR(badtrap)		| 106: SCC Ext./Status Channel A
198	VECTOR(badtrap)		| 107: Not used
199	VECTOR(badtrap)		| 108: SCC Rx Channel A
200	VECTOR(badtrap)		| 109: Not used
201	VECTOR(badtrap)		| 110: SCC Special Rx cond.  Channel A
202	VECTOR(badtrap)		| 111: Not used
203
204#define BADTRAP16	VECTOR(badtrap) ; VECTOR(badtrap) ; \
205			VECTOR(badtrap) ; VECTOR(badtrap) ; \
206			VECTOR(badtrap) ; VECTOR(badtrap) ; \
207			VECTOR(badtrap) ; VECTOR(badtrap) ; \
208			VECTOR(badtrap) ; VECTOR(badtrap) ; \
209			VECTOR(badtrap) ; VECTOR(badtrap) ; \
210			VECTOR(badtrap) ; VECTOR(badtrap) ; \
211			VECTOR(badtrap) ; VECTOR(badtrap) ;
212	BADTRAP16		| 112-255: user interrupt vectors
213	BADTRAP16		| 112-255: user interrupt vectors
214	BADTRAP16		| 112-255: user interrupt vectors
215	BADTRAP16		| 112-255: user interrupt vectors
216	BADTRAP16		| 112-255: user interrupt vectors
217	BADTRAP16		| 112-255: user interrupt vectors
218	BADTRAP16		| 112-255: user interrupt vectors
219	BADTRAP16		| 112-255: user interrupt vectors
220	BADTRAP16		| 112-255: user interrupt vectors
221	BADTRAP16		| 112-255: user interrupt vectors
222