traps.h 1.4 KB

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