xref: /linux/arch/csky/include/asm/traps.h (revision 06d07429858317ded2db7986113a9e0129cd599b)
1081860b9SGuo Ren /* SPDX-License-Identifier: GPL-2.0 */
2081860b9SGuo Ren 
3081860b9SGuo Ren #ifndef __ASM_CSKY_TRAPS_H
4081860b9SGuo Ren #define __ASM_CSKY_TRAPS_H
5081860b9SGuo Ren 
65195c35aSGuo Ren #include <linux/linkage.h>
75195c35aSGuo Ren 
8081860b9SGuo Ren #define VEC_RESET	0
9081860b9SGuo Ren #define VEC_ALIGN	1
10081860b9SGuo Ren #define VEC_ACCESS	2
11081860b9SGuo Ren #define VEC_ZERODIV	3
12081860b9SGuo Ren #define VEC_ILLEGAL	4
13081860b9SGuo Ren #define VEC_PRIV	5
14081860b9SGuo Ren #define VEC_TRACE	6
15081860b9SGuo Ren #define VEC_BREAKPOINT	7
16081860b9SGuo Ren #define VEC_UNRECOVER	8
17081860b9SGuo Ren #define VEC_SOFTRESET	9
18081860b9SGuo Ren #define VEC_AUTOVEC	10
19081860b9SGuo Ren #define VEC_FAUTOVEC	11
20081860b9SGuo Ren #define VEC_HWACCEL	12
21081860b9SGuo Ren 
22081860b9SGuo Ren #define	VEC_TLBMISS	14
23081860b9SGuo Ren #define	VEC_TLBMODIFIED	15
24081860b9SGuo Ren 
25081860b9SGuo Ren #define VEC_TRAP0	16
26081860b9SGuo Ren #define VEC_TRAP1	17
27081860b9SGuo Ren #define VEC_TRAP2	18
28081860b9SGuo Ren #define VEC_TRAP3	19
29081860b9SGuo Ren 
30081860b9SGuo Ren #define	VEC_TLBINVALIDL	20
31081860b9SGuo Ren #define	VEC_TLBINVALIDS	21
32081860b9SGuo Ren 
33081860b9SGuo Ren #define VEC_PRFL	29
34081860b9SGuo Ren #define VEC_FPE		30
35081860b9SGuo Ren 
36081860b9SGuo Ren extern void *vec_base[];
37081860b9SGuo Ren 
38081860b9SGuo Ren #define VEC_INIT(i, func) \
39081860b9SGuo Ren do { \
40081860b9SGuo Ren 	vec_base[i] = (void *)func; \
41081860b9SGuo Ren } while (0)
42081860b9SGuo Ren 
43081860b9SGuo Ren void csky_alignment(struct pt_regs *regs);
44081860b9SGuo Ren 
45c8171a86SGuo Ren asmlinkage void do_trap_unknown(struct pt_regs *regs);
46c8171a86SGuo Ren asmlinkage void do_trap_zdiv(struct pt_regs *regs);
47c8171a86SGuo Ren asmlinkage void do_trap_buserr(struct pt_regs *regs);
48c8171a86SGuo Ren asmlinkage void do_trap_misaligned(struct pt_regs *regs);
49c8171a86SGuo Ren asmlinkage void do_trap_bkpt(struct pt_regs *regs);
50c8171a86SGuo Ren asmlinkage void do_trap_illinsn(struct pt_regs *regs);
51c8171a86SGuo Ren asmlinkage void do_trap_fpe(struct pt_regs *regs);
52c8171a86SGuo Ren asmlinkage void do_trap_priv(struct pt_regs *regs);
53c8171a86SGuo Ren asmlinkage void trap_c(struct pt_regs *regs);
54c8171a86SGuo Ren 
55c8171a86SGuo Ren asmlinkage void do_notify_resume(struct pt_regs *regs,
56c8171a86SGuo Ren 			unsigned long thread_info_flags);
57c8171a86SGuo Ren 
58*23f8c182SArnd Bergmann asmlinkage void do_page_fault(struct pt_regs *regs);
59*23f8c182SArnd Bergmann 
60081860b9SGuo Ren #endif /* __ASM_CSKY_TRAPS_H */
61