| /* |
| * 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 |
| vector = 0 |
| .rept 256 |
| .long exception_entry1 + vector * 6 |
| vector = vector + 1 |
| .endr |