;
;  Port on Texas Instruments TMS320C6x architecture
;
;  Copyright (C) 2004, 2006, 2009, 2010, 2011 Texas Instruments Incorporated
;  Author: Aurelien Jacquiot (aurelien.jacquiot@jaluna.com)
;
;  This program is free software; you can redistribute it and/or modify
;  it under the terms of the GNU General Public License version 2 as
;  published by the Free Software Foundation.
;
;  This section handles all the interrupt vector routines.
;  At RESET the processor sets up the DRAM timing parameters and
;  branches to the label _c_int00 which handles initialization for the C code.
;

#define ALIGNMENT 5

	.macro IRQVEC name, handler
	.align ALIGNMENT
	.hidden \name
	.global \name
\name:
#ifdef CONFIG_C6X_BIG_KERNEL
	STW	.D2T1	A0,*B15--[2]
 ||	MVKL	.S1	\handler,A0
	MVKH	.S1	\handler,A0
	B	.S2X	A0
	LDW	.D2T1	*++B15[2],A0
	NOP	4
	NOP
	NOP
	.endm
#else /* CONFIG_C6X_BIG_KERNEL */
	B	.S2	\handler
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	.endm
#endif /* CONFIG_C6X_BIG_KERNEL */

	   .sect ".vectors","ax"
	   .align ALIGNMENT
	   .global RESET
	   .hidden RESET
RESET:
#ifdef CONFIG_C6X_BIG_KERNEL
	   MVKL	.S1	_c_int00,A0		; branch to _c_int00
	   MVKH	.S1	_c_int00,A0
	   B	.S2X	A0
#else
	   B	.S2	_c_int00
	   NOP
	   NOP
#endif
	   NOP
	   NOP
	   NOP
	   NOP
	   NOP


	   IRQVEC NMI,_nmi_handler		; NMI interrupt
	   IRQVEC AINT,_bad_interrupt		; reserved
	   IRQVEC MSGINT,_bad_interrupt		; reserved

	   IRQVEC INT4,_int4_handler
	   IRQVEC INT5,_int5_handler
	   IRQVEC INT6,_int6_handler
	   IRQVEC INT7,_int7_handler
	   IRQVEC INT8,_int8_handler
	   IRQVEC INT9,_int9_handler
	   IRQVEC INT10,_int10_handler
	   IRQVEC INT11,_int11_handler
	   IRQVEC INT12,_int12_handler
	   IRQVEC INT13,_int13_handler
	   IRQVEC INT14,_int14_handler
	   IRQVEC INT15,_int15_handler
