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 | ||