Merge tag 'vfs-6.7.misc' of gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs
[linux-block.git] / arch / riscv / include / asm / uprobes.h
CommitLineData
74784081
GR
1/* SPDX-License-Identifier: GPL-2.0-only */
2
3#ifndef _ASM_RISCV_UPROBES_H
4#define _ASM_RISCV_UPROBES_H
5
6#include <asm/probes.h>
7#include <asm/patch.h>
8#include <asm/bug.h>
9
10#define MAX_UINSN_BYTES 8
11
12#ifdef CONFIG_RISCV_ISA_C
13#define UPROBE_SWBP_INSN __BUG_INSN_16
14#define UPROBE_SWBP_INSN_SIZE 2
15#else
16#define UPROBE_SWBP_INSN __BUG_INSN_32
17#define UPROBE_SWBP_INSN_SIZE 4
18#endif
19#define UPROBE_XOL_SLOT_BYTES MAX_UINSN_BYTES
20
21typedef u32 uprobe_opcode_t;
22
23struct arch_uprobe_task {
24 unsigned long saved_cause;
25};
26
27struct arch_uprobe {
28 union {
29 u8 insn[MAX_UINSN_BYTES];
30 u8 ixol[MAX_UINSN_BYTES];
31 };
32 struct arch_probe_insn api;
33 unsigned long insn_size;
34 bool simulate;
35};
36
9f564b92 37#ifdef CONFIG_UPROBES
74784081
GR
38bool uprobe_breakpoint_handler(struct pt_regs *regs);
39bool uprobe_single_step_handler(struct pt_regs *regs);
9f564b92
BT
40#else
41static inline bool uprobe_breakpoint_handler(struct pt_regs *regs)
42{
43 return false;
44}
45
46static inline bool uprobe_single_step_handler(struct pt_regs *regs)
47{
48 return false;
49}
50#endif /* CONFIG_UPROBES */
74784081 51#endif /* _ASM_RISCV_UPROBES_H */