71 lines
1020 B
ArmAsm
71 lines
1020 B
ArmAsm
/* SPDX-License-Identifier: GPL-2.0
|
|
*
|
|
* arch/sh/kernel/cpu/sh2a/ex.S
|
|
*
|
|
* The SH-2A exception vector table
|
|
*
|
|
* Copyright (C) 2008 Yoshinori Sato
|
|
*/
|
|
|
|
#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
|
|
vector = 0
|
|
.rept 256
|
|
.long exception_entry1 + vector * 6
|
|
vector = vector + 1
|
|
.endr
|