/* 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; }; #ifdef CONFIG_UPROBES bool uprobe_breakpoint_handler(struct pt_regs *regs); bool uprobe_single_step_handler(struct pt_regs *regs); #else static inline bool uprobe_breakpoint_handler(struct pt_regs *regs) { return false; } static inline bool uprobe_single_step_handler(struct pt_regs *regs) { return false; } #endif /* CONFIG_UPROBES */ #endif /* _ASM_RISCV_UPROBES_H */