Commit 00bf0610 authored by Paul Mundt's avatar Paul Mundt Committed by Paul Mundt

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: default avatarPaul Mundt <lethal@linux-sh.org>
parent 44530c69
/* /*
* arch/sh/kernel/cpu/sh3/ex.S * arch/sh/kernel/cpu/sh3/ex.S
* *
* The SH-3 exception vector table. * The SH-3 and SH-4 exception vector table.
* Copyright (C) 1999, 2000, 2002 Niibe Yutaka * Copyright (C) 1999, 2000, 2002 Niibe Yutaka
* Copyright (C) 2003 - 2006 Paul Mundt * Copyright (C) 2003 - 2006 Paul Mundt
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
* This file is subject to the terms and conditions of the GNU General Public * 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 * License. See the file "COPYING" in the main directory of this archive
* for more details. * for more details.
*
*/ */
#include <linux/linkage.h> #include <linux/linkage.h>
...@@ -36,8 +35,12 @@ ENTRY(exception_handling_table) ...@@ -36,8 +35,12 @@ ENTRY(exception_handling_table)
.long exception_error ! address error load .long exception_error ! address error load
.long exception_error ! address error store /* 100 */ .long exception_error ! address error store /* 100 */
#endif #endif
.long exception_error ! fpu_exception /* 120 */ #if defined(CONFIG_SH_FPU)
.long exception_error /* 140 */ .long do_fpu_error /* 120 */
#else
.long exception_error /* 120 */
#endif
.long exception_error /* 140 */
.long system_call ! Unconditional Trap /* 160 */ .long system_call ! Unconditional Trap /* 160 */
.long exception_error ! reserved_instruction (filled by trap_init) /* 180 */ .long exception_error ! reserved_instruction (filled by trap_init) /* 180 */
.long exception_error ! illegal_slot_instruction (filled by trap_init) /*1A0*/ .long exception_error ! illegal_slot_instruction (filled by trap_init) /*1A0*/
...@@ -55,4 +58,4 @@ ENTRY(user_break_point_trap) ...@@ -55,4 +58,4 @@ ENTRY(user_break_point_trap)
* away offsets can be manually inserted in to their appropriate * away offsets can be manually inserted in to their appropriate
* location via set_exception_table_{evt,vec}(). * location via set_exception_table_{evt,vec}().
*/ */
.balign 4096,0,4096 .balign 4096,0,4096
...@@ -2,10 +2,10 @@ ...@@ -2,10 +2,10 @@
# Makefile for the Linux/SuperH SH-4 backends. # Makefile for the Linux/SuperH SH-4 backends.
# #
obj-y := ex.o probe.o common.o obj-y := probe.o common.o
common-y += $(addprefix ../sh3/, entry.o) common-y += $(addprefix ../sh3/, entry.o ex.o)
obj-$(CONFIG_SH_FPU) += fpu.o obj-$(CONFIG_SH_FPU) += fpu.o
obj-$(CONFIG_SH_STORE_QUEUES) += sq.o obj-$(CONFIG_SH_STORE_QUEUES) += sq.o
# CPU subtype setup # CPU subtype setup
......
/*
* arch/sh/kernel/cpu/sh4/ex.S
*
* The SH-4 exception vector table.
* Copyright (C) 1999, 2000, 2002 Niibe Yutaka
* Copyright (C) 2003 - 2006 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>
.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 */
/*
* Pad the remainder of the table out, exceptions residing in far
* away offsets can be manually inserted in to their appropriate
* location via set_exception_table_{evt,vec}().
*/
.balign 4096,0,4096
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment