18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * arch/arm64/include/asm/probes.h 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (C) 2013 Linaro Limited 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci#ifndef _ARM_PROBES_H 88c2ecf20Sopenharmony_ci#define _ARM_PROBES_H 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#include <asm/insn.h> 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_citypedef u32 probe_opcode_t; 138c2ecf20Sopenharmony_citypedef void (probes_handler_t) (u32 opcode, long addr, struct pt_regs *); 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci/* architecture specific copy of original instruction */ 168c2ecf20Sopenharmony_cistruct arch_probe_insn { 178c2ecf20Sopenharmony_ci probe_opcode_t *insn; 188c2ecf20Sopenharmony_ci pstate_check_t *pstate_cc; 198c2ecf20Sopenharmony_ci probes_handler_t *handler; 208c2ecf20Sopenharmony_ci /* restore address after step xol */ 218c2ecf20Sopenharmony_ci unsigned long restore; 228c2ecf20Sopenharmony_ci}; 238c2ecf20Sopenharmony_ci#ifdef CONFIG_KPROBES 248c2ecf20Sopenharmony_citypedef u32 kprobe_opcode_t; 258c2ecf20Sopenharmony_cistruct arch_specific_insn { 268c2ecf20Sopenharmony_ci struct arch_probe_insn api; 278c2ecf20Sopenharmony_ci}; 288c2ecf20Sopenharmony_ci#endif 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ci#endif 31