uprobes.h 828 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. #ifndef _ASM_RISCV_UPROBES_H
  3. #define _ASM_RISCV_UPROBES_H
  4. #include <asm/probes.h>
  5. #include <asm/patch.h>
  6. #include <asm/bug.h>
  7. #define MAX_UINSN_BYTES 8
  8. #ifdef CONFIG_RISCV_ISA_C
  9. #define UPROBE_SWBP_INSN __BUG_INSN_16
  10. #define UPROBE_SWBP_INSN_SIZE 2
  11. #else
  12. #define UPROBE_SWBP_INSN __BUG_INSN_32
  13. #define UPROBE_SWBP_INSN_SIZE 4
  14. #endif
  15. #define UPROBE_XOL_SLOT_BYTES MAX_UINSN_BYTES
  16. typedef u32 uprobe_opcode_t;
  17. struct arch_uprobe_task {
  18. unsigned long saved_cause;
  19. };
  20. struct arch_uprobe {
  21. union {
  22. u8 insn[MAX_UINSN_BYTES];
  23. u8 ixol[MAX_UINSN_BYTES];
  24. };
  25. struct arch_probe_insn api;
  26. unsigned long insn_size;
  27. bool simulate;
  28. };
  29. bool uprobe_breakpoint_handler(struct pt_regs *regs);
  30. bool uprobe_single_step_handler(struct pt_regs *regs);
  31. #endif /* _ASM_RISCV_UPROBES_H */