hc
2024-03-22 a0752693d998599af469473b8dc239ef973a012f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * arch/arm/include/asm/probes.h
 *
 * Original contents copied from arch/arm/include/asm/kprobes.h
 * which contains the following notice...
 *
 * Copyright (C) 2006, 2007 Motorola Inc.
 */
 
#ifndef _ASM_PROBES_H
#define _ASM_PROBES_H
 
#ifndef __ASSEMBLY__
 
typedef u32 probes_opcode_t;
 
struct arch_probes_insn;
typedef void (probes_insn_handler_t)(probes_opcode_t,
                    struct arch_probes_insn *,
                    struct pt_regs *);
typedef unsigned long (probes_check_cc)(unsigned long);
typedef void (probes_insn_singlestep_t)(probes_opcode_t,
                   struct arch_probes_insn *,
                   struct pt_regs *);
typedef void (probes_insn_fn_t)(void);
 
/* Architecture specific copy of original instruction. */
struct arch_probes_insn {
   probes_opcode_t            *insn;
   probes_insn_handler_t        *insn_handler;
   probes_check_cc            *insn_check_cc;
   probes_insn_singlestep_t    *insn_singlestep;
   probes_insn_fn_t        *insn_fn;
   int                stack_space;
   unsigned long            register_usage_flags;
   bool                kprobe_direct_exec;
};
 
#endif /* __ASSEMBLY__ */
 
/*
 * We assume one instruction can consume at most 64 bytes stack, which is
 * 'push {r0-r15}'. Instructions consume more or unknown stack space like
 * 'str r0, [sp, #-80]' and 'str r0, [sp, r1]' should be prohibit to probe.
 */
#define MAX_STACK_SIZE            64
 
#endif