| /* |
| * arch/sh/kernel/cpu/sh4/ex.S |
| * |
| * The SH-4 exception vector table. |
| |
| * Copyright (C) 1999, 2000, 2002 Niibe Yutaka |
| * Copyright (C) 2003 Paul Mundt |
| * |
| * This file is subject to the terms and conditions of the GNU General Public |
| * License. See the file "COPYING" in the main directory of this archive |
| * for more details. |
| * |
| */ |
| #include <linux/linkage.h> |
| #include <linux/config.h> |
| |
| .align 2 |
| .data |
| |
| ENTRY(exception_handling_table) |
| .long exception_error /* 000 */ |
| .long exception_error |
| #if defined(CONFIG_MMU) |
| .long tlb_miss_load /* 040 */ |
| .long tlb_miss_store |
| .long initial_page_write |
| .long tlb_protection_violation_load |
| .long tlb_protection_violation_store |
| .long address_error_load |
| .long address_error_store /* 100 */ |
| #else |
| .long exception_error ! tlb miss load /* 040 */ |
| .long exception_error ! tlb miss store |
| .long exception_error ! initial page write |
| .long exception_error ! tlb prot violation load |
| .long exception_error ! tlb prot violation store |
| .long exception_error ! address error load |
| .long exception_error ! address error store /* 100 */ |
| #endif |
| #if defined(CONFIG_SH_FPU) |
| .long do_fpu_error /* 120 */ |
| #else |
| .long exception_error /* 120 */ |
| #endif |
| .long exception_error /* 140 */ |
| .long system_call ! Unconditional Trap /* 160 */ |
| .long exception_error ! reserved_instruction (filled by trap_init) /* 180 */ |
| .long exception_error ! illegal_slot_instruction (filled by trap_init) /*1A0*/ |
| ENTRY(nmi_slot) |
| #if defined (CONFIG_KGDB_NMI) |
| .long debug_enter /* 1C0 */ ! Allow trap to debugger |
| #else |
| .long exception_none /* 1C0 */ ! Not implemented yet |
| #endif |
| ENTRY(user_break_point_trap) |
| .long break_point_trap /* 1E0 */ |
| ENTRY(interrupt_table) |
| ! external hardware |
| .long do_IRQ ! 0000 /* 200 */ |
| .long do_IRQ ! 0001 |
| .long do_IRQ ! 0010 |
| .long do_IRQ ! 0011 |
| .long do_IRQ ! 0100 |
| .long do_IRQ ! 0101 |
| .long do_IRQ ! 0110 |
| .long do_IRQ ! 0111 |
| .long do_IRQ ! 1000 /* 300 */ |
| .long do_IRQ ! 1001 |
| .long do_IRQ ! 1010 |
| .long do_IRQ ! 1011 |
| .long do_IRQ ! 1100 |
| .long do_IRQ ! 1101 |
| .long do_IRQ ! 1110 |
| .long exception_error |
| ! Internal hardware |
| .long do_IRQ ! TMU0 tuni0 /* 400 */ |
| .long do_IRQ ! TMU1 tuni1 |
| .long do_IRQ ! TMU2 tuni2 |
| .long do_IRQ ! ticpi2 |
| #if defined(CONFIG_CPU_SUBTYPE_SH7760) |
| .long exception_error |
| .long exception_error |
| .long exception_error |
| .long exception_error |
| .long exception_error /* 500 */ |
| .long exception_error |
| .long exception_error |
| #else |
| .long do_IRQ ! RTC ati |
| .long do_IRQ ! pri |
| .long do_IRQ ! cui |
| .long do_IRQ ! SCI eri |
| .long do_IRQ ! rxi /* 500 */ |
| .long do_IRQ ! txi |
| .long do_IRQ ! tei |
| #endif |
| .long do_IRQ ! WDT iti /* 560 */ |
| .long do_IRQ ! REF rcmi |
| .long do_IRQ ! rovi |
| .long do_IRQ |
| .long do_IRQ /* 5E0 */ |
| .long do_IRQ ! 32 Hitachi UDI /* 600 */ |
| .long do_IRQ ! 33 GPIO |
| .long do_IRQ ! 34 DMAC dmte0 |
| .long do_IRQ ! 35 dmte1 |
| .long do_IRQ ! 36 dmte2 |
| .long do_IRQ ! 37 dmte3 |
| .long do_IRQ ! 38 dmae |
| .long exception_error ! 39 /* 6E0 */ |
| #if defined(CONFIG_CPU_SUBTYPE_SH7760) |
| .long exception_error /* 700 */ |
| .long exception_error |
| .long exception_error |
| .long exception_error /* 760 */ |
| #else |
| .long do_IRQ ! 40 SCIF eri /* 700 */ |
| .long do_IRQ ! 41 rxi |
| .long do_IRQ ! 42 bri |
| .long do_IRQ ! 43 txi |
| #endif |
| #if CONFIG_NR_ONCHIP_DMA_CHANNELS == 8 |
| .long do_IRQ ! 44 DMAC dmte4 /* 780 */ |
| .long do_IRQ ! 45 dmte5 |
| .long do_IRQ ! 46 dmte6 |
| .long do_IRQ ! 47 dmte7 /* 7E0 */ |
| #else |
| .long exception_error ! 44 /* 780 */ |
| .long exception_error ! 45 |
| .long exception_error ! 46 |
| .long exception_error ! 47 |
| #endif |
| #if defined(CONFIG_SH_FPU) |
| .long do_fpu_state_restore ! 48 /* 800 */ |
| .long do_fpu_state_restore ! 49 /* 820 */ |
| #else |
| .long exception_error |
| .long exception_error |
| #endif |
| #if defined(CONFIG_CPU_SUBTYPE_SH7751) |
| .long exception_error /* 840 */ |
| .long exception_error |
| .long exception_error |
| .long exception_error |
| .long exception_error |
| .long exception_error |
| .long exception_error /* 900 */ |
| .long exception_error |
| .long exception_error |
| .long exception_error |
| .long exception_error |
| .long exception_error |
| .long exception_error |
| .long exception_error |
| .long do_IRQ ! PCI serr /* A00 */ |
| .long do_IRQ ! dma3 |
| .long do_IRQ ! dma2 |
| .long do_IRQ ! dma1 |
| .long do_IRQ ! dma0 |
| .long do_IRQ ! pwon |
| .long do_IRQ ! pwdwn |
| .long do_IRQ ! err |
| .long do_IRQ ! TMU3 tuni3 /* B00 */ |
| .long exception_error |
| .long exception_error |
| .long exception_error |
| .long do_IRQ ! TMU4 tuni4 /* B80 */ |
| #elif defined(CONFIG_CPU_SUBTYPE_SH7760) |
| .long do_IRQ ! IRQ irq6 /* 840 */ |
| .long do_IRQ ! irq7 |
| .long do_IRQ ! SCIF eri0 |
| .long do_IRQ ! rxi0 |
| .long do_IRQ ! bri0 |
| .long do_IRQ ! txi0 |
| .long do_IRQ ! HCAN2 cani0 /* 900 */ |
| .long do_IRQ ! cani1 |
| .long do_IRQ ! SSI ssii0 |
| .long do_IRQ ! ssii1 |
| .long do_IRQ ! HAC haci0 |
| .long do_IRQ ! haci1 |
| .long do_IRQ ! IIC iici0 |
| .long do_IRQ ! iici1 |
| .long do_IRQ ! USB usbi /* A00 */ |
| .long do_IRQ ! LCDC vint |
| .long exception_error |
| .long exception_error |
| .long do_IRQ ! DMABRG dmabrgi0 |
| .long do_IRQ ! dmabrgi1 |
| .long do_IRQ ! dmabrgi2 |
| .long exception_error |
| .long do_IRQ ! SCIF eri1 /* B00 */ |
| .long do_IRQ ! rxi1 |
| .long do_IRQ ! bri1 |
| .long do_IRQ ! txi1 |
| .long do_IRQ ! eri2 |
| .long do_IRQ ! rxi2 |
| .long do_IRQ ! bri2 |
| .long do_IRQ ! txi2 |
| .long do_IRQ ! SIM simeri /* C00 */ |
| .long do_IRQ ! simrxi |
| .long do_IRQ ! simtxi |
| .long do_IRQ ! simtei |
| .long do_IRQ ! HSPI spii |
| .long exception_error |
| .long exception_error |
| .long exception_error |
| .long do_IRQ ! MMCIF mmci0 /* D00 */ |
| .long do_IRQ ! mmci1 |
| .long do_IRQ ! mmci2 |
| .long do_IRQ ! mmci3 |
| .long exception_error |
| .long exception_error |
| .long exception_error |
| .long exception_error |
| .long exception_error /* E00 */ |
| .long exception_error |
| .long exception_error |
| .long exception_error |
| .long do_IRQ ! MFI mfii |
| .long exception_error |
| .long exception_error |
| .long exception_error |
| .long exception_error /* F00 */ |
| .long exception_error |
| .long exception_error |
| .long exception_error |
| .long do_IRQ ! ADC adi |
| .long do_IRQ ! CMT cmti /* FA0 */ |
| #elif defined(CONFIG_CPU_SUBTYPE_SH73180) |
| .long do_IRQ ! 50 0x840 |
| .long do_IRQ ! 51 0x860 |
| .long do_IRQ ! 52 0x880 |
| .long do_IRQ ! 53 0x8a0 |
| .long do_IRQ ! 54 0x8c0 |
| .long do_IRQ ! 55 0x8e0 |
| .long do_IRQ ! 56 0x900 |
| .long do_IRQ ! 57 0x920 |
| .long do_IRQ ! 58 0x940 |
| .long do_IRQ ! 59 0x960 |
| .long do_IRQ ! 60 0x980 |
| .long do_IRQ ! 61 0x9a0 |
| .long do_IRQ ! 62 0x9c0 |
| .long do_IRQ ! 63 0x9e0 |
| .long do_IRQ ! 64 0xa00 |
| .long do_IRQ ! 65 0xa20 |
| .long do_IRQ ! 66 0xa40 |
| .long do_IRQ ! 67 0xa60 |
| .long do_IRQ ! 68 0xa80 |
| .long do_IRQ ! 69 0xaa0 |
| .long do_IRQ ! 70 0xac0 |
| .long do_IRQ ! 71 0xae0 |
| .long do_IRQ ! 72 0xb00 |
| .long do_IRQ ! 73 0xb20 |
| .long do_IRQ ! 74 0xb40 |
| .long do_IRQ ! 75 0xb60 |
| .long do_IRQ ! 76 0xb80 |
| .long do_IRQ ! 77 0xba0 |
| .long do_IRQ ! 78 0xbc0 |
| .long do_IRQ ! 79 0xbe0 |
| .long do_IRQ ! 80 0xc00 |
| .long do_IRQ ! 81 0xc20 |
| .long do_IRQ ! 82 0xc40 |
| .long do_IRQ ! 83 0xc60 |
| .long do_IRQ ! 84 0xc80 |
| .long do_IRQ ! 85 0xca0 |
| .long do_IRQ ! 86 0xcc0 |
| .long do_IRQ ! 87 0xce0 |
| .long do_IRQ ! 88 0xd00 |
| .long do_IRQ ! 89 0xd20 |
| .long do_IRQ ! 90 0xd40 |
| .long do_IRQ ! 91 0xd60 |
| .long do_IRQ ! 92 0xd80 |
| .long do_IRQ ! 93 0xda0 |
| .long do_IRQ ! 94 0xdc0 |
| .long do_IRQ ! 95 0xde0 |
| .long do_IRQ ! 96 0xe00 |
| .long do_IRQ ! 97 0xe20 |
| .long do_IRQ ! 98 0xe40 |
| .long do_IRQ ! 99 0xe60 |
| .long do_IRQ ! 100 0xe80 |
| .long do_IRQ ! 101 0xea0 |
| .long do_IRQ ! 102 0xec0 |
| .long do_IRQ ! 103 0xee0 |
| .long do_IRQ ! 104 0xf00 |
| .long do_IRQ ! 105 0xf20 |
| .long do_IRQ ! 106 0xf40 |
| .long do_IRQ ! 107 0xf60 |
| .long do_IRQ ! 108 0xf80 |
| #elif defined(CONFIG_CPU_SUBTYPE_ST40STB1) |
| .long exception_error ! 50 0x840 |
| .long exception_error ! 51 0x860 |
| .long exception_error ! 52 0x880 |
| .long exception_error ! 53 0x8a0 |
| .long exception_error ! 54 0x8c0 |
| .long exception_error ! 55 0x8e0 |
| .long exception_error ! 56 0x900 |
| .long exception_error ! 57 0x920 |
| .long exception_error ! 58 0x940 |
| .long exception_error ! 59 0x960 |
| .long exception_error ! 60 0x980 |
| .long exception_error ! 61 0x9a0 |
| .long exception_error ! 62 0x9c0 |
| .long exception_error ! 63 0x9e0 |
| .long do_IRQ ! 64 0xa00 PCI serr |
| .long do_IRQ ! 65 0xa20 err |
| .long do_IRQ ! 66 0xa40 ad |
| .long do_IRQ ! 67 0xa60 pwr_dwn |
| .long exception_error ! 68 0xa80 |
| .long exception_error ! 69 0xaa0 |
| .long exception_error ! 70 0xac0 |
| .long exception_error ! 71 0xae0 |
| .long do_IRQ ! 72 0xb00 DMA INT0 |
| .long do_IRQ ! 73 0xb20 INT1 |
| .long do_IRQ ! 74 0xb40 INT2 |
| .long do_IRQ ! 75 0xb60 INT3 |
| .long do_IRQ ! 76 0xb80 INT4 |
| .long exception_error ! 77 0xba0 |
| .long do_IRQ ! 78 0xbc0 DMA ERR |
| .long exception_error ! 79 0xbe0 |
| .long do_IRQ ! 80 0xc00 PIO0 |
| .long do_IRQ ! 81 0xc20 PIO1 |
| .long do_IRQ ! 82 0xc40 PIO2 |
| .long exception_error ! 83 0xc60 |
| .long exception_error ! 84 0xc80 |
| .long exception_error ! 85 0xca0 |
| .long exception_error ! 86 0xcc0 |
| .long exception_error ! 87 0xce0 |
| .long exception_error ! 88 0xd00 |
| .long exception_error ! 89 0xd20 |
| .long exception_error ! 90 0xd40 |
| .long exception_error ! 91 0xd60 |
| .long exception_error ! 92 0xd80 |
| .long exception_error ! 93 0xda0 |
| .long exception_error ! 94 0xdc0 |
| .long exception_error ! 95 0xde0 |
| .long exception_error ! 96 0xe00 |
| .long exception_error ! 97 0xe20 |
| .long exception_error ! 98 0xe40 |
| .long exception_error ! 99 0xe60 |
| .long exception_error ! 100 0xe80 |
| .long exception_error ! 101 0xea0 |
| .long exception_error ! 102 0xec0 |
| .long exception_error ! 103 0xee0 |
| .long exception_error ! 104 0xf00 |
| .long exception_error ! 105 0xf20 |
| .long exception_error ! 106 0xf40 |
| .long exception_error ! 107 0xf60 |
| .long exception_error ! 108 0xf80 |
| .long exception_error ! 109 0xfa0 |
| .long exception_error ! 110 0xfc0 |
| .long exception_error ! 111 0xfe0 |
| .long do_IRQ ! 112 0x1000 Mailbox |
| .long exception_error ! 113 0x1020 |
| .long exception_error ! 114 0x1040 |
| .long exception_error ! 115 0x1060 |
| .long exception_error ! 116 0x1080 |
| .long exception_error ! 117 0x10a0 |
| .long exception_error ! 118 0x10c0 |
| .long exception_error ! 119 0x10e0 |
| .long exception_error ! 120 0x1100 |
| .long exception_error ! 121 0x1120 |
| .long exception_error ! 122 0x1140 |
| .long exception_error ! 123 0x1160 |
| .long exception_error ! 124 0x1180 |
| .long exception_error ! 125 0x11a0 |
| .long exception_error ! 126 0x11c0 |
| .long exception_error ! 127 0x11e0 |
| .long exception_error ! 128 0x1200 |
| .long exception_error ! 129 0x1220 |
| .long exception_error ! 130 0x1240 |
| .long exception_error ! 131 0x1260 |
| .long exception_error ! 132 0x1280 |
| .long exception_error ! 133 0x12a0 |
| .long exception_error ! 134 0x12c0 |
| .long exception_error ! 135 0x12e0 |
| .long exception_error ! 136 0x1300 |
| .long exception_error ! 137 0x1320 |
| .long exception_error ! 138 0x1340 |
| .long exception_error ! 139 0x1360 |
| .long do_IRQ ! 140 0x1380 EMPI INV_ADDR |
| .long exception_error ! 141 0x13a0 |
| .long exception_error ! 142 0x13c0 |
| .long exception_error ! 143 0x13e0 |
| #endif |
| |