11802d0beSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 22dd0e8d2SSandeepa Prabhu /* 32dd0e8d2SSandeepa Prabhu * arch/arm64/include/asm/probes.h 42dd0e8d2SSandeepa Prabhu * 52dd0e8d2SSandeepa Prabhu * Copyright (C) 2013 Linaro Limited 62dd0e8d2SSandeepa Prabhu */ 72dd0e8d2SSandeepa Prabhu #ifndef _ARM_PROBES_H 82dd0e8d2SSandeepa Prabhu #define _ARM_PROBES_H 92dd0e8d2SSandeepa Prabhu 10c2249707SPratyush Anand typedef u32 probe_opcode_t; 11c2249707SPratyush Anand typedef void (probes_handler_t) (u32 opcode, long addr, struct pt_regs *); 122dd0e8d2SSandeepa Prabhu 132dd0e8d2SSandeepa Prabhu /* architecture specific copy of original instruction */ 14c2249707SPratyush Anand struct arch_probe_insn { 15c2249707SPratyush Anand probe_opcode_t *insn; 1639a67d49SSandeepa Prabhu pstate_check_t *pstate_cc; 17c2249707SPratyush Anand probes_handler_t *handler; 182dd0e8d2SSandeepa Prabhu /* restore address after step xol */ 192dd0e8d2SSandeepa Prabhu unsigned long restore; 202dd0e8d2SSandeepa Prabhu }; 21c2249707SPratyush Anand #ifdef CONFIG_KPROBES 22c2249707SPratyush Anand typedef u32 kprobe_opcode_t; 23c2249707SPratyush Anand struct arch_specific_insn { 24c2249707SPratyush Anand struct arch_probe_insn api; 25c2249707SPratyush Anand }; 26c2249707SPratyush Anand #endif 272dd0e8d2SSandeepa Prabhu 282dd0e8d2SSandeepa Prabhu #endif 29