xref: /openbmc/linux/arch/sh/kernel/cpu/sh3/ex.S (revision 74d99a5e262229ee865f6f68528d10b82471ead6)
11da177e4SLinus Torvalds/*
21da177e4SLinus Torvalds *  arch/sh/kernel/cpu/sh3/ex.S
31da177e4SLinus Torvalds *
400bf0610SPaul Mundt *  The SH-3 and SH-4 exception vector table.
51da177e4SLinus Torvalds
61da177e4SLinus Torvalds *  Copyright (C) 1999, 2000, 2002  Niibe Yutaka
71f666587SPaul Mundt *  Copyright (C) 2003 - 2006  Paul Mundt
81da177e4SLinus Torvalds *
91da177e4SLinus Torvalds * This file is subject to the terms and conditions of the GNU General Public
101da177e4SLinus Torvalds * License.  See the file "COPYING" in the main directory of this archive
111da177e4SLinus Torvalds * for more details.
121da177e4SLinus Torvalds */
131da177e4SLinus Torvalds#include <linux/linkage.h>
141da177e4SLinus Torvalds
151da177e4SLinus Torvalds	.align 2
161da177e4SLinus Torvalds	.data
171da177e4SLinus Torvalds
181da177e4SLinus TorvaldsENTRY(exception_handling_table)
191da177e4SLinus Torvalds	.long	exception_error		/* 000 */
201da177e4SLinus Torvalds	.long	exception_error
211da177e4SLinus Torvalds#if defined(CONFIG_MMU)
221da177e4SLinus Torvalds	.long	tlb_miss_load		/* 040 */
231da177e4SLinus Torvalds	.long	tlb_miss_store
241da177e4SLinus Torvalds	.long	initial_page_write
251da177e4SLinus Torvalds	.long	tlb_protection_violation_load
261da177e4SLinus Torvalds	.long	tlb_protection_violation_store
271da177e4SLinus Torvalds	.long	address_error_load
281da177e4SLinus Torvalds	.long	address_error_store	/* 100 */
291da177e4SLinus Torvalds#else
301da177e4SLinus Torvalds	.long	exception_error	! tlb miss load		/* 040 */
311da177e4SLinus Torvalds	.long	exception_error	! tlb miss store
321da177e4SLinus Torvalds	.long	exception_error	! initial page write
331da177e4SLinus Torvalds	.long	exception_error	! tlb prot violation load
341da177e4SLinus Torvalds	.long	exception_error	! tlb prot violation store
351da177e4SLinus Torvalds	.long	exception_error	! address error load
361da177e4SLinus Torvalds	.long	exception_error	! address error store	/* 100 */
371da177e4SLinus Torvalds#endif
3800bf0610SPaul Mundt#if defined(CONFIG_SH_FPU)
39*74d99a5eSPaul Mundt	.long	fpu_error_trap_handler	/* 120 */
4000bf0610SPaul Mundt#else
4100bf0610SPaul Mundt	.long	exception_error		/* 120 */
4200bf0610SPaul Mundt#endif
431da177e4SLinus Torvalds	.long	exception_error		/* 140 */
441da177e4SLinus Torvalds	.long	system_call	! Unconditional Trap	 /* 160 */
451da177e4SLinus Torvalds	.long	exception_error	! reserved_instruction (filled by trap_init) /* 180 */
461da177e4SLinus Torvalds	.long	exception_error	! illegal_slot_instruction (filled by trap_init) /*1A0*/
471da177e4SLinus TorvaldsENTRY(nmi_slot)
481da177e4SLinus Torvalds#if defined (CONFIG_KGDB_NMI)
4996a8a0baSPaul Mundt	.long	kgdb_handle_exception	/* 1C0 */	! Allow trap to debugger
501da177e4SLinus Torvalds#else
511da177e4SLinus Torvalds	.long	exception_none	/* 1C0 */	! Not implemented yet
521da177e4SLinus Torvalds#endif
531da177e4SLinus TorvaldsENTRY(user_break_point_trap)
541da177e4SLinus Torvalds	.long	break_point_trap	/* 1E0 */
551f666587SPaul Mundt
561f666587SPaul Mundt	/*
571f666587SPaul Mundt	 * Pad the remainder of the table out, exceptions residing in far
581f666587SPaul Mundt	 * away offsets can be manually inserted in to their appropriate
591f666587SPaul Mundt	 * location via set_exception_table_{evt,vec}().
601f666587SPaul Mundt	 */
611f666587SPaul Mundt	.balign	4096,0,4096
62