xref: /openbmc/linux/arch/sh/kernel/cpu/sh3/ex.S (revision 597473720f4dc69749542bfcfed4a927a43d935e)
1*5ab5d57cSKuninori Morimoto/* SPDX-License-Identifier: GPL-2.0
2*5ab5d57cSKuninori Morimoto *
31da177e4SLinus Torvalds *  arch/sh/kernel/cpu/sh3/ex.S
41da177e4SLinus Torvalds *
500bf0610SPaul Mundt *  The SH-3 and SH-4 exception vector table.
6*5ab5d57cSKuninori Morimoto *
71da177e4SLinus Torvalds *  Copyright (C) 1999, 2000, 2002  Niibe Yutaka
8ef9247efSPaul Mundt *  Copyright (C) 2003 - 2008  Paul Mundt
91da177e4SLinus Torvalds */
101da177e4SLinus Torvalds#include <linux/linkage.h>
111da177e4SLinus Torvalds
12ef9247efSPaul Mundt#if !defined(CONFIG_MMU)
13ef9247efSPaul Mundt#define	tlb_miss_load			exception_error
14ef9247efSPaul Mundt#define tlb_miss_store			exception_error
15ef9247efSPaul Mundt#define initial_page_write		exception_error
16ef9247efSPaul Mundt#define tlb_protection_violation_load	exception_error
17ef9247efSPaul Mundt#define tlb_protection_violation_store	exception_error
18ef9247efSPaul Mundt#define address_error_load		exception_error
19ef9247efSPaul Mundt#define address_error_store		exception_error
20ef9247efSPaul Mundt#endif
21ef9247efSPaul Mundt
22ef9247efSPaul Mundt#if !defined(CONFIG_SH_FPU)
23ef9247efSPaul Mundt#define	fpu_error_trap_handler		exception_error
24ef9247efSPaul Mundt#endif
25ef9247efSPaul Mundt
26ab6e570bSPaul Mundt#if !defined(CONFIG_KGDB)
27ef9247efSPaul Mundt#define kgdb_handle_exception		exception_error
28ef9247efSPaul Mundt#endif
29ef9247efSPaul Mundt
301da177e4SLinus Torvalds	.align 2
311da177e4SLinus Torvalds	.data
321da177e4SLinus Torvalds
331da177e4SLinus TorvaldsENTRY(exception_handling_table)
341da177e4SLinus Torvalds	.long	exception_error		/* 000 */
351da177e4SLinus Torvalds	.long	exception_error
361da177e4SLinus Torvalds	.long	tlb_miss_load		/* 040 */
371da177e4SLinus Torvalds	.long	tlb_miss_store
381da177e4SLinus Torvalds	.long	initial_page_write
391da177e4SLinus Torvalds	.long	tlb_protection_violation_load
401da177e4SLinus Torvalds	.long	tlb_protection_violation_store
411da177e4SLinus Torvalds	.long	address_error_load
421da177e4SLinus Torvalds	.long	address_error_store	/* 100 */
4374d99a5eSPaul Mundt	.long	fpu_error_trap_handler	/* 120 */
441da177e4SLinus Torvalds	.long	exception_error		/* 140 */
451da177e4SLinus Torvalds	.long	system_call	! Unconditional Trap	 /* 160 */
461da177e4SLinus Torvalds	.long	exception_error	! reserved_instruction (filled by trap_init) /* 180 */
471da177e4SLinus Torvalds	.long	exception_error	! illegal_slot_instruction (filled by trap_init) /*1A0*/
481e1030dcSPaul Mundt	.long	nmi_trap_handler	/* 1C0 */	! Allow trap to debugger
4909a07294SPaul Mundt	.long	breakpoint_trap_handler	/* 1E0 */
501f666587SPaul Mundt
511f666587SPaul Mundt	/*
521f666587SPaul Mundt	 * Pad the remainder of the table out, exceptions residing in far
531f666587SPaul Mundt	 * away offsets can be manually inserted in to their appropriate
541f666587SPaul Mundt	 * location via set_exception_table_{evt,vec}().
551f666587SPaul Mundt	 */
561f666587SPaul Mundt	.balign	4096,0,4096
57