1b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long/* 2b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long * arch/arm/include/asm/probes.h 3b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long * 4b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long * Original contents copied from arch/arm/include/asm/kprobes.h 5b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long * which contains the following notice... 6b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long * 7b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long * Copyright (C) 2006, 2007 Motorola Inc. 8b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long * 9b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long * This program is free software; you can redistribute it and/or modify 10b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long * it under the terms of the GNU General Public License version 2 as 11b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long * published by the Free Software Foundation. 12b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long * 13b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long * This program is distributed in the hope that it will be useful, 14b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long * but WITHOUT ANY WARRANTY; without even the implied warranty of 15b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long * General Public License for more details. 17b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long */ 18b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long 19b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long#ifndef _ASM_PROBES_H 20b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long#define _ASM_PROBES_H 21b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long 22f145d664df502585618b12ed68c681f82153e02aDavid A. Longtypedef u32 probes_opcode_t; 23c18377c303787ded44b7decd7dee694db0f205e9David A. Long 24b4cd605ca92d9a8a2f71355cb45dd943ebcb0c97David A. Longstruct arch_probes_insn; 2547e190fafde49ff8ca732fa137e39cb2b8baba8cDavid A. Longtypedef void (probes_insn_handler_t)(probes_opcode_t, 26b4cd605ca92d9a8a2f71355cb45dd943ebcb0c97David A. Long struct arch_probes_insn *, 277579f4b3764337b39087d10496af0e741cbfe570David A. Long struct pt_regs *); 28f145d664df502585618b12ed68c681f82153e02aDavid A. Longtypedef unsigned long (probes_check_cc)(unsigned long); 2947e190fafde49ff8ca732fa137e39cb2b8baba8cDavid A. Longtypedef void (probes_insn_singlestep_t)(probes_opcode_t, 30b4cd605ca92d9a8a2f71355cb45dd943ebcb0c97David A. Long struct arch_probes_insn *, 317579f4b3764337b39087d10496af0e741cbfe570David A. Long struct pt_regs *); 3247e190fafde49ff8ca732fa137e39cb2b8baba8cDavid A. Longtypedef void (probes_insn_fn_t)(void); 33b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long 34b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long/* Architecture specific copy of original instruction. */ 35b4cd605ca92d9a8a2f71355cb45dd943ebcb0c97David A. Longstruct arch_probes_insn { 36f145d664df502585618b12ed68c681f82153e02aDavid A. Long probes_opcode_t *insn; 3747e190fafde49ff8ca732fa137e39cb2b8baba8cDavid A. Long probes_insn_handler_t *insn_handler; 38f145d664df502585618b12ed68c681f82153e02aDavid A. Long probes_check_cc *insn_check_cc; 3947e190fafde49ff8ca732fa137e39cb2b8baba8cDavid A. Long probes_insn_singlestep_t *insn_singlestep; 4047e190fafde49ff8ca732fa137e39cb2b8baba8cDavid A. Long probes_insn_fn_t *insn_fn; 41b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long}; 42b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long 43b2531dd5e5f19ea01d67aed82d81c5f778ec0fb7David A. Long#endif 44