1*234a0538SKuninori Morimoto/* SPDX-License-Identifier: GPL-2.0 2*234a0538SKuninori 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