diff options
author | Jon Medhurst <tixy@linaro.org> | 2015-01-07 06:42:30 -0500 |
---|---|---|
committer | Jon Medhurst <tixy@linaro.org> | 2015-01-09 04:36:51 -0500 |
commit | 832607e79d7423c67ef8a3de8dfa3d25b5b0bf86 (patch) | |
tree | c16876fab4d3f0a6d53712784605c5e2fdab0379 /arch/arm/probes | |
parent | fca08f326ae0423f03b097ff54de432fe77b95d0 (diff) |
ARM: probes: Use correct action types for MOVW, SEV and WFI
This doesn't correct any bugs when probing these instructions but makes
MOVW slightly faster and makes everything more symmetric with the Thumb
instruction cases.
We can also remove the now redundant PROBES_EMULATE_NONE and
PROBES_SIMULATE_NOP actions.
Signed-off-by: Jon Medhurst <tixy@linaro.org>
Diffstat (limited to 'arch/arm/probes')
-rw-r--r-- | arch/arm/probes/decode-arm.c | 6 | ||||
-rw-r--r-- | arch/arm/probes/decode-arm.h | 2 | ||||
-rw-r--r-- | arch/arm/probes/kprobes/actions-arm.c | 2 | ||||
-rw-r--r-- | arch/arm/probes/uprobes/actions-arm.c | 2 |
4 files changed, 3 insertions, 9 deletions
diff --git a/arch/arm/probes/decode-arm.c b/arch/arm/probes/decode-arm.c index e39cc75952f2..04114f74a2d2 100644 --- a/arch/arm/probes/decode-arm.c +++ b/arch/arm/probes/decode-arm.c | |||
@@ -370,17 +370,17 @@ static const union decode_item arm_cccc_001x_table[] = { | |||
370 | 370 | ||
371 | /* MOVW cccc 0011 0000 xxxx xxxx xxxx xxxx xxxx */ | 371 | /* MOVW cccc 0011 0000 xxxx xxxx xxxx xxxx xxxx */ |
372 | /* MOVT cccc 0011 0100 xxxx xxxx xxxx xxxx xxxx */ | 372 | /* MOVT cccc 0011 0100 xxxx xxxx xxxx xxxx xxxx */ |
373 | DECODE_EMULATEX (0x0fb00000, 0x03000000, PROBES_DATA_PROCESSING_IMM, | 373 | DECODE_EMULATEX (0x0fb00000, 0x03000000, PROBES_MOV_HALFWORD, |
374 | REGS(0, NOPC, 0, 0, 0)), | 374 | REGS(0, NOPC, 0, 0, 0)), |
375 | 375 | ||
376 | /* YIELD cccc 0011 0010 0000 xxxx xxxx 0000 0001 */ | 376 | /* YIELD cccc 0011 0010 0000 xxxx xxxx 0000 0001 */ |
377 | DECODE_OR (0x0fff00ff, 0x03200001), | 377 | DECODE_OR (0x0fff00ff, 0x03200001), |
378 | /* SEV cccc 0011 0010 0000 xxxx xxxx 0000 0100 */ | 378 | /* SEV cccc 0011 0010 0000 xxxx xxxx 0000 0100 */ |
379 | DECODE_EMULATE (0x0fff00ff, 0x03200004, PROBES_EMULATE_NONE), | 379 | DECODE_EMULATE (0x0fff00ff, 0x03200004, PROBES_SEV), |
380 | /* NOP cccc 0011 0010 0000 xxxx xxxx 0000 0000 */ | 380 | /* NOP cccc 0011 0010 0000 xxxx xxxx 0000 0000 */ |
381 | /* WFE cccc 0011 0010 0000 xxxx xxxx 0000 0010 */ | 381 | /* WFE cccc 0011 0010 0000 xxxx xxxx 0000 0010 */ |
382 | /* WFI cccc 0011 0010 0000 xxxx xxxx 0000 0011 */ | 382 | /* WFI cccc 0011 0010 0000 xxxx xxxx 0000 0011 */ |
383 | DECODE_SIMULATE (0x0fff00fc, 0x03200000, PROBES_SIMULATE_NOP), | 383 | DECODE_SIMULATE (0x0fff00fc, 0x03200000, PROBES_WFE), |
384 | /* DBG cccc 0011 0010 0000 xxxx xxxx ffff xxxx */ | 384 | /* DBG cccc 0011 0010 0000 xxxx xxxx ffff xxxx */ |
385 | /* unallocated hints cccc 0011 0010 0000 xxxx xxxx xxxx xxxx */ | 385 | /* unallocated hints cccc 0011 0010 0000 xxxx xxxx xxxx xxxx */ |
386 | /* MSR (immediate) cccc 0011 0x10 xxxx xxxx xxxx xxxx xxxx */ | 386 | /* MSR (immediate) cccc 0011 0x10 xxxx xxxx xxxx xxxx xxxx */ |
diff --git a/arch/arm/probes/decode-arm.h b/arch/arm/probes/decode-arm.h index 9c56b40d6a57..cb0b26331930 100644 --- a/arch/arm/probes/decode-arm.h +++ b/arch/arm/probes/decode-arm.h | |||
@@ -18,8 +18,6 @@ | |||
18 | #include "decode.h" | 18 | #include "decode.h" |
19 | 19 | ||
20 | enum probes_arm_action { | 20 | enum probes_arm_action { |
21 | PROBES_EMULATE_NONE, | ||
22 | PROBES_SIMULATE_NOP, | ||
23 | PROBES_PRELOAD_IMM, | 21 | PROBES_PRELOAD_IMM, |
24 | PROBES_PRELOAD_REG, | 22 | PROBES_PRELOAD_REG, |
25 | PROBES_BRANCH_IMM, | 23 | PROBES_BRANCH_IMM, |
diff --git a/arch/arm/probes/kprobes/actions-arm.c b/arch/arm/probes/kprobes/actions-arm.c index 8797879f7b3a..2206f2d80c76 100644 --- a/arch/arm/probes/kprobes/actions-arm.c +++ b/arch/arm/probes/kprobes/actions-arm.c | |||
@@ -302,8 +302,6 @@ emulate_rdlo12rdhi16rn0rm8_rwflags_nopc(probes_opcode_t insn, | |||
302 | } | 302 | } |
303 | 303 | ||
304 | const union decode_action kprobes_arm_actions[NUM_PROBES_ARM_ACTIONS] = { | 304 | const union decode_action kprobes_arm_actions[NUM_PROBES_ARM_ACTIONS] = { |
305 | [PROBES_EMULATE_NONE] = {.handler = probes_emulate_none}, | ||
306 | [PROBES_SIMULATE_NOP] = {.handler = probes_simulate_nop}, | ||
307 | [PROBES_PRELOAD_IMM] = {.handler = probes_simulate_nop}, | 305 | [PROBES_PRELOAD_IMM] = {.handler = probes_simulate_nop}, |
308 | [PROBES_PRELOAD_REG] = {.handler = probes_simulate_nop}, | 306 | [PROBES_PRELOAD_REG] = {.handler = probes_simulate_nop}, |
309 | [PROBES_BRANCH_IMM] = {.handler = simulate_blx1}, | 307 | [PROBES_BRANCH_IMM] = {.handler = simulate_blx1}, |
diff --git a/arch/arm/probes/uprobes/actions-arm.c b/arch/arm/probes/uprobes/actions-arm.c index 1dd4916ba8aa..76eb44972ebe 100644 --- a/arch/arm/probes/uprobes/actions-arm.c +++ b/arch/arm/probes/uprobes/actions-arm.c | |||
@@ -195,8 +195,6 @@ uprobe_decode_ldmstm(probes_opcode_t insn, | |||
195 | } | 195 | } |
196 | 196 | ||
197 | const union decode_action uprobes_probes_actions[] = { | 197 | const union decode_action uprobes_probes_actions[] = { |
198 | [PROBES_EMULATE_NONE] = {.handler = probes_simulate_nop}, | ||
199 | [PROBES_SIMULATE_NOP] = {.handler = probes_simulate_nop}, | ||
200 | [PROBES_PRELOAD_IMM] = {.handler = probes_simulate_nop}, | 198 | [PROBES_PRELOAD_IMM] = {.handler = probes_simulate_nop}, |
201 | [PROBES_PRELOAD_REG] = {.handler = probes_simulate_nop}, | 199 | [PROBES_PRELOAD_REG] = {.handler = probes_simulate_nop}, |
202 | [PROBES_BRANCH_IMM] = {.handler = simulate_blx1}, | 200 | [PROBES_BRANCH_IMM] = {.handler = simulate_blx1}, |