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 36extern void *vec_base[]; 37 38#define VEC_INIT(i, func) \ 39do { \ 40 vec_base[i] = (void *)func; \ 41} while (0) 42 43void csky_alignment(struct pt_regs *regs); 44 45asmlinkage void do_trap_unknown(struct pt_regs *regs); 46asmlinkage void do_trap_zdiv(struct pt_regs *regs); 47asmlinkage void do_trap_buserr(struct pt_regs *regs); 48asmlinkage void do_trap_misaligned(struct pt_regs *regs); 49asmlinkage void do_trap_bkpt(struct pt_regs *regs); 50asmlinkage void do_trap_illinsn(struct pt_regs *regs); 51asmlinkage void do_trap_fpe(struct pt_regs *regs); 52asmlinkage void do_trap_priv(struct pt_regs *regs); 53asmlinkage void trap_c(struct pt_regs *regs); 54 55asmlinkage void do_notify_resume(struct pt_regs *regs, 56 unsigned long thread_info_flags); 57 58asmlinkage void do_page_fault(struct pt_regs *regs); 59 60#endif /* __ASM_CSKY_TRAPS_H */ 61