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 10*03659efeSRandy Dunlap #include <asm/insn.h> 11*03659efeSRandy Dunlap 12c2249707SPratyush Anand typedef u32 probe_opcode_t; 13c2249707SPratyush Anand typedef void (probes_handler_t) (u32 opcode, long addr, struct pt_regs *); 142dd0e8d2SSandeepa Prabhu 152dd0e8d2SSandeepa Prabhu /* architecture specific copy of original instruction */ 16c2249707SPratyush Anand struct arch_probe_insn { 17c2249707SPratyush Anand probe_opcode_t *insn; 1839a67d49SSandeepa Prabhu pstate_check_t *pstate_cc; 19c2249707SPratyush Anand probes_handler_t *handler; 202dd0e8d2SSandeepa Prabhu /* restore address after step xol */ 212dd0e8d2SSandeepa Prabhu unsigned long restore; 222dd0e8d2SSandeepa Prabhu }; 23c2249707SPratyush Anand #ifdef CONFIG_KPROBES 24c2249707SPratyush Anand typedef u32 kprobe_opcode_t; 25c2249707SPratyush Anand struct arch_specific_insn { 26c2249707SPratyush Anand struct arch_probe_insn api; 27c2249707SPratyush Anand }; 28c2249707SPratyush Anand #endif 292dd0e8d2SSandeepa Prabhu 302dd0e8d2SSandeepa Prabhu #endif 31