Commit | Line | Data |
---|---|---|
b2531dd5 DL |
1 | /* |
2 | * arch/arm/include/asm/probes.h | |
3 | * | |
4 | * Original contents copied from arch/arm/include/asm/kprobes.h | |
5 | * which contains the following notice... | |
6 | * | |
7 | * Copyright (C) 2006, 2007 Motorola Inc. | |
8 | * | |
9 | * This program is free software; you can redistribute it and/or modify | |
10 | * it under the terms of the GNU General Public License version 2 as | |
11 | * published by the Free Software Foundation. | |
12 | * | |
13 | * This program is distributed in the hope that it will be useful, | |
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
16 | * General Public License for more details. | |
17 | */ | |
18 | ||
19 | #ifndef _ASM_PROBES_H | |
20 | #define _ASM_PROBES_H | |
21 | ||
a0266c21 WN |
22 | #ifndef __ASSEMBLY__ |
23 | ||
f145d664 | 24 | typedef u32 probes_opcode_t; |
c18377c3 | 25 | |
b4cd605c | 26 | struct arch_probes_insn; |
47e190fa | 27 | typedef void (probes_insn_handler_t)(probes_opcode_t, |
b4cd605c | 28 | struct arch_probes_insn *, |
7579f4b3 | 29 | struct pt_regs *); |
f145d664 | 30 | typedef unsigned long (probes_check_cc)(unsigned long); |
47e190fa | 31 | typedef void (probes_insn_singlestep_t)(probes_opcode_t, |
b4cd605c | 32 | struct arch_probes_insn *, |
7579f4b3 | 33 | struct pt_regs *); |
47e190fa | 34 | typedef void (probes_insn_fn_t)(void); |
b2531dd5 DL |
35 | |
36 | /* Architecture specific copy of original instruction. */ | |
b4cd605c | 37 | struct arch_probes_insn { |
f145d664 | 38 | probes_opcode_t *insn; |
47e190fa | 39 | probes_insn_handler_t *insn_handler; |
f145d664 | 40 | probes_check_cc *insn_check_cc; |
47e190fa DL |
41 | probes_insn_singlestep_t *insn_singlestep; |
42 | probes_insn_fn_t *insn_fn; | |
6624cf65 | 43 | int stack_space; |
28a1899d | 44 | unsigned long register_usage_flags; |
bfc9657d | 45 | bool kprobe_direct_exec; |
b2531dd5 DL |
46 | }; |
47 | ||
a0266c21 WN |
48 | #endif /* __ASSEMBLY__ */ |
49 | ||
50 | /* | |
51 | * We assume one instruction can consume at most 64 bytes stack, which is | |
52 | * 'push {r0-r15}'. Instructions consume more or unknown stack space like | |
53 | * 'str r0, [sp, #-80]' and 'str r0, [sp, r1]' should be prohibit to probe. | |
54 | * Both kprobe and jprobe use this macro. | |
55 | */ | |
56 | #define MAX_STACK_SIZE 64 | |
57 | ||
b2531dd5 | 58 | #endif |