xref: /linux/arch/sh/kernel/cpu/sh3/ex.S (revision 0d3b051adbb72ed81956447d0d1e54d5943ee6f5)
1/* SPDX-License-Identifier: GPL-2.0
2 *
3 *  arch/sh/kernel/cpu/sh3/ex.S
4 *
5 *  The SH-3 and SH-4 exception vector table.
6 *
7 *  Copyright (C) 1999, 2000, 2002  Niibe Yutaka
8 *  Copyright (C) 2003 - 2008  Paul Mundt
9 */
10#include <linux/linkage.h>
11
12#if !defined(CONFIG_MMU)
13#define	tlb_miss_load			exception_error
14#define tlb_miss_store			exception_error
15#define initial_page_write		exception_error
16#define tlb_protection_violation_load	exception_error
17#define tlb_protection_violation_store	exception_error
18#define address_error_load		exception_error
19#define address_error_store		exception_error
20#endif
21
22#if !defined(CONFIG_SH_FPU)
23#define	fpu_error_trap_handler		exception_error
24#endif
25
26#if !defined(CONFIG_KGDB)
27#define kgdb_handle_exception		exception_error
28#endif
29
30	.align 2
31	.data
32
33ENTRY(exception_handling_table)
34	.long	exception_error		/* 000 */
35	.long	exception_error
36	.long	tlb_miss_load		/* 040 */
37	.long	tlb_miss_store
38	.long	initial_page_write
39	.long	tlb_protection_violation_load
40	.long	tlb_protection_violation_store
41	.long	address_error_load
42	.long	address_error_store	/* 100 */
43	.long	fpu_error_trap_handler	/* 120 */
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	.long	nmi_trap_handler	/* 1C0 */	! Allow trap to debugger
49	.long	breakpoint_trap_handler	/* 1E0 */
50
51	/*
52	 * Pad the remainder of the table out, exceptions residing in far
53	 * away offsets can be manually inserted in to their appropriate
54	 * location via set_exception_table_{evt,vec}().
55	 */
56	.balign	4096,0,4096
57