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