root/arch/arm/include/asm/probes.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


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

/* [<][>][^][v][top][bottom][index][help] */