xref: /openbmc/linux/arch/sh/kernel/cpu/sh2a/ex.S (revision 234a0538)
1234a0538SKuninori Morimoto/* SPDX-License-Identifier: GPL-2.0
2234a0538SKuninori Morimoto *
36e80f5e8SYoshinori Sato * arch/sh/kernel/cpu/sh2a/ex.S
46e80f5e8SYoshinori Sato *
56e80f5e8SYoshinori Sato * The SH-2A exception vector table
66e80f5e8SYoshinori Sato *
76e80f5e8SYoshinori Sato * Copyright (C) 2008 Yoshinori Sato
86e80f5e8SYoshinori Sato */
96e80f5e8SYoshinori Sato
106e80f5e8SYoshinori Sato#include <linux/linkage.h>
116e80f5e8SYoshinori Sato
126e80f5e8SYoshinori Sato!
136e80f5e8SYoshinori Sato! convert Exception Vector to Exception Number
146e80f5e8SYoshinori Sato!
156e80f5e8SYoshinori Sato
166e80f5e8SYoshinori Sato! exception no 0 to 255
176e80f5e8SYoshinori Satoexception_entry0:
186e80f5e8SYoshinori Satono	=	0
196e80f5e8SYoshinori Sato	.rept	256
206e80f5e8SYoshinori Sato	mov.l	r1,@-sp
216e80f5e8SYoshinori Sato	bra	exception_trampoline0
226e80f5e8SYoshinori Sato	mov	#no,r1
236e80f5e8SYoshinori Satono	=	no + 1
246e80f5e8SYoshinori Sato	.endr
256e80f5e8SYoshinori Satoexception_trampoline0:
266e80f5e8SYoshinori Sato	mov.l	r0,@-sp
276e80f5e8SYoshinori Sato	mov.l	1f,r0
286e80f5e8SYoshinori Sato	extu.b	r1,r1
296e80f5e8SYoshinori Sato	jmp	@r0
306e80f5e8SYoshinori Sato	  extu.w	r1,r1
316e80f5e8SYoshinori Sato
326e80f5e8SYoshinori Sato	.align	2
336e80f5e8SYoshinori Sato1:	.long	exception_handler
346e80f5e8SYoshinori Sato
356e80f5e8SYoshinori Sato! exception no 256 to 511
366e80f5e8SYoshinori Satoexception_entry1:
376e80f5e8SYoshinori Satono	=	0
386e80f5e8SYoshinori Sato	.rept	256
396e80f5e8SYoshinori Sato	mov.l	r1,@-sp
406e80f5e8SYoshinori Sato	bra	exception_trampoline1
416e80f5e8SYoshinori Sato	mov	#no,r1
426e80f5e8SYoshinori Satono	=	no + 1
436e80f5e8SYoshinori Sato	.endr
446e80f5e8SYoshinori Satoexception_trampoline1:
456e80f5e8SYoshinori Sato	mov.l	r0,@-sp
466e80f5e8SYoshinori Sato	extu.b	r1,r1
476e80f5e8SYoshinori Sato	movi20	#0x100,r0
486e80f5e8SYoshinori Sato	add	r0,r1
496e80f5e8SYoshinori Sato	mov.l	1f,r0
506e80f5e8SYoshinori Sato	jmp	@r0
516e80f5e8SYoshinori Sato	  extu.w	r1,r1
526e80f5e8SYoshinori Sato
536e80f5e8SYoshinori Sato	.align	2
546e80f5e8SYoshinori Sato1:	.long	exception_handler
556e80f5e8SYoshinori Sato
566e80f5e8SYoshinori Sato	!
576e80f5e8SYoshinori Sato! Exception Vector Base
586e80f5e8SYoshinori Sato!
596e80f5e8SYoshinori Sato	.align	2
606e80f5e8SYoshinori SatoENTRY(vbr_base)
616e80f5e8SYoshinori Satovector	=	0
626e80f5e8SYoshinori Sato	.rept	256
636e80f5e8SYoshinori Sato	.long	exception_entry0 + vector * 6
646e80f5e8SYoshinori Satovector	=	vector + 1
656e80f5e8SYoshinori Sato	.endr
66de3a49b8SPhil Edworthyvector	=	0
676e80f5e8SYoshinori Sato	.rept	256
686e80f5e8SYoshinori Sato	.long	exception_entry1 + vector * 6
696e80f5e8SYoshinori Satovector	=	vector + 1
706e80f5e8SYoshinori Sato	.endr
71