18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * arch/arm/include/asm/probes.h 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Original contents copied from arch/arm/include/asm/kprobes.h 68c2ecf20Sopenharmony_ci * which contains the following notice... 78c2ecf20Sopenharmony_ci * 88c2ecf20Sopenharmony_ci * Copyright (C) 2006, 2007 Motorola Inc. 98c2ecf20Sopenharmony_ci */ 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#ifndef _ASM_PROBES_H 128c2ecf20Sopenharmony_ci#define _ASM_PROBES_H 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci#ifndef __ASSEMBLY__ 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_citypedef u32 probes_opcode_t; 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_cistruct arch_probes_insn; 198c2ecf20Sopenharmony_citypedef void (probes_insn_handler_t)(probes_opcode_t, 208c2ecf20Sopenharmony_ci struct arch_probes_insn *, 218c2ecf20Sopenharmony_ci struct pt_regs *); 228c2ecf20Sopenharmony_citypedef unsigned long (probes_check_cc)(unsigned long); 238c2ecf20Sopenharmony_citypedef void (probes_insn_singlestep_t)(probes_opcode_t, 248c2ecf20Sopenharmony_ci struct arch_probes_insn *, 258c2ecf20Sopenharmony_ci struct pt_regs *); 268c2ecf20Sopenharmony_citypedef void (probes_insn_fn_t)(void); 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci/* Architecture specific copy of original instruction. */ 298c2ecf20Sopenharmony_cistruct arch_probes_insn { 308c2ecf20Sopenharmony_ci probes_opcode_t *insn; 318c2ecf20Sopenharmony_ci probes_insn_handler_t *insn_handler; 328c2ecf20Sopenharmony_ci probes_check_cc *insn_check_cc; 338c2ecf20Sopenharmony_ci probes_insn_singlestep_t *insn_singlestep; 348c2ecf20Sopenharmony_ci probes_insn_fn_t *insn_fn; 358c2ecf20Sopenharmony_ci int stack_space; 368c2ecf20Sopenharmony_ci unsigned long register_usage_flags; 378c2ecf20Sopenharmony_ci bool kprobe_direct_exec; 388c2ecf20Sopenharmony_ci}; 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ci#endif /* __ASSEMBLY__ */ 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci/* 438c2ecf20Sopenharmony_ci * We assume one instruction can consume at most 64 bytes stack, which is 448c2ecf20Sopenharmony_ci * 'push {r0-r15}'. Instructions consume more or unknown stack space like 458c2ecf20Sopenharmony_ci * 'str r0, [sp, #-80]' and 'str r0, [sp, r1]' should be prohibit to probe. 468c2ecf20Sopenharmony_ci */ 478c2ecf20Sopenharmony_ci#define MAX_STACK_SIZE 64 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ci#endif 50