diff options
| author | Russell King <rmk+kernel@arm.linux.org.uk> | 2012-01-13 15:00:22 +0000 | 
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2012-01-13 15:00:22 +0000 | 
| commit | 4de3a8e101150feaefa1139611a50ff37467f33e (patch) | |
| tree | daada742542518b02d7db7c5d32e715eaa5f166d /arch/c6x/kernel/vectors.S | |
| parent | 294064f58953f9964e5945424b09c51800330a83 (diff) | |
| parent | 099469502f62fbe0d7e4f0b83a2f22538367f734 (diff) | |
| download | olio-linux-3.10-4de3a8e101150feaefa1139611a50ff37467f33e.tar.xz olio-linux-3.10-4de3a8e101150feaefa1139611a50ff37467f33e.zip  | |
Merge branch 'master' into fixes
Diffstat (limited to 'arch/c6x/kernel/vectors.S')
| -rw-r--r-- | arch/c6x/kernel/vectors.S | 81 | 
1 files changed, 81 insertions, 0 deletions
diff --git a/arch/c6x/kernel/vectors.S b/arch/c6x/kernel/vectors.S new file mode 100644 index 00000000000..c95c66fc71e --- /dev/null +++ b/arch/c6x/kernel/vectors.S @@ -0,0 +1,81 @@ +; +;  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  |