12345678910111213141516171819202122232425262728293031323334353637383940 |
- /* SPDX-License-Identifier: GPL-2.0-only */
- #ifndef _ASM_RISCV_UPROBES_H
- #define _ASM_RISCV_UPROBES_H
- #include <asm/probes.h>
- #include <asm/patch.h>
- #include <asm/bug.h>
- #define MAX_UINSN_BYTES 8
- #ifdef CONFIG_RISCV_ISA_C
- #define UPROBE_SWBP_INSN __BUG_INSN_16
- #define UPROBE_SWBP_INSN_SIZE 2
- #else
- #define UPROBE_SWBP_INSN __BUG_INSN_32
- #define UPROBE_SWBP_INSN_SIZE 4
- #endif
- #define UPROBE_XOL_SLOT_BYTES MAX_UINSN_BYTES
- typedef u32 uprobe_opcode_t;
- struct arch_uprobe_task {
- unsigned long saved_cause;
- };
- struct arch_uprobe {
- union {
- u8 insn[MAX_UINSN_BYTES];
- u8 ixol[MAX_UINSN_BYTES];
- };
- struct arch_probe_insn api;
- unsigned long insn_size;
- bool simulate;
- };
- bool uprobe_breakpoint_handler(struct pt_regs *regs);
- bool uprobe_single_step_handler(struct pt_regs *regs);
- #endif /* _ASM_RISCV_UPROBES_H */
|