aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid A. Long <dave.long@linaro.org>2014-03-05 21:41:29 -0500
committerDavid A. Long <dave.long@linaro.org>2014-03-18 16:39:40 -0400
commitb4cd605ca92d9a8a2f71355cb45dd943ebcb0c97 (patch)
tree01f6832e2d9f98344b5913efdb257447f4241742
parent602cd2609eee92d338a83e400774e97c60535ba2 (diff)
ARM: Make arch_specific_insn a define for new arch_probes_insn structure
Because the common underlying code for ARM kprobes and uprobes needs to share a common architecrure-specific context structure, and because the generic kprobes include file insists on defining this to a dummy structure when kprobes is not configured, a new common structure is required which can exist when uprobes is configured without kprobes. In this case kprobes will define a dummy structure, but without the define aliasing the two structure tags it will not affect uprobes and the shared probes code. Signed-off-by: David A. Long <dave.long@linaro.org> Acked-by: Jon Medhurst <tixy@linaro.org>
-rw-r--r--arch/arm/include/asm/kprobes.h2
-rw-r--r--arch/arm/include/asm/probes.h8
-rw-r--r--arch/arm/kernel/kprobes-arm.c16
-rw-r--r--arch/arm/kernel/kprobes-common.c14
-rw-r--r--arch/arm/kernel/kprobes-thumb.c70
-rw-r--r--arch/arm/kernel/kprobes.h4
-rw-r--r--arch/arm/kernel/probes-arm.c14
-rw-r--r--arch/arm/kernel/probes-arm.h12
-rw-r--r--arch/arm/kernel/probes-thumb.c8
-rw-r--r--arch/arm/kernel/probes-thumb.h4
-rw-r--r--arch/arm/kernel/probes.c10
-rw-r--r--arch/arm/kernel/probes.h4
12 files changed, 84 insertions, 82 deletions
diff --git a/arch/arm/include/asm/kprobes.h b/arch/arm/include/asm/kprobes.h
index 6e1046661f07..49fa0dfaad33 100644
--- a/arch/arm/include/asm/kprobes.h
+++ b/arch/arm/include/asm/kprobes.h
@@ -31,6 +31,8 @@ typedef u32 kprobe_opcode_t;
31struct kprobe; 31struct kprobe;
32#include <asm/probes.h> 32#include <asm/probes.h>
33 33
34#define arch_specific_insn arch_probes_insn
35
34struct prev_kprobe { 36struct prev_kprobe {
35 struct kprobe *kp; 37 struct kprobe *kp;
36 unsigned int status; 38 unsigned int status;
diff --git a/arch/arm/include/asm/probes.h b/arch/arm/include/asm/probes.h
index c37252c73ee5..806cfe622a9e 100644
--- a/arch/arm/include/asm/probes.h
+++ b/arch/arm/include/asm/probes.h
@@ -21,18 +21,18 @@
21 21
22typedef u32 probes_opcode_t; 22typedef u32 probes_opcode_t;
23 23
24struct arch_specific_insn; 24struct arch_probes_insn;
25typedef void (probes_insn_handler_t)(probes_opcode_t, 25typedef void (probes_insn_handler_t)(probes_opcode_t,
26 struct arch_specific_insn *, 26 struct arch_probes_insn *,
27 struct pt_regs *); 27 struct pt_regs *);
28typedef unsigned long (probes_check_cc)(unsigned long); 28typedef unsigned long (probes_check_cc)(unsigned long);
29typedef void (probes_insn_singlestep_t)(probes_opcode_t, 29typedef void (probes_insn_singlestep_t)(probes_opcode_t,
30 struct arch_specific_insn *, 30 struct arch_probes_insn *,
31 struct pt_regs *); 31 struct pt_regs *);
32typedef void (probes_insn_fn_t)(void); 32typedef void (probes_insn_fn_t)(void);
33 33
34/* Architecture specific copy of original instruction. */ 34/* Architecture specific copy of original instruction. */
35struct arch_specific_insn { 35struct arch_probes_insn {
36 probes_opcode_t *insn; 36 probes_opcode_t *insn;
37 probes_insn_handler_t *insn_handler; 37 probes_insn_handler_t *insn_handler;
38 probes_check_cc *insn_check_cc; 38 probes_check_cc *insn_check_cc;
diff --git a/arch/arm/kernel/kprobes-arm.c b/arch/arm/kernel/kprobes-arm.c
index d01d9f56f583..ac300c60d656 100644
--- a/arch/arm/kernel/kprobes-arm.c
+++ b/arch/arm/kernel/kprobes-arm.c
@@ -74,7 +74,7 @@
74 74
75static void __kprobes 75static void __kprobes
76emulate_ldrdstrd(probes_opcode_t insn, 76emulate_ldrdstrd(probes_opcode_t insn,
77 struct arch_specific_insn *asi, struct pt_regs *regs) 77 struct arch_probes_insn *asi, struct pt_regs *regs)
78{ 78{
79 unsigned long pc = regs->ARM_pc + 4; 79 unsigned long pc = regs->ARM_pc + 4;
80 int rt = (insn >> 12) & 0xf; 80 int rt = (insn >> 12) & 0xf;
@@ -103,7 +103,7 @@ emulate_ldrdstrd(probes_opcode_t insn,
103 103
104static void __kprobes 104static void __kprobes
105emulate_ldr(probes_opcode_t insn, 105emulate_ldr(probes_opcode_t insn,
106 struct arch_specific_insn *asi, struct pt_regs *regs) 106 struct arch_probes_insn *asi, struct pt_regs *regs)
107{ 107{
108 unsigned long pc = regs->ARM_pc + 4; 108 unsigned long pc = regs->ARM_pc + 4;
109 int rt = (insn >> 12) & 0xf; 109 int rt = (insn >> 12) & 0xf;
@@ -133,7 +133,7 @@ emulate_ldr(probes_opcode_t insn,
133 133
134static void __kprobes 134static void __kprobes
135emulate_str(probes_opcode_t insn, 135emulate_str(probes_opcode_t insn,
136 struct arch_specific_insn *asi, struct pt_regs *regs) 136 struct arch_probes_insn *asi, struct pt_regs *regs)
137{ 137{
138 unsigned long rtpc = regs->ARM_pc - 4 + str_pc_offset; 138 unsigned long rtpc = regs->ARM_pc - 4 + str_pc_offset;
139 unsigned long rnpc = regs->ARM_pc + 4; 139 unsigned long rnpc = regs->ARM_pc + 4;
@@ -160,7 +160,7 @@ emulate_str(probes_opcode_t insn,
160 160
161static void __kprobes 161static void __kprobes
162emulate_rd12rn16rm0rs8_rwflags(probes_opcode_t insn, 162emulate_rd12rn16rm0rs8_rwflags(probes_opcode_t insn,
163 struct arch_specific_insn *asi, struct pt_regs *regs) 163 struct arch_probes_insn *asi, struct pt_regs *regs)
164{ 164{
165 unsigned long pc = regs->ARM_pc + 4; 165 unsigned long pc = regs->ARM_pc + 4;
166 int rd = (insn >> 12) & 0xf; 166 int rd = (insn >> 12) & 0xf;
@@ -195,7 +195,7 @@ emulate_rd12rn16rm0rs8_rwflags(probes_opcode_t insn,
195 195
196static void __kprobes 196static void __kprobes
197emulate_rd12rn16rm0_rwflags_nopc(probes_opcode_t insn, 197emulate_rd12rn16rm0_rwflags_nopc(probes_opcode_t insn,
198 struct arch_specific_insn *asi, struct pt_regs *regs) 198 struct arch_probes_insn *asi, struct pt_regs *regs)
199{ 199{
200 int rd = (insn >> 12) & 0xf; 200 int rd = (insn >> 12) & 0xf;
201 int rn = (insn >> 16) & 0xf; 201 int rn = (insn >> 16) & 0xf;
@@ -222,7 +222,7 @@ emulate_rd12rn16rm0_rwflags_nopc(probes_opcode_t insn,
222 222
223static void __kprobes 223static void __kprobes
224emulate_rd16rn12rm0rs8_rwflags_nopc(probes_opcode_t insn, 224emulate_rd16rn12rm0rs8_rwflags_nopc(probes_opcode_t insn,
225 struct arch_specific_insn *asi, 225 struct arch_probes_insn *asi,
226 struct pt_regs *regs) 226 struct pt_regs *regs)
227{ 227{
228 int rd = (insn >> 16) & 0xf; 228 int rd = (insn >> 16) & 0xf;
@@ -252,7 +252,7 @@ emulate_rd16rn12rm0rs8_rwflags_nopc(probes_opcode_t insn,
252 252
253static void __kprobes 253static void __kprobes
254emulate_rd12rm0_noflags_nopc(probes_opcode_t insn, 254emulate_rd12rm0_noflags_nopc(probes_opcode_t insn,
255 struct arch_specific_insn *asi, struct pt_regs *regs) 255 struct arch_probes_insn *asi, struct pt_regs *regs)
256{ 256{
257 int rd = (insn >> 12) & 0xf; 257 int rd = (insn >> 12) & 0xf;
258 int rm = insn & 0xf; 258 int rm = insn & 0xf;
@@ -272,7 +272,7 @@ emulate_rd12rm0_noflags_nopc(probes_opcode_t insn,
272 272
273static void __kprobes 273static void __kprobes
274emulate_rdlo12rdhi16rn0rm8_rwflags_nopc(probes_opcode_t insn, 274emulate_rdlo12rdhi16rn0rm8_rwflags_nopc(probes_opcode_t insn,
275 struct arch_specific_insn *asi, 275 struct arch_probes_insn *asi,
276 struct pt_regs *regs) 276 struct pt_regs *regs)
277{ 277{
278 int rdlo = (insn >> 12) & 0xf; 278 int rdlo = (insn >> 12) & 0xf;
diff --git a/arch/arm/kernel/kprobes-common.c b/arch/arm/kernel/kprobes-common.c
index 6159725597a1..c311ed94ff1c 100644
--- a/arch/arm/kernel/kprobes-common.c
+++ b/arch/arm/kernel/kprobes-common.c
@@ -18,7 +18,7 @@
18 18
19 19
20static void __kprobes simulate_ldm1stm1(probes_opcode_t insn, 20static void __kprobes simulate_ldm1stm1(probes_opcode_t insn,
21 struct arch_specific_insn *asi, 21 struct arch_probes_insn *asi,
22 struct pt_regs *regs) 22 struct pt_regs *regs)
23{ 23{
24 int rn = (insn >> 16) & 0xf; 24 int rn = (insn >> 16) & 0xf;
@@ -60,7 +60,7 @@ static void __kprobes simulate_ldm1stm1(probes_opcode_t insn,
60} 60}
61 61
62static void __kprobes simulate_stm1_pc(probes_opcode_t insn, 62static void __kprobes simulate_stm1_pc(probes_opcode_t insn,
63 struct arch_specific_insn *asi, 63 struct arch_probes_insn *asi,
64 struct pt_regs *regs) 64 struct pt_regs *regs)
65{ 65{
66 unsigned long addr = regs->ARM_pc - 4; 66 unsigned long addr = regs->ARM_pc - 4;
@@ -71,7 +71,7 @@ static void __kprobes simulate_stm1_pc(probes_opcode_t insn,
71} 71}
72 72
73static void __kprobes simulate_ldm1_pc(probes_opcode_t insn, 73static void __kprobes simulate_ldm1_pc(probes_opcode_t insn,
74 struct arch_specific_insn *asi, 74 struct arch_probes_insn *asi,
75 struct pt_regs *regs) 75 struct pt_regs *regs)
76{ 76{
77 simulate_ldm1stm1(insn, asi, regs); 77 simulate_ldm1stm1(insn, asi, regs);
@@ -80,7 +80,7 @@ static void __kprobes simulate_ldm1_pc(probes_opcode_t insn,
80 80
81static void __kprobes 81static void __kprobes
82emulate_generic_r0_12_noflags(probes_opcode_t insn, 82emulate_generic_r0_12_noflags(probes_opcode_t insn,
83 struct arch_specific_insn *asi, struct pt_regs *regs) 83 struct arch_probes_insn *asi, struct pt_regs *regs)
84{ 84{
85 register void *rregs asm("r1") = regs; 85 register void *rregs asm("r1") = regs;
86 register void *rfn asm("lr") = asi->insn_fn; 86 register void *rfn asm("lr") = asi->insn_fn;
@@ -108,7 +108,7 @@ emulate_generic_r0_12_noflags(probes_opcode_t insn,
108 108
109static void __kprobes 109static void __kprobes
110emulate_generic_r2_14_noflags(probes_opcode_t insn, 110emulate_generic_r2_14_noflags(probes_opcode_t insn,
111 struct arch_specific_insn *asi, struct pt_regs *regs) 111 struct arch_probes_insn *asi, struct pt_regs *regs)
112{ 112{
113 emulate_generic_r0_12_noflags(insn, asi, 113 emulate_generic_r0_12_noflags(insn, asi,
114 (struct pt_regs *)(regs->uregs+2)); 114 (struct pt_regs *)(regs->uregs+2));
@@ -116,7 +116,7 @@ emulate_generic_r2_14_noflags(probes_opcode_t insn,
116 116
117static void __kprobes 117static void __kprobes
118emulate_ldm_r3_15(probes_opcode_t insn, 118emulate_ldm_r3_15(probes_opcode_t insn,
119 struct arch_specific_insn *asi, struct pt_regs *regs) 119 struct arch_probes_insn *asi, struct pt_regs *regs)
120{ 120{
121 emulate_generic_r0_12_noflags(insn, asi, 121 emulate_generic_r0_12_noflags(insn, asi,
122 (struct pt_regs *)(regs->uregs+3)); 122 (struct pt_regs *)(regs->uregs+3));
@@ -124,7 +124,7 @@ emulate_ldm_r3_15(probes_opcode_t insn,
124} 124}
125 125
126enum probes_insn __kprobes 126enum probes_insn __kprobes
127kprobe_decode_ldmstm(probes_opcode_t insn, struct arch_specific_insn *asi, 127kprobe_decode_ldmstm(probes_opcode_t insn, struct arch_probes_insn *asi,
128 const struct decode_header *h) 128 const struct decode_header *h)
129{ 129{
130 probes_insn_handler_t *handler = 0; 130 probes_insn_handler_t *handler = 0;
diff --git a/arch/arm/kernel/kprobes-thumb.c b/arch/arm/kernel/kprobes-thumb.c
index c271d5d2810c..6619188619ae 100644
--- a/arch/arm/kernel/kprobes-thumb.c
+++ b/arch/arm/kernel/kprobes-thumb.c
@@ -24,7 +24,7 @@
24 24
25static void __kprobes 25static void __kprobes
26t32_simulate_table_branch(probes_opcode_t insn, 26t32_simulate_table_branch(probes_opcode_t insn,
27 struct arch_specific_insn *asi, struct pt_regs *regs) 27 struct arch_probes_insn *asi, struct pt_regs *regs)
28{ 28{
29 unsigned long pc = regs->ARM_pc; 29 unsigned long pc = regs->ARM_pc;
30 int rn = (insn >> 16) & 0xf; 30 int rn = (insn >> 16) & 0xf;
@@ -44,7 +44,7 @@ t32_simulate_table_branch(probes_opcode_t insn,
44 44
45static void __kprobes 45static void __kprobes
46t32_simulate_mrs(probes_opcode_t insn, 46t32_simulate_mrs(probes_opcode_t insn,
47 struct arch_specific_insn *asi, struct pt_regs *regs) 47 struct arch_probes_insn *asi, struct pt_regs *regs)
48{ 48{
49 int rd = (insn >> 8) & 0xf; 49 int rd = (insn >> 8) & 0xf;
50 unsigned long mask = 0xf8ff03df; /* Mask out execution state */ 50 unsigned long mask = 0xf8ff03df; /* Mask out execution state */
@@ -53,7 +53,7 @@ t32_simulate_mrs(probes_opcode_t insn,
53 53
54static void __kprobes 54static void __kprobes
55t32_simulate_cond_branch(probes_opcode_t insn, 55t32_simulate_cond_branch(probes_opcode_t insn,
56 struct arch_specific_insn *asi, struct pt_regs *regs) 56 struct arch_probes_insn *asi, struct pt_regs *regs)
57{ 57{
58 unsigned long pc = regs->ARM_pc; 58 unsigned long pc = regs->ARM_pc;
59 59
@@ -67,7 +67,7 @@ t32_simulate_cond_branch(probes_opcode_t insn,
67} 67}
68 68
69static enum probes_insn __kprobes 69static enum probes_insn __kprobes
70t32_decode_cond_branch(probes_opcode_t insn, struct arch_specific_insn *asi, 70t32_decode_cond_branch(probes_opcode_t insn, struct arch_probes_insn *asi,
71 const struct decode_header *d) 71 const struct decode_header *d)
72{ 72{
73 int cc = (insn >> 22) & 0xf; 73 int cc = (insn >> 22) & 0xf;
@@ -78,7 +78,7 @@ t32_decode_cond_branch(probes_opcode_t insn, struct arch_specific_insn *asi,
78 78
79static void __kprobes 79static void __kprobes
80t32_simulate_branch(probes_opcode_t insn, 80t32_simulate_branch(probes_opcode_t insn,
81 struct arch_specific_insn *asi, struct pt_regs *regs) 81 struct arch_probes_insn *asi, struct pt_regs *regs)
82{ 82{
83 unsigned long pc = regs->ARM_pc; 83 unsigned long pc = regs->ARM_pc;
84 84
@@ -106,7 +106,7 @@ t32_simulate_branch(probes_opcode_t insn,
106 106
107static void __kprobes 107static void __kprobes
108t32_simulate_ldr_literal(probes_opcode_t insn, 108t32_simulate_ldr_literal(probes_opcode_t insn,
109 struct arch_specific_insn *asi, struct pt_regs *regs) 109 struct arch_probes_insn *asi, struct pt_regs *regs)
110{ 110{
111 unsigned long addr = regs->ARM_pc & ~3; 111 unsigned long addr = regs->ARM_pc & ~3;
112 int rt = (insn >> 12) & 0xf; 112 int rt = (insn >> 12) & 0xf;
@@ -143,7 +143,7 @@ t32_simulate_ldr_literal(probes_opcode_t insn,
143} 143}
144 144
145static enum probes_insn __kprobes 145static enum probes_insn __kprobes
146t32_decode_ldmstm(probes_opcode_t insn, struct arch_specific_insn *asi, 146t32_decode_ldmstm(probes_opcode_t insn, struct arch_probes_insn *asi,
147 const struct decode_header *d) 147 const struct decode_header *d)
148{ 148{
149 enum probes_insn ret = kprobe_decode_ldmstm(insn, asi, d); 149 enum probes_insn ret = kprobe_decode_ldmstm(insn, asi, d);
@@ -158,7 +158,7 @@ t32_decode_ldmstm(probes_opcode_t insn, struct arch_specific_insn *asi,
158 158
159static void __kprobes 159static void __kprobes
160t32_emulate_ldrdstrd(probes_opcode_t insn, 160t32_emulate_ldrdstrd(probes_opcode_t insn,
161 struct arch_specific_insn *asi, struct pt_regs *regs) 161 struct arch_probes_insn *asi, struct pt_regs *regs)
162{ 162{
163 unsigned long pc = regs->ARM_pc & ~3; 163 unsigned long pc = regs->ARM_pc & ~3;
164 int rt1 = (insn >> 12) & 0xf; 164 int rt1 = (insn >> 12) & 0xf;
@@ -185,7 +185,7 @@ t32_emulate_ldrdstrd(probes_opcode_t insn,
185 185
186static void __kprobes 186static void __kprobes
187t32_emulate_ldrstr(probes_opcode_t insn, 187t32_emulate_ldrstr(probes_opcode_t insn,
188 struct arch_specific_insn *asi, struct pt_regs *regs) 188 struct arch_probes_insn *asi, struct pt_regs *regs)
189{ 189{
190 int rt = (insn >> 12) & 0xf; 190 int rt = (insn >> 12) & 0xf;
191 int rn = (insn >> 16) & 0xf; 191 int rn = (insn >> 16) & 0xf;
@@ -211,7 +211,7 @@ t32_emulate_ldrstr(probes_opcode_t insn,
211 211
212static void __kprobes 212static void __kprobes
213t32_emulate_rd8rn16rm0_rwflags(probes_opcode_t insn, 213t32_emulate_rd8rn16rm0_rwflags(probes_opcode_t insn,
214 struct arch_specific_insn *asi, struct pt_regs *regs) 214 struct arch_probes_insn *asi, struct pt_regs *regs)
215{ 215{
216 int rd = (insn >> 8) & 0xf; 216 int rd = (insn >> 8) & 0xf;
217 int rn = (insn >> 16) & 0xf; 217 int rn = (insn >> 16) & 0xf;
@@ -238,7 +238,7 @@ t32_emulate_rd8rn16rm0_rwflags(probes_opcode_t insn,
238 238
239static void __kprobes 239static void __kprobes
240t32_emulate_rd8pc16_noflags(probes_opcode_t insn, 240t32_emulate_rd8pc16_noflags(probes_opcode_t insn,
241 struct arch_specific_insn *asi, struct pt_regs *regs) 241 struct arch_probes_insn *asi, struct pt_regs *regs)
242{ 242{
243 unsigned long pc = regs->ARM_pc; 243 unsigned long pc = regs->ARM_pc;
244 int rd = (insn >> 8) & 0xf; 244 int rd = (insn >> 8) & 0xf;
@@ -258,7 +258,7 @@ t32_emulate_rd8pc16_noflags(probes_opcode_t insn,
258 258
259static void __kprobes 259static void __kprobes
260t32_emulate_rd8rn16_noflags(probes_opcode_t insn, 260t32_emulate_rd8rn16_noflags(probes_opcode_t insn,
261 struct arch_specific_insn *asi, struct pt_regs *regs) 261 struct arch_probes_insn *asi, struct pt_regs *regs)
262{ 262{
263 int rd = (insn >> 8) & 0xf; 263 int rd = (insn >> 8) & 0xf;
264 int rn = (insn >> 16) & 0xf; 264 int rn = (insn >> 16) & 0xf;
@@ -278,7 +278,7 @@ t32_emulate_rd8rn16_noflags(probes_opcode_t insn,
278 278
279static void __kprobes 279static void __kprobes
280t32_emulate_rdlo12rdhi8rn16rm0_noflags(probes_opcode_t insn, 280t32_emulate_rdlo12rdhi8rn16rm0_noflags(probes_opcode_t insn,
281 struct arch_specific_insn *asi, 281 struct arch_probes_insn *asi,
282 struct pt_regs *regs) 282 struct pt_regs *regs)
283{ 283{
284 int rdlo = (insn >> 12) & 0xf; 284 int rdlo = (insn >> 12) & 0xf;
@@ -306,7 +306,7 @@ t32_emulate_rdlo12rdhi8rn16rm0_noflags(probes_opcode_t insn,
306 306
307static void __kprobes 307static void __kprobes
308t16_simulate_bxblx(probes_opcode_t insn, 308t16_simulate_bxblx(probes_opcode_t insn,
309 struct arch_specific_insn *asi, struct pt_regs *regs) 309 struct arch_probes_insn *asi, struct pt_regs *regs)
310{ 310{
311 unsigned long pc = regs->ARM_pc + 2; 311 unsigned long pc = regs->ARM_pc + 2;
312 int rm = (insn >> 3) & 0xf; 312 int rm = (insn >> 3) & 0xf;
@@ -320,7 +320,7 @@ t16_simulate_bxblx(probes_opcode_t insn,
320 320
321static void __kprobes 321static void __kprobes
322t16_simulate_ldr_literal(probes_opcode_t insn, 322t16_simulate_ldr_literal(probes_opcode_t insn,
323 struct arch_specific_insn *asi, struct pt_regs *regs) 323 struct arch_probes_insn *asi, struct pt_regs *regs)
324{ 324{
325 unsigned long *base = (unsigned long *)((regs->ARM_pc + 2) & ~3); 325 unsigned long *base = (unsigned long *)((regs->ARM_pc + 2) & ~3);
326 long index = insn & 0xff; 326 long index = insn & 0xff;
@@ -330,7 +330,7 @@ t16_simulate_ldr_literal(probes_opcode_t insn,
330 330
331static void __kprobes 331static void __kprobes
332t16_simulate_ldrstr_sp_relative(probes_opcode_t insn, 332t16_simulate_ldrstr_sp_relative(probes_opcode_t insn,
333 struct arch_specific_insn *asi, struct pt_regs *regs) 333 struct arch_probes_insn *asi, struct pt_regs *regs)
334{ 334{
335 unsigned long* base = (unsigned long *)regs->ARM_sp; 335 unsigned long* base = (unsigned long *)regs->ARM_sp;
336 long index = insn & 0xff; 336 long index = insn & 0xff;
@@ -343,7 +343,7 @@ t16_simulate_ldrstr_sp_relative(probes_opcode_t insn,
343 343
344static void __kprobes 344static void __kprobes
345t16_simulate_reladr(probes_opcode_t insn, 345t16_simulate_reladr(probes_opcode_t insn,
346 struct arch_specific_insn *asi, struct pt_regs *regs) 346 struct arch_probes_insn *asi, struct pt_regs *regs)
347{ 347{
348 unsigned long base = (insn & 0x800) ? regs->ARM_sp 348 unsigned long base = (insn & 0x800) ? regs->ARM_sp
349 : ((regs->ARM_pc + 2) & ~3); 349 : ((regs->ARM_pc + 2) & ~3);
@@ -354,7 +354,7 @@ t16_simulate_reladr(probes_opcode_t insn,
354 354
355static void __kprobes 355static void __kprobes
356t16_simulate_add_sp_imm(probes_opcode_t insn, 356t16_simulate_add_sp_imm(probes_opcode_t insn,
357 struct arch_specific_insn *asi, struct pt_regs *regs) 357 struct arch_probes_insn *asi, struct pt_regs *regs)
358{ 358{
359 long imm = insn & 0x7f; 359 long imm = insn & 0x7f;
360 if (insn & 0x80) /* SUB */ 360 if (insn & 0x80) /* SUB */
@@ -365,7 +365,7 @@ t16_simulate_add_sp_imm(probes_opcode_t insn,
365 365
366static void __kprobes 366static void __kprobes
367t16_simulate_cbz(probes_opcode_t insn, 367t16_simulate_cbz(probes_opcode_t insn,
368 struct arch_specific_insn *asi, struct pt_regs *regs) 368 struct arch_probes_insn *asi, struct pt_regs *regs)
369{ 369{
370 int rn = insn & 0x7; 370 int rn = insn & 0x7;
371 probes_opcode_t nonzero = regs->uregs[rn] ? insn : ~insn; 371 probes_opcode_t nonzero = regs->uregs[rn] ? insn : ~insn;
@@ -379,7 +379,7 @@ t16_simulate_cbz(probes_opcode_t insn,
379 379
380static void __kprobes 380static void __kprobes
381t16_simulate_it(probes_opcode_t insn, 381t16_simulate_it(probes_opcode_t insn,
382 struct arch_specific_insn *asi, struct pt_regs *regs) 382 struct arch_probes_insn *asi, struct pt_regs *regs)
383{ 383{
384 /* 384 /*
385 * The 8 IT state bits are split into two parts in CPSR: 385 * The 8 IT state bits are split into two parts in CPSR:
@@ -396,14 +396,14 @@ t16_simulate_it(probes_opcode_t insn,
396 396
397static void __kprobes 397static void __kprobes
398t16_singlestep_it(probes_opcode_t insn, 398t16_singlestep_it(probes_opcode_t insn,
399 struct arch_specific_insn *asi, struct pt_regs *regs) 399 struct arch_probes_insn *asi, struct pt_regs *regs)
400{ 400{
401 regs->ARM_pc += 2; 401 regs->ARM_pc += 2;
402 t16_simulate_it(insn, asi, regs); 402 t16_simulate_it(insn, asi, regs);
403} 403}
404 404
405static enum probes_insn __kprobes 405static enum probes_insn __kprobes
406t16_decode_it(probes_opcode_t insn, struct arch_specific_insn *asi, 406t16_decode_it(probes_opcode_t insn, struct arch_probes_insn *asi,
407 const struct decode_header *d) 407 const struct decode_header *d)
408{ 408{
409 asi->insn_singlestep = t16_singlestep_it; 409 asi->insn_singlestep = t16_singlestep_it;
@@ -412,7 +412,7 @@ t16_decode_it(probes_opcode_t insn, struct arch_specific_insn *asi,
412 412
413static void __kprobes 413static void __kprobes
414t16_simulate_cond_branch(probes_opcode_t insn, 414t16_simulate_cond_branch(probes_opcode_t insn,
415 struct arch_specific_insn *asi, struct pt_regs *regs) 415 struct arch_probes_insn *asi, struct pt_regs *regs)
416{ 416{
417 unsigned long pc = regs->ARM_pc + 2; 417 unsigned long pc = regs->ARM_pc + 2;
418 long offset = insn & 0x7f; 418 long offset = insn & 0x7f;
@@ -421,7 +421,7 @@ t16_simulate_cond_branch(probes_opcode_t insn,
421} 421}
422 422
423static enum probes_insn __kprobes 423static enum probes_insn __kprobes
424t16_decode_cond_branch(probes_opcode_t insn, struct arch_specific_insn *asi, 424t16_decode_cond_branch(probes_opcode_t insn, struct arch_probes_insn *asi,
425 const struct decode_header *d) 425 const struct decode_header *d)
426{ 426{
427 int cc = (insn >> 8) & 0xf; 427 int cc = (insn >> 8) & 0xf;
@@ -432,7 +432,7 @@ t16_decode_cond_branch(probes_opcode_t insn, struct arch_specific_insn *asi,
432 432
433static void __kprobes 433static void __kprobes
434t16_simulate_branch(probes_opcode_t insn, 434t16_simulate_branch(probes_opcode_t insn,
435 struct arch_specific_insn *asi, struct pt_regs *regs) 435 struct arch_probes_insn *asi, struct pt_regs *regs)
436{ 436{
437 unsigned long pc = regs->ARM_pc + 2; 437 unsigned long pc = regs->ARM_pc + 2;
438 long offset = insn & 0x3ff; 438 long offset = insn & 0x3ff;
@@ -442,7 +442,7 @@ t16_simulate_branch(probes_opcode_t insn,
442 442
443static unsigned long __kprobes 443static unsigned long __kprobes
444t16_emulate_loregs(probes_opcode_t insn, 444t16_emulate_loregs(probes_opcode_t insn,
445 struct arch_specific_insn *asi, struct pt_regs *regs) 445 struct arch_probes_insn *asi, struct pt_regs *regs)
446{ 446{
447 unsigned long oldcpsr = regs->ARM_cpsr; 447 unsigned long oldcpsr = regs->ARM_cpsr;
448 unsigned long newcpsr; 448 unsigned long newcpsr;
@@ -465,14 +465,14 @@ t16_emulate_loregs(probes_opcode_t insn,
465 465
466static void __kprobes 466static void __kprobes
467t16_emulate_loregs_rwflags(probes_opcode_t insn, 467t16_emulate_loregs_rwflags(probes_opcode_t insn,
468 struct arch_specific_insn *asi, struct pt_regs *regs) 468 struct arch_probes_insn *asi, struct pt_regs *regs)
469{ 469{
470 regs->ARM_cpsr = t16_emulate_loregs(insn, asi, regs); 470 regs->ARM_cpsr = t16_emulate_loregs(insn, asi, regs);
471} 471}
472 472
473static void __kprobes 473static void __kprobes
474t16_emulate_loregs_noitrwflags(probes_opcode_t insn, 474t16_emulate_loregs_noitrwflags(probes_opcode_t insn,
475 struct arch_specific_insn *asi, struct pt_regs *regs) 475 struct arch_probes_insn *asi, struct pt_regs *regs)
476{ 476{
477 unsigned long cpsr = t16_emulate_loregs(insn, asi, regs); 477 unsigned long cpsr = t16_emulate_loregs(insn, asi, regs);
478 if (!in_it_block(cpsr)) 478 if (!in_it_block(cpsr))
@@ -481,7 +481,7 @@ t16_emulate_loregs_noitrwflags(probes_opcode_t insn,
481 481
482static void __kprobes 482static void __kprobes
483t16_emulate_hiregs(probes_opcode_t insn, 483t16_emulate_hiregs(probes_opcode_t insn,
484 struct arch_specific_insn *asi, struct pt_regs *regs) 484 struct arch_probes_insn *asi, struct pt_regs *regs)
485{ 485{
486 unsigned long pc = regs->ARM_pc + 2; 486 unsigned long pc = regs->ARM_pc + 2;
487 int rdn = (insn & 0x7) | ((insn & 0x80) >> 4); 487 int rdn = (insn & 0x7) | ((insn & 0x80) >> 4);
@@ -511,7 +511,7 @@ t16_emulate_hiregs(probes_opcode_t insn,
511} 511}
512 512
513static enum probes_insn __kprobes 513static enum probes_insn __kprobes
514t16_decode_hiregs(probes_opcode_t insn, struct arch_specific_insn *asi, 514t16_decode_hiregs(probes_opcode_t insn, struct arch_probes_insn *asi,
515 const struct decode_header *d) 515 const struct decode_header *d)
516{ 516{
517 insn &= ~0x00ff; 517 insn &= ~0x00ff;
@@ -523,7 +523,7 @@ t16_decode_hiregs(probes_opcode_t insn, struct arch_specific_insn *asi,
523 523
524static void __kprobes 524static void __kprobes
525t16_emulate_push(probes_opcode_t insn, 525t16_emulate_push(probes_opcode_t insn,
526 struct arch_specific_insn *asi, struct pt_regs *regs) 526 struct arch_probes_insn *asi, struct pt_regs *regs)
527{ 527{
528 __asm__ __volatile__ ( 528 __asm__ __volatile__ (
529 "ldr r9, [%[regs], #13*4] \n\t" 529 "ldr r9, [%[regs], #13*4] \n\t"
@@ -539,7 +539,7 @@ t16_emulate_push(probes_opcode_t insn,
539} 539}
540 540
541static enum probes_insn __kprobes 541static enum probes_insn __kprobes
542t16_decode_push(probes_opcode_t insn, struct arch_specific_insn *asi, 542t16_decode_push(probes_opcode_t insn, struct arch_probes_insn *asi,
543 const struct decode_header *d) 543 const struct decode_header *d)
544{ 544{
545 /* 545 /*
@@ -555,7 +555,7 @@ t16_decode_push(probes_opcode_t insn, struct arch_specific_insn *asi,
555 555
556static void __kprobes 556static void __kprobes
557t16_emulate_pop_nopc(probes_opcode_t insn, 557t16_emulate_pop_nopc(probes_opcode_t insn,
558 struct arch_specific_insn *asi, struct pt_regs *regs) 558 struct arch_probes_insn *asi, struct pt_regs *regs)
559{ 559{
560 __asm__ __volatile__ ( 560 __asm__ __volatile__ (
561 "ldr r9, [%[regs], #13*4] \n\t" 561 "ldr r9, [%[regs], #13*4] \n\t"
@@ -572,7 +572,7 @@ t16_emulate_pop_nopc(probes_opcode_t insn,
572 572
573static void __kprobes 573static void __kprobes
574t16_emulate_pop_pc(probes_opcode_t insn, 574t16_emulate_pop_pc(probes_opcode_t insn,
575 struct arch_specific_insn *asi, struct pt_regs *regs) 575 struct arch_probes_insn *asi, struct pt_regs *regs)
576{ 576{
577 register unsigned long pc asm("r8"); 577 register unsigned long pc asm("r8");
578 578
@@ -592,7 +592,7 @@ t16_emulate_pop_pc(probes_opcode_t insn,
592} 592}
593 593
594static enum probes_insn __kprobes 594static enum probes_insn __kprobes
595t16_decode_pop(probes_opcode_t insn, struct arch_specific_insn *asi, 595t16_decode_pop(probes_opcode_t insn, struct arch_probes_insn *asi,
596 const struct decode_header *d) 596 const struct decode_header *d)
597{ 597{
598 /* 598 /*
diff --git a/arch/arm/kernel/kprobes.h b/arch/arm/kernel/kprobes.h
index d0a24b73bcfa..9a2712ecefc3 100644
--- a/arch/arm/kernel/kprobes.h
+++ b/arch/arm/kernel/kprobes.h
@@ -30,11 +30,11 @@
30#define KPROBE_THUMB32_BREAKPOINT_INSTRUCTION 0xf7f0a018 30#define KPROBE_THUMB32_BREAKPOINT_INSTRUCTION 0xf7f0a018
31 31
32enum probes_insn __kprobes 32enum probes_insn __kprobes
33kprobe_decode_ldmstm(kprobe_opcode_t insn, struct arch_specific_insn *asi, 33kprobe_decode_ldmstm(kprobe_opcode_t insn, struct arch_probes_insn *asi,
34 const struct decode_header *h); 34 const struct decode_header *h);
35 35
36typedef enum probes_insn (kprobe_decode_insn_t)(probes_opcode_t, 36typedef enum probes_insn (kprobe_decode_insn_t)(probes_opcode_t,
37 struct arch_specific_insn *, 37 struct arch_probes_insn *,
38 bool, 38 bool,
39 const union decode_action *); 39 const union decode_action *);
40 40
diff --git a/arch/arm/kernel/probes-arm.c b/arch/arm/kernel/probes-arm.c
index 8e7fde876521..51a13a027989 100644
--- a/arch/arm/kernel/probes-arm.c
+++ b/arch/arm/kernel/probes-arm.c
@@ -58,7 +58,7 @@
58 */ 58 */
59 59
60void __kprobes simulate_bbl(probes_opcode_t insn, 60void __kprobes simulate_bbl(probes_opcode_t insn,
61 struct arch_specific_insn *asi, struct pt_regs *regs) 61 struct arch_probes_insn *asi, struct pt_regs *regs)
62{ 62{
63 long iaddr = (long) regs->ARM_pc - 4; 63 long iaddr = (long) regs->ARM_pc - 4;
64 int disp = branch_displacement(insn); 64 int disp = branch_displacement(insn);
@@ -70,7 +70,7 @@ void __kprobes simulate_bbl(probes_opcode_t insn,
70} 70}
71 71
72void __kprobes simulate_blx1(probes_opcode_t insn, 72void __kprobes simulate_blx1(probes_opcode_t insn,
73 struct arch_specific_insn *asi, struct pt_regs *regs) 73 struct arch_probes_insn *asi, struct pt_regs *regs)
74{ 74{
75 long iaddr = (long) regs->ARM_pc - 4; 75 long iaddr = (long) regs->ARM_pc - 4;
76 int disp = branch_displacement(insn); 76 int disp = branch_displacement(insn);
@@ -81,7 +81,7 @@ void __kprobes simulate_blx1(probes_opcode_t insn,
81} 81}
82 82
83void __kprobes simulate_blx2bx(probes_opcode_t insn, 83void __kprobes simulate_blx2bx(probes_opcode_t insn,
84 struct arch_specific_insn *asi, struct pt_regs *regs) 84 struct arch_probes_insn *asi, struct pt_regs *regs)
85{ 85{
86 int rm = insn & 0xf; 86 int rm = insn & 0xf;
87 long rmv = regs->uregs[rm]; 87 long rmv = regs->uregs[rm];
@@ -96,7 +96,7 @@ void __kprobes simulate_blx2bx(probes_opcode_t insn,
96} 96}
97 97
98void __kprobes simulate_mrs(probes_opcode_t insn, 98void __kprobes simulate_mrs(probes_opcode_t insn,
99 struct arch_specific_insn *asi, struct pt_regs *regs) 99 struct arch_probes_insn *asi, struct pt_regs *regs)
100{ 100{
101 int rd = (insn >> 12) & 0xf; 101 int rd = (insn >> 12) & 0xf;
102 unsigned long mask = 0xf8ff03df; /* Mask out execution state */ 102 unsigned long mask = 0xf8ff03df; /* Mask out execution state */
@@ -104,7 +104,7 @@ void __kprobes simulate_mrs(probes_opcode_t insn,
104} 104}
105 105
106void __kprobes simulate_mov_ipsp(probes_opcode_t insn, 106void __kprobes simulate_mov_ipsp(probes_opcode_t insn,
107 struct arch_specific_insn *asi, struct pt_regs *regs) 107 struct arch_probes_insn *asi, struct pt_regs *regs)
108{ 108{
109 regs->uregs[12] = regs->uregs[13]; 109 regs->uregs[12] = regs->uregs[13];
110} 110}
@@ -705,7 +705,7 @@ EXPORT_SYMBOL_GPL(probes_decode_arm_table);
705#endif 705#endif
706 706
707static void __kprobes arm_singlestep(probes_opcode_t insn, 707static void __kprobes arm_singlestep(probes_opcode_t insn,
708 struct arch_specific_insn *asi, struct pt_regs *regs) 708 struct arch_probes_insn *asi, struct pt_regs *regs)
709{ 709{
710 regs->ARM_pc += 4; 710 regs->ARM_pc += 4;
711 asi->insn_handler(insn, asi, regs); 711 asi->insn_handler(insn, asi, regs);
@@ -724,7 +724,7 @@ static void __kprobes arm_singlestep(probes_opcode_t insn,
724 * should also be very rare. 724 * should also be very rare.
725 */ 725 */
726enum probes_insn __kprobes 726enum probes_insn __kprobes
727arm_probes_decode_insn(probes_opcode_t insn, struct arch_specific_insn *asi, 727arm_probes_decode_insn(probes_opcode_t insn, struct arch_probes_insn *asi,
728 bool emulate, const union decode_action *actions) 728 bool emulate, const union decode_action *actions)
729{ 729{
730 asi->insn_singlestep = arm_singlestep; 730 asi->insn_singlestep = arm_singlestep;
diff --git a/arch/arm/kernel/probes-arm.h b/arch/arm/kernel/probes-arm.h
index ea614dc5aaa3..ace6572f6e26 100644
--- a/arch/arm/kernel/probes-arm.h
+++ b/arch/arm/kernel/probes-arm.h
@@ -54,20 +54,20 @@ enum probes_arm_action {
54}; 54};
55 55
56void __kprobes simulate_bbl(probes_opcode_t opcode, 56void __kprobes simulate_bbl(probes_opcode_t opcode,
57 struct arch_specific_insn *asi, struct pt_regs *regs); 57 struct arch_probes_insn *asi, struct pt_regs *regs);
58void __kprobes simulate_blx1(probes_opcode_t opcode, 58void __kprobes simulate_blx1(probes_opcode_t opcode,
59 struct arch_specific_insn *asi, struct pt_regs *regs); 59 struct arch_probes_insn *asi, struct pt_regs *regs);
60void __kprobes simulate_blx2bx(probes_opcode_t opcode, 60void __kprobes simulate_blx2bx(probes_opcode_t opcode,
61 struct arch_specific_insn *asi, struct pt_regs *regs); 61 struct arch_probes_insn *asi, struct pt_regs *regs);
62void __kprobes simulate_mrs(probes_opcode_t opcode, 62void __kprobes simulate_mrs(probes_opcode_t opcode,
63 struct arch_specific_insn *asi, struct pt_regs *regs); 63 struct arch_probes_insn *asi, struct pt_regs *regs);
64void __kprobes simulate_mov_ipsp(probes_opcode_t opcode, 64void __kprobes simulate_mov_ipsp(probes_opcode_t opcode,
65 struct arch_specific_insn *asi, struct pt_regs *regs); 65 struct arch_probes_insn *asi, struct pt_regs *regs);
66 66
67extern const union decode_item probes_decode_arm_table[]; 67extern const union decode_item probes_decode_arm_table[];
68 68
69enum probes_insn arm_probes_decode_insn(probes_opcode_t, 69enum probes_insn arm_probes_decode_insn(probes_opcode_t,
70 struct arch_specific_insn *, bool emulate, 70 struct arch_probes_insn *, bool emulate,
71 const union decode_action *actions); 71 const union decode_action *actions);
72 72
73#endif 73#endif
diff --git a/arch/arm/kernel/probes-thumb.c b/arch/arm/kernel/probes-thumb.c
index 23e2cbdb37cb..4131351e812f 100644
--- a/arch/arm/kernel/probes-thumb.c
+++ b/arch/arm/kernel/probes-thumb.c
@@ -844,7 +844,7 @@ static unsigned long __kprobes thumb_check_cc(unsigned long cpsr)
844} 844}
845 845
846static void __kprobes thumb16_singlestep(probes_opcode_t opcode, 846static void __kprobes thumb16_singlestep(probes_opcode_t opcode,
847 struct arch_specific_insn *asi, 847 struct arch_probes_insn *asi,
848 struct pt_regs *regs) 848 struct pt_regs *regs)
849{ 849{
850 regs->ARM_pc += 2; 850 regs->ARM_pc += 2;
@@ -853,7 +853,7 @@ static void __kprobes thumb16_singlestep(probes_opcode_t opcode,
853} 853}
854 854
855static void __kprobes thumb32_singlestep(probes_opcode_t opcode, 855static void __kprobes thumb32_singlestep(probes_opcode_t opcode,
856 struct arch_specific_insn *asi, 856 struct arch_probes_insn *asi,
857 struct pt_regs *regs) 857 struct pt_regs *regs)
858{ 858{
859 regs->ARM_pc += 4; 859 regs->ARM_pc += 4;
@@ -862,7 +862,7 @@ static void __kprobes thumb32_singlestep(probes_opcode_t opcode,
862} 862}
863 863
864enum probes_insn __kprobes 864enum probes_insn __kprobes
865thumb16_probes_decode_insn(probes_opcode_t insn, struct arch_specific_insn *asi, 865thumb16_probes_decode_insn(probes_opcode_t insn, struct arch_probes_insn *asi,
866 bool emulate, const union decode_action *actions) 866 bool emulate, const union decode_action *actions)
867{ 867{
868 asi->insn_singlestep = thumb16_singlestep; 868 asi->insn_singlestep = thumb16_singlestep;
@@ -872,7 +872,7 @@ thumb16_probes_decode_insn(probes_opcode_t insn, struct arch_specific_insn *asi,
872} 872}
873 873
874enum probes_insn __kprobes 874enum probes_insn __kprobes
875thumb32_probes_decode_insn(probes_opcode_t insn, struct arch_specific_insn *asi, 875thumb32_probes_decode_insn(probes_opcode_t insn, struct arch_probes_insn *asi,
876 bool emulate, const union decode_action *actions) 876 bool emulate, const union decode_action *actions)
877{ 877{
878 asi->insn_singlestep = thumb32_singlestep; 878 asi->insn_singlestep = thumb32_singlestep;
diff --git a/arch/arm/kernel/probes-thumb.h b/arch/arm/kernel/probes-thumb.h
index 65e4250e9b78..7c6f6ebe514f 100644
--- a/arch/arm/kernel/probes-thumb.h
+++ b/arch/arm/kernel/probes-thumb.h
@@ -88,10 +88,10 @@ extern const union decode_item probes_decode_thumb32_table[];
88extern const union decode_item probes_decode_thumb16_table[]; 88extern const union decode_item probes_decode_thumb16_table[];
89 89
90enum probes_insn __kprobes 90enum probes_insn __kprobes
91thumb16_probes_decode_insn(probes_opcode_t insn, struct arch_specific_insn *asi, 91thumb16_probes_decode_insn(probes_opcode_t insn, struct arch_probes_insn *asi,
92 bool emulate, const union decode_action *actions); 92 bool emulate, const union decode_action *actions);
93enum probes_insn __kprobes 93enum probes_insn __kprobes
94thumb32_probes_decode_insn(probes_opcode_t insn, struct arch_specific_insn *asi, 94thumb32_probes_decode_insn(probes_opcode_t insn, struct arch_probes_insn *asi,
95 bool emulate, const union decode_action *actions); 95 bool emulate, const union decode_action *actions);
96 96
97#endif 97#endif
diff --git a/arch/arm/kernel/probes.c b/arch/arm/kernel/probes.c
index f9dff12cf85c..b41873f33e69 100644
--- a/arch/arm/kernel/probes.c
+++ b/arch/arm/kernel/probes.c
@@ -176,13 +176,13 @@ probes_check_cc * const probes_condition_checks[16] = {
176 176
177 177
178void __kprobes probes_simulate_nop(probes_opcode_t opcode, 178void __kprobes probes_simulate_nop(probes_opcode_t opcode,
179 struct arch_specific_insn *asi, 179 struct arch_probes_insn *asi,
180 struct pt_regs *regs) 180 struct pt_regs *regs)
181{ 181{
182} 182}
183 183
184void __kprobes probes_emulate_none(probes_opcode_t opcode, 184void __kprobes probes_emulate_none(probes_opcode_t opcode,
185 struct arch_specific_insn *asi, 185 struct arch_probes_insn *asi,
186 struct pt_regs *regs) 186 struct pt_regs *regs)
187{ 187{
188 asi->insn_fn(); 188 asi->insn_fn();
@@ -196,7 +196,7 @@ void __kprobes probes_emulate_none(probes_opcode_t opcode,
196 * emulation handler is called. 196 * emulation handler is called.
197 */ 197 */
198static probes_opcode_t __kprobes 198static probes_opcode_t __kprobes
199prepare_emulated_insn(probes_opcode_t insn, struct arch_specific_insn *asi, 199prepare_emulated_insn(probes_opcode_t insn, struct arch_probes_insn *asi,
200 bool thumb) 200 bool thumb)
201{ 201{
202#ifdef CONFIG_THUMB2_KERNEL 202#ifdef CONFIG_THUMB2_KERNEL
@@ -221,7 +221,7 @@ prepare_emulated_insn(probes_opcode_t insn, struct arch_specific_insn *asi,
221 * prepare_emulated_insn 221 * prepare_emulated_insn
222 */ 222 */
223static void __kprobes 223static void __kprobes
224set_emulated_insn(probes_opcode_t insn, struct arch_specific_insn *asi, 224set_emulated_insn(probes_opcode_t insn, struct arch_probes_insn *asi,
225 bool thumb) 225 bool thumb)
226{ 226{
227#ifdef CONFIG_THUMB2_KERNEL 227#ifdef CONFIG_THUMB2_KERNEL
@@ -385,7 +385,7 @@ static const int decode_struct_sizes[NUM_DECODE_TYPES] = {
385 * 385 *
386 */ 386 */
387int __kprobes 387int __kprobes
388probes_decode_insn(probes_opcode_t insn, struct arch_specific_insn *asi, 388probes_decode_insn(probes_opcode_t insn, struct arch_probes_insn *asi,
389 const union decode_item *table, bool thumb, 389 const union decode_item *table, bool thumb,
390 bool emulate, const union decode_action *actions) 390 bool emulate, const union decode_action *actions)
391{ 391{
diff --git a/arch/arm/kernel/probes.h b/arch/arm/kernel/probes.h
index 33cc30c50cf5..dba9f2466a93 100644
--- a/arch/arm/kernel/probes.h
+++ b/arch/arm/kernel/probes.h
@@ -306,7 +306,7 @@ union decode_item {
306 306
307struct decode_header; 307struct decode_header;
308typedef enum probes_insn (probes_custom_decode_t)(probes_opcode_t, 308typedef enum probes_insn (probes_custom_decode_t)(probes_opcode_t,
309 struct arch_specific_insn *, 309 struct arch_probes_insn *,
310 const struct decode_header *); 310 const struct decode_header *);
311 311
312union decode_action { 312union decode_action {
@@ -400,7 +400,7 @@ probes_insn_handler_t probes_simulate_nop;
400probes_insn_handler_t probes_emulate_none; 400probes_insn_handler_t probes_emulate_none;
401 401
402int __kprobes 402int __kprobes
403probes_decode_insn(probes_opcode_t insn, struct arch_specific_insn *asi, 403probes_decode_insn(probes_opcode_t insn, struct arch_probes_insn *asi,
404 const union decode_item *table, bool thumb, bool emulate, 404 const union decode_item *table, bool thumb, bool emulate,
405 const union decode_action *actions); 405 const union decode_action *actions);
406 406