Yoshinori Sato | de39840 | 2006-11-05 16:15:19 +0900 | [diff] [blame] | 1 | /* |
| 2 | * arch/sh/kernel/cpu/sh2/ex.S |
| 3 | * |
| 4 | * The SH-2 exception vector table |
| 5 | * |
| 6 | * Copyright (C) 2005 Yoshinori Sato |
| 7 | * |
| 8 | * This file is subject to the terms and conditions of the GNU General Public |
| 9 | * License. See the file "COPYING" in the main directory of this archive |
| 10 | * for more details. |
| 11 | */ |
| 12 | |
| 13 | #include <linux/linkage.h> |
| 14 | |
| 15 | ! |
| 16 | ! convert Exception Vector to Exception Number |
| 17 | ! |
| 18 | exception_entry: |
| 19 | no = 0 |
| 20 | .rept 256 |
Yoshinori Sato | 6e80f5e | 2008-07-10 01:20:03 +0900 | [diff] [blame] | 21 | mov.l r1,@-sp |
Yoshinori Sato | de39840 | 2006-11-05 16:15:19 +0900 | [diff] [blame] | 22 | bra exception_trampoline |
Yoshinori Sato | 6e80f5e | 2008-07-10 01:20:03 +0900 | [diff] [blame] | 23 | mov #no,r1 |
Yoshinori Sato | de39840 | 2006-11-05 16:15:19 +0900 | [diff] [blame] | 24 | no = no + 1 |
| 25 | .endr |
| 26 | exception_trampoline: |
Yoshinori Sato | 6e80f5e | 2008-07-10 01:20:03 +0900 | [diff] [blame] | 27 | mov.l r0,@-sp |
| 28 | mov.l $exception_handler,r0 |
| 29 | extu.b r1,r1 |
| 30 | jmp @r0 |
| 31 | extu.w r1,r1 |
Yoshinori Sato | de39840 | 2006-11-05 16:15:19 +0900 | [diff] [blame] | 32 | |
| 33 | .align 2 |
| 34 | $exception_entry: |
| 35 | .long exception_entry |
| 36 | $exception_handler: |
| 37 | .long exception_handler |
| 38 | ! |
| 39 | ! Exception Vector Base |
| 40 | ! |
| 41 | .align 2 |
| 42 | ENTRY(vbr_base) |
| 43 | vector = 0 |
| 44 | .rept 256 |
Yoshinori Sato | 6e80f5e | 2008-07-10 01:20:03 +0900 | [diff] [blame] | 45 | .long exception_entry + vector * 6 |
Yoshinori Sato | de39840 | 2006-11-05 16:15:19 +0900 | [diff] [blame] | 46 | vector = vector + 1 |
| 47 | .endr |