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