Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* |
| 2 | * arch/sh/kernel/cpu/sh3/ex.S |
| 3 | * |
Paul Mundt | 00bf061 | 2007-05-08 13:01:37 +0900 | [diff] [blame] | 4 | * The SH-3 and SH-4 exception vector table. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 5 | |
| 6 | * Copyright (C) 1999, 2000, 2002 Niibe Yutaka |
Paul Mundt | 1f66658 | 2006-10-19 16:20:25 +0900 | [diff] [blame] | 7 | * Copyright (C) 2003 - 2006 Paul Mundt |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 12 | */ |
| 13 | #include <linux/linkage.h> |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 14 | |
| 15 | .align 2 |
| 16 | .data |
| 17 | |
| 18 | ENTRY(exception_handling_table) |
| 19 | .long exception_error /* 000 */ |
| 20 | .long exception_error |
| 21 | #if defined(CONFIG_MMU) |
| 22 | .long tlb_miss_load /* 040 */ |
| 23 | .long tlb_miss_store |
| 24 | .long initial_page_write |
| 25 | .long tlb_protection_violation_load |
| 26 | .long tlb_protection_violation_store |
| 27 | .long address_error_load |
| 28 | .long address_error_store /* 100 */ |
| 29 | #else |
| 30 | .long exception_error ! tlb miss load /* 040 */ |
| 31 | .long exception_error ! tlb miss store |
| 32 | .long exception_error ! initial page write |
| 33 | .long exception_error ! tlb prot violation load |
| 34 | .long exception_error ! tlb prot violation store |
| 35 | .long exception_error ! address error load |
| 36 | .long exception_error ! address error store /* 100 */ |
| 37 | #endif |
Paul Mundt | 00bf061 | 2007-05-08 13:01:37 +0900 | [diff] [blame] | 38 | #if defined(CONFIG_SH_FPU) |
| 39 | .long do_fpu_error /* 120 */ |
| 40 | #else |
| 41 | .long exception_error /* 120 */ |
| 42 | #endif |
| 43 | .long exception_error /* 140 */ |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 44 | .long system_call ! Unconditional Trap /* 160 */ |
| 45 | .long exception_error ! reserved_instruction (filled by trap_init) /* 180 */ |
| 46 | .long exception_error ! illegal_slot_instruction (filled by trap_init) /*1A0*/ |
| 47 | ENTRY(nmi_slot) |
| 48 | #if defined (CONFIG_KGDB_NMI) |
| 49 | .long debug_enter /* 1C0 */ ! Allow trap to debugger |
| 50 | #else |
| 51 | .long exception_none /* 1C0 */ ! Not implemented yet |
| 52 | #endif |
| 53 | ENTRY(user_break_point_trap) |
| 54 | .long break_point_trap /* 1E0 */ |
Paul Mundt | 1f66658 | 2006-10-19 16:20:25 +0900 | [diff] [blame] | 55 | |
| 56 | /* |
| 57 | * Pad the remainder of the table out, exceptions residing in far |
| 58 | * away offsets can be manually inserted in to their appropriate |
| 59 | * location via set_exception_table_{evt,vec}(). |
| 60 | */ |
Paul Mundt | 00bf061 | 2007-05-08 13:01:37 +0900 | [diff] [blame] | 61 | .balign 4096,0,4096 |