162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * arch/arm64/include/asm/probes.h 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2013 Linaro Limited 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci#ifndef _ARM_PROBES_H 862306a36Sopenharmony_ci#define _ARM_PROBES_H 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#include <asm/insn.h> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_citypedef u32 probe_opcode_t; 1362306a36Sopenharmony_citypedef void (probes_handler_t) (u32 opcode, long addr, struct pt_regs *); 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci/* architecture specific copy of original instruction */ 1662306a36Sopenharmony_cistruct arch_probe_insn { 1762306a36Sopenharmony_ci probe_opcode_t *insn; 1862306a36Sopenharmony_ci pstate_check_t *pstate_cc; 1962306a36Sopenharmony_ci probes_handler_t *handler; 2062306a36Sopenharmony_ci /* restore address after step xol */ 2162306a36Sopenharmony_ci unsigned long restore; 2262306a36Sopenharmony_ci}; 2362306a36Sopenharmony_ci#ifdef CONFIG_KPROBES 2462306a36Sopenharmony_citypedef u32 kprobe_opcode_t; 2562306a36Sopenharmony_cistruct arch_specific_insn { 2662306a36Sopenharmony_ci struct arch_probe_insn api; 2762306a36Sopenharmony_ci}; 2862306a36Sopenharmony_ci#endif 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci#endif 31