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