1 /* SPDX-License-Identifier: GPL-2.0 */ 2 3 #ifndef __ASM_CSKY_TRAPS_H 4 #define __ASM_CSKY_TRAPS_H 5 6 #include <linux/linkage.h> 7 8 #define VEC_RESET 0 9 #define VEC_ALIGN 1 10 #define VEC_ACCESS 2 11 #define VEC_ZERODIV 3 12 #define VEC_ILLEGAL 4 13 #define VEC_PRIV 5 14 #define VEC_TRACE 6 15 #define VEC_BREAKPOINT 7 16 #define VEC_UNRECOVER 8 17 #define VEC_SOFTRESET 9 18 #define VEC_AUTOVEC 10 19 #define VEC_FAUTOVEC 11 20 #define VEC_HWACCEL 12 21 22 #define VEC_TLBMISS 14 23 #define VEC_TLBMODIFIED 15 24 25 #define VEC_TRAP0 16 26 #define VEC_TRAP1 17 27 #define VEC_TRAP2 18 28 #define VEC_TRAP3 19 29 30 #define VEC_TLBINVALIDL 20 31 #define VEC_TLBINVALIDS 21 32 33 #define VEC_PRFL 29 34 #define VEC_FPE 30 35 36 extern void *vec_base[]; 37 38 #define VEC_INIT(i, func) \ 39 do { \ 40 vec_base[i] = (void *)func; \ 41 } while (0) 42 43 void csky_alignment(struct pt_regs *regs); 44 45 asmlinkage void do_trap_unknown(struct pt_regs *regs); 46 asmlinkage void do_trap_zdiv(struct pt_regs *regs); 47 asmlinkage void do_trap_buserr(struct pt_regs *regs); 48 asmlinkage void do_trap_misaligned(struct pt_regs *regs); 49 asmlinkage void do_trap_bkpt(struct pt_regs *regs); 50 asmlinkage void do_trap_illinsn(struct pt_regs *regs); 51 asmlinkage void do_trap_fpe(struct pt_regs *regs); 52 asmlinkage void do_trap_priv(struct pt_regs *regs); 53 asmlinkage void trap_c(struct pt_regs *regs); 54 55 asmlinkage void do_notify_resume(struct pt_regs *regs, 56 unsigned long thread_info_flags); 57 58 void trap_init(void); 59 60 #endif /* __ASM_CSKY_TRAPS_H */ 61