Linux 4.8-rc8
[linux/fpc-iii.git] / arch / sh / kernel / cpu / sh2a / ex.S
blob4568066700cfe4eb0e14e582d7dff6bf1b194e25
1 /*
2  * arch/sh/kernel/cpu/sh2a/ex.S
3  *
4  * The SH-2A exception vector table
5  *
6  * Copyright (C) 2008 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  */
13 #include <linux/linkage.h>
16 ! convert Exception Vector to Exception Number
19 ! exception no 0 to 255
20 exception_entry0:
21 no      =       0
22         .rept   256
23         mov.l   r1,@-sp
24         bra     exception_trampoline0
25         mov     #no,r1
26 no      =       no + 1
27         .endr
28 exception_trampoline0:
29         mov.l   r0,@-sp
30         mov.l   1f,r0
31         extu.b  r1,r1
32         jmp     @r0
33           extu.w        r1,r1
34          
35         .align  2
36 1:      .long   exception_handler
38 ! exception no 256 to 511
39 exception_entry1:
40 no      =       0
41         .rept   256
42         mov.l   r1,@-sp
43         bra     exception_trampoline1
44         mov     #no,r1
45 no      =       no + 1
46         .endr
47 exception_trampoline1:
48         mov.l   r0,@-sp
49         extu.b  r1,r1
50         movi20  #0x100,r0
51         add     r0,r1
52         mov.l   1f,r0
53         jmp     @r0
54           extu.w        r1,r1
55         
56         .align  2
57 1:      .long   exception_handler
59         !
60 ! Exception Vector Base
62         .align  2
63 ENTRY(vbr_base)
64 vector  =       0
65         .rept   256
66         .long   exception_entry0 + vector * 6
67 vector  =       vector + 1
68         .endr
69 vector  =       0
70         .rept   256
71         .long   exception_entry1 + vector * 6
72 vector  =       vector + 1
73         .endr