82 lines
		
	
	
	
		
			1.7 KiB
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
		
		
			
		
	
	
			82 lines
		
	
	
	
		
			1.7 KiB
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
|   | ;
 | ||
|  | ;  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 |