/*
 *  arch/sh/kernel/cpu/sh3/ex.S
 *
 *  The SH-3 exception vector table.

 *  Copyright (C) 1999, 2000, 2002  Niibe Yutaka
 *  Copyright (C) 2003  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>
#include <linux/config.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
	.long	exception_error	! fpu_exception	/* 120 */
	.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 */
ENTRY(interrupt_table)
	! external hardware
	.long	do_IRQ	! 0000		/* 200 */
	.long	do_IRQ	! 0001
	.long	do_IRQ	! 0010
	.long	do_IRQ	! 0011
	.long	do_IRQ	! 0100
	.long	do_IRQ	! 0101
	.long	do_IRQ	! 0110
	.long	do_IRQ	! 0111
	.long	do_IRQ	! 1000		/* 300 */
	.long	do_IRQ	! 1001
	.long	do_IRQ	! 1010
	.long	do_IRQ	! 1011
	.long	do_IRQ	! 1100
	.long	do_IRQ	! 1101
	.long	do_IRQ	! 1110
	.long	exception_error		
	! Internal hardware
	.long	do_IRQ	! TMU0 tuni0	/* 400 */
	.long	do_IRQ	! TMU1 tuni1
	.long	do_IRQ	! TMU2 tuni2
	.long	do_IRQ	!      ticpi2
	.long	do_IRQ	! RTC  ati
	.long	do_IRQ	!      pri
	.long	do_IRQ	!      cui
	.long	do_IRQ	! SCI  eri
	.long	do_IRQ	!      rxi	/* 500 */
	.long	do_IRQ	!      txi
	.long	do_IRQ	!      tei
	.long	do_IRQ	! WDT  iti	/* 560 */
	.long	do_IRQ	! REF  rcmi
	.long	do_IRQ	!      rovi
	.long	do_IRQ			
	.long	do_IRQ			/* 5E0 */
#if  defined(CONFIG_CPU_SUBTYPE_SH7707) || defined(CONFIG_CPU_SUBTYPE_SH7709)
	.long	do_IRQ	! 32 IRQ  irq0	/* 600 */
	.long	do_IRQ	! 33      irq1
	.long	do_IRQ	! 34      irq2
	.long	do_IRQ	! 35      irq3
	.long	do_IRQ	! 36      irq4
	.long	do_IRQ	! 37      irq5
	.long	do_IRQ	! 38
	.long	do_IRQ	! 39
	.long	do_IRQ	! 40 PINT pint0-7	/* 700 */
	.long	do_IRQ	! 41      pint8-15
	.long	do_IRQ	! 42
	.long	do_IRQ	! 43
	.long	do_IRQ	! 44
	.long	do_IRQ	! 45	
	.long	do_IRQ	! 46
	.long	do_IRQ	! 47
	.long	do_IRQ	! 48 DMAC dei0	/* 800 */
	.long	do_IRQ	! 49      dei1
	.long	do_IRQ	! 50      dei2
	.long	do_IRQ	! 51      dei3
	.long	do_IRQ	! 52 IrDA eri1
	.long	do_IRQ	! 53      rxi1
	.long	do_IRQ	! 54      bri1
	.long	do_IRQ	! 55      txi1
	.long	do_IRQ	! 56 SCIF eri2
	.long	do_IRQ	! 57      rxi2
	.long	do_IRQ	! 58      bri2
	.long	do_IRQ	! 59      txi2
	.long	do_IRQ	! 60 ADC  adi	/* 980 */
#if defined(CONFIG_CPU_SUBTYPE_SH7707)
	.long   do_IRQ	! 61 LCDC lcdi	/* 9A0 */
	.long   do_IRQ	! 62 PCC  pcc0i
	.long   do_IRQ	! 63      pcc1i	/* 9E0 */
#endif
#endif

