diff options
| author | Paul Mundt <lethal@linux-sh.org> | 2007-05-08 00:01:37 -0400 |
|---|---|---|
| committer | Paul Mundt <lethal@hera.kernel.org> | 2007-05-08 21:35:01 -0400 |
| commit | 00bf0610e4cdbb9fd79ce4718e12b24cd7876dd7 (patch) | |
| tree | ebfa6cb7c42e84ef694ad5805450547835de586e /arch | |
| parent | 44530c696b3fc2c8a45bdc798af85528e065ed80 (diff) | |
sh: Share exception vector table for SH-3/4.
The only difference between these at the moment are the FPU
exceptions, and these are hidden away under CONFIG_SH_FPU
(which is only set for the SH-4 case anyways..).
This consolidates the two tables, and updates SH-4 to use
the updated copy.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/sh/kernel/cpu/sh3/ex.S | 13 | ||||
| -rw-r--r-- | arch/sh/kernel/cpu/sh4/Makefile | 6 | ||||
| -rw-r--r-- | arch/sh/kernel/cpu/sh4/ex.S | 62 |
3 files changed, 11 insertions, 70 deletions
diff --git a/arch/sh/kernel/cpu/sh3/ex.S b/arch/sh/kernel/cpu/sh3/ex.S index ba3082d640b5..2b2a9e02fb75 100644 --- a/arch/sh/kernel/cpu/sh3/ex.S +++ b/arch/sh/kernel/cpu/sh3/ex.S | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * arch/sh/kernel/cpu/sh3/ex.S | 2 | * arch/sh/kernel/cpu/sh3/ex.S |
| 3 | * | 3 | * |
| 4 | * The SH-3 exception vector table. | 4 | * The SH-3 and SH-4 exception vector table. |
| 5 | 5 | ||
| 6 | * Copyright (C) 1999, 2000, 2002 Niibe Yutaka | 6 | * Copyright (C) 1999, 2000, 2002 Niibe Yutaka |
| 7 | * Copyright (C) 2003 - 2006 Paul Mundt | 7 | * Copyright (C) 2003 - 2006 Paul Mundt |
| @@ -9,7 +9,6 @@ | |||
| 9 | * This file is subject to the terms and conditions of the GNU General Public | 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 | 10 | * License. See the file "COPYING" in the main directory of this archive |
| 11 | * for more details. | 11 | * for more details. |
| 12 | * | ||
| 13 | */ | 12 | */ |
| 14 | #include <linux/linkage.h> | 13 | #include <linux/linkage.h> |
| 15 | 14 | ||
| @@ -36,8 +35,12 @@ ENTRY(exception_handling_table) | |||
| 36 | .long exception_error ! address error load | 35 | .long exception_error ! address error load |
| 37 | .long exception_error ! address error store /* 100 */ | 36 | .long exception_error ! address error store /* 100 */ |
| 38 | #endif | 37 | #endif |
| 39 | .long exception_error ! fpu_exception /* 120 */ | 38 | #if defined(CONFIG_SH_FPU) |
| 40 | .long exception_error /* 140 */ | 39 | .long do_fpu_error /* 120 */ |
| 40 | #else | ||
| 41 | .long exception_error /* 120 */ | ||
| 42 | #endif | ||
| 43 | .long exception_error /* 140 */ | ||
| 41 | .long system_call ! Unconditional Trap /* 160 */ | 44 | .long system_call ! Unconditional Trap /* 160 */ |
| 42 | .long exception_error ! reserved_instruction (filled by trap_init) /* 180 */ | 45 | .long exception_error ! reserved_instruction (filled by trap_init) /* 180 */ |
| 43 | .long exception_error ! illegal_slot_instruction (filled by trap_init) /*1A0*/ | 46 | .long exception_error ! illegal_slot_instruction (filled by trap_init) /*1A0*/ |
| @@ -55,4 +58,4 @@ ENTRY(user_break_point_trap) | |||
| 55 | * away offsets can be manually inserted in to their appropriate | 58 | * away offsets can be manually inserted in to their appropriate |
| 56 | * location via set_exception_table_{evt,vec}(). | 59 | * location via set_exception_table_{evt,vec}(). |
| 57 | */ | 60 | */ |
| 58 | .balign 4096,0,4096 | 61 | .balign 4096,0,4096 |
diff --git a/arch/sh/kernel/cpu/sh4/Makefile b/arch/sh/kernel/cpu/sh4/Makefile index 19ca68c71884..8add10bd8268 100644 --- a/arch/sh/kernel/cpu/sh4/Makefile +++ b/arch/sh/kernel/cpu/sh4/Makefile | |||
| @@ -2,10 +2,10 @@ | |||
| 2 | # Makefile for the Linux/SuperH SH-4 backends. | 2 | # Makefile for the Linux/SuperH SH-4 backends. |
| 3 | # | 3 | # |
| 4 | 4 | ||
| 5 | obj-y := ex.o probe.o common.o | 5 | obj-y := probe.o common.o |
| 6 | common-y += $(addprefix ../sh3/, entry.o) | 6 | common-y += $(addprefix ../sh3/, entry.o ex.o) |
| 7 | 7 | ||
| 8 | obj-$(CONFIG_SH_FPU) += fpu.o | 8 | obj-$(CONFIG_SH_FPU) += fpu.o |
| 9 | obj-$(CONFIG_SH_STORE_QUEUES) += sq.o | 9 | obj-$(CONFIG_SH_STORE_QUEUES) += sq.o |
| 10 | 10 | ||
| 11 | # CPU subtype setup | 11 | # CPU subtype setup |
diff --git a/arch/sh/kernel/cpu/sh4/ex.S b/arch/sh/kernel/cpu/sh4/ex.S deleted file mode 100644 index ac8ab57413cc..000000000000 --- a/arch/sh/kernel/cpu/sh4/ex.S +++ /dev/null | |||
| @@ -1,62 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * arch/sh/kernel/cpu/sh4/ex.S | ||
| 3 | * | ||
| 4 | * The SH-4 exception vector table. | ||
| 5 | |||
| 6 | * Copyright (C) 1999, 2000, 2002 Niibe Yutaka | ||
| 7 | * Copyright (C) 2003 - 2006 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 | |||
| 19 | ENTRY(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 | #if defined(CONFIG_SH_FPU) | ||
| 40 | .long do_fpu_error /* 120 */ | ||
| 41 | #else | ||
| 42 | .long exception_error /* 120 */ | ||
| 43 | #endif | ||
| 44 | .long exception_error /* 140 */ | ||
| 45 | .long system_call ! Unconditional Trap /* 160 */ | ||
| 46 | .long exception_error ! reserved_instruction (filled by trap_init) /* 180 */ | ||
| 47 | .long exception_error ! illegal_slot_instruction (filled by trap_init) /*1A0*/ | ||
| 48 | ENTRY(nmi_slot) | ||
| 49 | #if defined (CONFIG_KGDB_NMI) | ||
| 50 | .long debug_enter /* 1C0 */ ! Allow trap to debugger | ||
| 51 | #else | ||
| 52 | .long exception_none /* 1C0 */ ! Not implemented yet | ||
| 53 | #endif | ||
| 54 | ENTRY(user_break_point_trap) | ||
| 55 | .long break_point_trap /* 1E0 */ | ||
| 56 | |||
| 57 | /* | ||
| 58 | * Pad the remainder of the table out, exceptions residing in far | ||
| 59 | * away offsets can be manually inserted in to their appropriate | ||
| 60 | * location via set_exception_table_{evt,vec}(). | ||
| 61 | */ | ||
| 62 | .balign 4096,0,4096 | ||
