1*1da177e4SLinus Torvalds/* 2*1da177e4SLinus Torvalds * arch/sh/kernel/cpu/sh3/ex.S 3*1da177e4SLinus Torvalds * 4*1da177e4SLinus Torvalds * The SH-3 exception vector table. 5*1da177e4SLinus Torvalds 6*1da177e4SLinus Torvalds * Copyright (C) 1999, 2000, 2002 Niibe Yutaka 7*1da177e4SLinus Torvalds * Copyright (C) 2003 Paul Mundt 8*1da177e4SLinus Torvalds * 9*1da177e4SLinus Torvalds * This file is subject to the terms and conditions of the GNU General Public 10*1da177e4SLinus Torvalds * License. See the file "COPYING" in the main directory of this archive 11*1da177e4SLinus Torvalds * for more details. 12*1da177e4SLinus Torvalds * 13*1da177e4SLinus Torvalds */ 14*1da177e4SLinus Torvalds#include <linux/linkage.h> 15*1da177e4SLinus Torvalds#include <linux/config.h> 16*1da177e4SLinus Torvalds 17*1da177e4SLinus Torvalds .align 2 18*1da177e4SLinus Torvalds .data 19*1da177e4SLinus Torvalds 20*1da177e4SLinus TorvaldsENTRY(exception_handling_table) 21*1da177e4SLinus Torvalds .long exception_error /* 000 */ 22*1da177e4SLinus Torvalds .long exception_error 23*1da177e4SLinus Torvalds#if defined(CONFIG_MMU) 24*1da177e4SLinus Torvalds .long tlb_miss_load /* 040 */ 25*1da177e4SLinus Torvalds .long tlb_miss_store 26*1da177e4SLinus Torvalds .long initial_page_write 27*1da177e4SLinus Torvalds .long tlb_protection_violation_load 28*1da177e4SLinus Torvalds .long tlb_protection_violation_store 29*1da177e4SLinus Torvalds .long address_error_load 30*1da177e4SLinus Torvalds .long address_error_store /* 100 */ 31*1da177e4SLinus Torvalds#else 32*1da177e4SLinus Torvalds .long exception_error ! tlb miss load /* 040 */ 33*1da177e4SLinus Torvalds .long exception_error ! tlb miss store 34*1da177e4SLinus Torvalds .long exception_error ! initial page write 35*1da177e4SLinus Torvalds .long exception_error ! tlb prot violation load 36*1da177e4SLinus Torvalds .long exception_error ! tlb prot violation store 37*1da177e4SLinus Torvalds .long exception_error ! address error load 38*1da177e4SLinus Torvalds .long exception_error ! address error store /* 100 */ 39*1da177e4SLinus Torvalds#endif 40*1da177e4SLinus Torvalds .long exception_error ! fpu_exception /* 120 */ 41*1da177e4SLinus Torvalds .long exception_error /* 140 */ 42*1da177e4SLinus Torvalds .long system_call ! Unconditional Trap /* 160 */ 43*1da177e4SLinus Torvalds .long exception_error ! reserved_instruction (filled by trap_init) /* 180 */ 44*1da177e4SLinus Torvalds .long exception_error ! illegal_slot_instruction (filled by trap_init) /*1A0*/ 45*1da177e4SLinus TorvaldsENTRY(nmi_slot) 46*1da177e4SLinus Torvalds#if defined (CONFIG_KGDB_NMI) 47*1da177e4SLinus Torvalds .long debug_enter /* 1C0 */ ! Allow trap to debugger 48*1da177e4SLinus Torvalds#else 49*1da177e4SLinus Torvalds .long exception_none /* 1C0 */ ! Not implemented yet 50*1da177e4SLinus Torvalds#endif 51*1da177e4SLinus TorvaldsENTRY(user_break_point_trap) 52*1da177e4SLinus Torvalds .long break_point_trap /* 1E0 */ 53*1da177e4SLinus TorvaldsENTRY(interrupt_table) 54*1da177e4SLinus Torvalds ! external hardware 55*1da177e4SLinus Torvalds .long do_IRQ ! 0000 /* 200 */ 56*1da177e4SLinus Torvalds .long do_IRQ ! 0001 57*1da177e4SLinus Torvalds .long do_IRQ ! 0010 58*1da177e4SLinus Torvalds .long do_IRQ ! 0011 59*1da177e4SLinus Torvalds .long do_IRQ ! 0100 60*1da177e4SLinus Torvalds .long do_IRQ ! 0101 61*1da177e4SLinus Torvalds .long do_IRQ ! 0110 62*1da177e4SLinus Torvalds .long do_IRQ ! 0111 63*1da177e4SLinus Torvalds .long do_IRQ ! 1000 /* 300 */ 64*1da177e4SLinus Torvalds .long do_IRQ ! 1001 65*1da177e4SLinus Torvalds .long do_IRQ ! 1010 66*1da177e4SLinus Torvalds .long do_IRQ ! 1011 67*1da177e4SLinus Torvalds .long do_IRQ ! 1100 68*1da177e4SLinus Torvalds .long do_IRQ ! 1101 69*1da177e4SLinus Torvalds .long do_IRQ ! 1110 70*1da177e4SLinus Torvalds .long exception_error 71*1da177e4SLinus Torvalds ! Internal hardware 72*1da177e4SLinus Torvalds .long do_IRQ ! TMU0 tuni0 /* 400 */ 73*1da177e4SLinus Torvalds .long do_IRQ ! TMU1 tuni1 74*1da177e4SLinus Torvalds .long do_IRQ ! TMU2 tuni2 75*1da177e4SLinus Torvalds .long do_IRQ ! ticpi2 76*1da177e4SLinus Torvalds .long do_IRQ ! RTC ati 77*1da177e4SLinus Torvalds .long do_IRQ ! pri 78*1da177e4SLinus Torvalds .long do_IRQ ! cui 79*1da177e4SLinus Torvalds .long do_IRQ ! SCI eri 80*1da177e4SLinus Torvalds .long do_IRQ ! rxi /* 500 */ 81*1da177e4SLinus Torvalds .long do_IRQ ! txi 82*1da177e4SLinus Torvalds .long do_IRQ ! tei 83*1da177e4SLinus Torvalds .long do_IRQ ! WDT iti /* 560 */ 84*1da177e4SLinus Torvalds .long do_IRQ ! REF rcmi 85*1da177e4SLinus Torvalds .long do_IRQ ! rovi 86*1da177e4SLinus Torvalds .long do_IRQ 87*1da177e4SLinus Torvalds .long do_IRQ /* 5E0 */ 88*1da177e4SLinus Torvalds#if defined(CONFIG_CPU_SUBTYPE_SH7707) || defined(CONFIG_CPU_SUBTYPE_SH7709) || \ 89*1da177e4SLinus Torvalds defined(CONFIG_CPU_SUBTYPE_SH7300) || defined(CONFIG_CPU_SUBTYPE_SH7705) 90*1da177e4SLinus Torvalds .long do_IRQ ! 32 IRQ irq0 /* 600 */ 91*1da177e4SLinus Torvalds .long do_IRQ ! 33 irq1 92*1da177e4SLinus Torvalds .long do_IRQ ! 34 irq2 93*1da177e4SLinus Torvalds .long do_IRQ ! 35 irq3 94*1da177e4SLinus Torvalds .long do_IRQ ! 36 irq4 95*1da177e4SLinus Torvalds .long do_IRQ ! 37 irq5 96*1da177e4SLinus Torvalds .long do_IRQ ! 38 97*1da177e4SLinus Torvalds .long do_IRQ ! 39 98*1da177e4SLinus Torvalds .long do_IRQ ! 40 PINT pint0-7 /* 700 */ 99*1da177e4SLinus Torvalds .long do_IRQ ! 41 pint8-15 100*1da177e4SLinus Torvalds .long do_IRQ ! 42 101*1da177e4SLinus Torvalds .long do_IRQ ! 43 102*1da177e4SLinus Torvalds .long do_IRQ ! 44 103*1da177e4SLinus Torvalds .long do_IRQ ! 45 104*1da177e4SLinus Torvalds .long do_IRQ ! 46 105*1da177e4SLinus Torvalds .long do_IRQ ! 47 106*1da177e4SLinus Torvalds .long do_IRQ ! 48 DMAC dei0 /* 800 */ 107*1da177e4SLinus Torvalds .long do_IRQ ! 49 dei1 108*1da177e4SLinus Torvalds .long do_IRQ ! 50 dei2 109*1da177e4SLinus Torvalds .long do_IRQ ! 51 dei3 110*1da177e4SLinus Torvalds .long do_IRQ ! 52 IrDA eri1 111*1da177e4SLinus Torvalds .long do_IRQ ! 53 rxi1 112*1da177e4SLinus Torvalds .long do_IRQ ! 54 bri1 113*1da177e4SLinus Torvalds .long do_IRQ ! 55 txi1 114*1da177e4SLinus Torvalds .long do_IRQ ! 56 SCIF eri2 115*1da177e4SLinus Torvalds .long do_IRQ ! 57 rxi2 116*1da177e4SLinus Torvalds .long do_IRQ ! 58 bri2 117*1da177e4SLinus Torvalds .long do_IRQ ! 59 txi2 118*1da177e4SLinus Torvalds .long do_IRQ ! 60 ADC adi /* 980 */ 119*1da177e4SLinus Torvalds#if defined(CONFIG_CPU_SUBTYPE_SH7705) 120*1da177e4SLinus Torvalds .long exception_none ! 61 /* 9A0 */ 121*1da177e4SLinus Torvalds .long exception_none ! 62 122*1da177e4SLinus Torvalds .long exception_none ! 63 123*1da177e4SLinus Torvalds .long exception_none ! 64 /* A00 */ 124*1da177e4SLinus Torvalds .long do_IRQ ! 65 USB usi0 125*1da177e4SLinus Torvalds .long do_IRQ ! 66 usi1 126*1da177e4SLinus Torvalds .long exception_none ! 67 127*1da177e4SLinus Torvalds .long exception_none ! 68 128*1da177e4SLinus Torvalds .long exception_none ! 69 129*1da177e4SLinus Torvalds .long exception_none ! 70 130*1da177e4SLinus Torvalds .long exception_none ! 71 131*1da177e4SLinus Torvalds .long exception_none ! 72 /* B00 */ 132*1da177e4SLinus Torvalds .long exception_none ! 73 133*1da177e4SLinus Torvalds .long exception_none ! 74 134*1da177e4SLinus Torvalds .long exception_none ! 75 135*1da177e4SLinus Torvalds .long exception_none ! 76 136*1da177e4SLinus Torvalds .long exception_none ! 77 137*1da177e4SLinus Torvalds .long exception_none ! 78 138*1da177e4SLinus Torvalds .long exception_none ! 79 139*1da177e4SLinus Torvalds .long do_IRQ ! 80 TPU0 tpi0 /* C00 */ 140*1da177e4SLinus Torvalds .long do_IRQ ! 81 TPU1 tpi1 141*1da177e4SLinus Torvalds .long exception_none ! 82 142*1da177e4SLinus Torvalds .long exception_none ! 83 143*1da177e4SLinus Torvalds .long do_IRQ ! 84 TPU2 tpi2 144*1da177e4SLinus Torvalds .long do_IRQ ! 85 TPU3 tpi3 /* CA0 */ 145*1da177e4SLinus Torvalds#endif 146*1da177e4SLinus Torvalds#if defined(CONFIG_CPU_SUBTYPE_SH7707) || defined(CONFIG_CPU_SUBTYPE_SH7300) 147*1da177e4SLinus Torvalds .long do_IRQ ! 61 LCDC lcdi /* 9A0 */ 148*1da177e4SLinus Torvalds .long do_IRQ ! 62 PCC pcc0i 149*1da177e4SLinus Torvalds .long do_IRQ ! 63 pcc1i /* 9E0 */ 150*1da177e4SLinus Torvalds#endif 151*1da177e4SLinus Torvalds#if defined(CONFIG_CPU_SUBTYPE_SH7300) 152*1da177e4SLinus Torvalds .long do_IRQ ! 64 153*1da177e4SLinus Torvalds .long do_IRQ ! 65 154*1da177e4SLinus Torvalds .long do_IRQ ! 66 155*1da177e4SLinus Torvalds .long do_IRQ ! 67 156*1da177e4SLinus Torvalds .long do_IRQ ! 68 157*1da177e4SLinus Torvalds .long do_IRQ ! 69 158*1da177e4SLinus Torvalds .long do_IRQ ! 70 159*1da177e4SLinus Torvalds .long do_IRQ ! 71 160*1da177e4SLinus Torvalds .long do_IRQ ! 72 161*1da177e4SLinus Torvalds .long do_IRQ ! 73 162*1da177e4SLinus Torvalds .long do_IRQ ! 74 163*1da177e4SLinus Torvalds .long do_IRQ ! 75 164*1da177e4SLinus Torvalds .long do_IRQ ! 76 165*1da177e4SLinus Torvalds .long do_IRQ ! 77 166*1da177e4SLinus Torvalds .long do_IRQ ! 78 167*1da177e4SLinus Torvalds .long do_IRQ ! 79 168*1da177e4SLinus Torvalds .long do_IRQ ! 80 SCIF0(SH7300) 169*1da177e4SLinus Torvalds .long do_IRQ ! 81 170*1da177e4SLinus Torvalds .long do_IRQ ! 82 171*1da177e4SLinus Torvalds .long do_IRQ ! 83 172*1da177e4SLinus Torvalds .long do_IRQ ! 84 173*1da177e4SLinus Torvalds .long do_IRQ ! 85 174*1da177e4SLinus Torvalds .long do_IRQ ! 86 175*1da177e4SLinus Torvalds .long do_IRQ ! 87 176*1da177e4SLinus Torvalds .long do_IRQ ! 88 177*1da177e4SLinus Torvalds .long do_IRQ ! 89 178*1da177e4SLinus Torvalds .long do_IRQ ! 90 179*1da177e4SLinus Torvalds .long do_IRQ ! 91 180*1da177e4SLinus Torvalds .long do_IRQ ! 92 181*1da177e4SLinus Torvalds .long do_IRQ ! 93 182*1da177e4SLinus Torvalds .long do_IRQ ! 94 183*1da177e4SLinus Torvalds .long do_IRQ ! 95 184*1da177e4SLinus Torvalds .long do_IRQ ! 96 185*1da177e4SLinus Torvalds .long do_IRQ ! 97 186*1da177e4SLinus Torvalds .long do_IRQ ! 98 187*1da177e4SLinus Torvalds .long do_IRQ ! 99 188*1da177e4SLinus Torvalds .long do_IRQ ! 100 189*1da177e4SLinus Torvalds .long do_IRQ ! 101 190*1da177e4SLinus Torvalds .long do_IRQ ! 102 191*1da177e4SLinus Torvalds .long do_IRQ ! 103 192*1da177e4SLinus Torvalds .long do_IRQ ! 104 193*1da177e4SLinus Torvalds .long do_IRQ ! 105 194*1da177e4SLinus Torvalds .long do_IRQ ! 106 195*1da177e4SLinus Torvalds .long do_IRQ ! 107 196*1da177e4SLinus Torvalds .long do_IRQ ! 108 197*1da177e4SLinus Torvalds#endif 198*1da177e4SLinus Torvalds#endif 199*1da177e4SLinus Torvalds 200