Merge tag 'trace-printf-v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/trace...
[drm/drm-misc.git] / arch / loongarch / include / asm / uprobes.h
blob99a0d198927f8b8494ebf6e096985612602390e2
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 #ifndef __ASM_LOONGARCH_UPROBES_H
3 #define __ASM_LOONGARCH_UPROBES_H
5 #include <asm/inst.h>
7 typedef u32 uprobe_opcode_t;
9 #define MAX_UINSN_BYTES 8
10 #define UPROBE_XOL_SLOT_BYTES MAX_UINSN_BYTES
12 #define UPROBE_SWBP_INSN __emit_break(BRK_UPROBE_BP)
13 #define UPROBE_SWBP_INSN_SIZE LOONGARCH_INSN_SIZE
15 #define UPROBE_XOLBP_INSN __emit_break(BRK_UPROBE_XOLBP)
17 struct arch_uprobe {
18 unsigned long resume_era;
19 u32 insn[2];
20 u32 ixol[2];
21 bool simulate;
24 struct arch_uprobe_task {
25 unsigned long saved_trap_nr;
28 #ifdef CONFIG_UPROBES
29 bool uprobe_breakpoint_handler(struct pt_regs *regs);
30 bool uprobe_singlestep_handler(struct pt_regs *regs);
31 #else /* !CONFIG_UPROBES */
32 static inline bool uprobe_breakpoint_handler(struct pt_regs *regs) { return false; }
33 static inline bool uprobe_singlestep_handler(struct pt_regs *regs) { return false; }
34 #endif /* CONFIG_UPROBES */
36 #endif /* __ASM_LOONGARCH_UPROBES_H */