| 
									
										
										
										
											2008-07-10 01:20:03 +09:00
										 |  |  | /* | 
					
						
							|  |  |  |  * arch/sh/kernel/cpu/sh2a/ex.S | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * The SH-2A exception vector table | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Copyright (C) 2008 Yoshinori Sato | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * 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> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! | 
					
						
							|  |  |  | ! convert Exception Vector to Exception Number | 
					
						
							|  |  |  | ! | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! exception no 0 to 255 | 
					
						
							|  |  |  | exception_entry0: | 
					
						
							|  |  |  | no	=	0 | 
					
						
							|  |  |  | 	.rept	256
 | 
					
						
							|  |  |  | 	mov.l	r1,@-sp
 | 
					
						
							|  |  |  | 	bra	exception_trampoline0 | 
					
						
							|  |  |  | 	mov	#no,r1 | 
					
						
							|  |  |  | no	=	no + 1 | 
					
						
							|  |  |  | 	.endr | 
					
						
							|  |  |  | exception_trampoline0: | 
					
						
							|  |  |  | 	mov.l	r0,@-sp
 | 
					
						
							|  |  |  | 	mov.l	1f,r0 | 
					
						
							|  |  |  | 	extu.b	r1,r1 | 
					
						
							|  |  |  | 	jmp	@r0
 | 
					
						
							|  |  |  | 	  extu.w	r1,r1 | 
					
						
							|  |  |  | 	  | 
					
						
							|  |  |  | 	.align	2
 | 
					
						
							|  |  |  | 1:	.long	exception_handler | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! exception no 256 to 511 | 
					
						
							|  |  |  | exception_entry1: | 
					
						
							|  |  |  | no	=	0 | 
					
						
							|  |  |  | 	.rept	256
 | 
					
						
							|  |  |  | 	mov.l	r1,@-sp
 | 
					
						
							|  |  |  | 	bra	exception_trampoline1 | 
					
						
							|  |  |  | 	mov	#no,r1 | 
					
						
							|  |  |  | no	=	no + 1 | 
					
						
							|  |  |  | 	.endr | 
					
						
							|  |  |  | exception_trampoline1: | 
					
						
							|  |  |  | 	mov.l	r0,@-sp
 | 
					
						
							|  |  |  | 	extu.b	r1,r1 | 
					
						
							|  |  |  | 	movi20	#0x100,r0 | 
					
						
							|  |  |  | 	add	r0,r1 | 
					
						
							|  |  |  | 	mov.l	1f,r0 | 
					
						
							|  |  |  | 	jmp	@r0
 | 
					
						
							|  |  |  | 	  extu.w	r1,r1 | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	.align	2
 | 
					
						
							|  |  |  | 1:	.long	exception_handler | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	! | 
					
						
							|  |  |  | ! Exception Vector Base | 
					
						
							|  |  |  | ! | 
					
						
							|  |  |  | 	.align	2
 | 
					
						
							|  |  |  | ENTRY(vbr_base) | 
					
						
							|  |  |  | vector	=	0 | 
					
						
							|  |  |  | 	.rept	256
 | 
					
						
							|  |  |  | 	.long	exception_entry0 + vector * 6 | 
					
						
							|  |  |  | vector	=	vector + 1 | 
					
						
							|  |  |  | 	.endr | 
					
						
							| 
									
										
										
										
											2012-02-29 13:50:46 +00:00
										 |  |  | vector	=	0 | 
					
						
							| 
									
										
										
										
											2008-07-10 01:20:03 +09:00
										 |  |  | 	.rept	256
 | 
					
						
							|  |  |  | 	.long	exception_entry1 + vector * 6 | 
					
						
							|  |  |  | vector	=	vector + 1 | 
					
						
							|  |  |  | 	.endr |