diff options
Diffstat (limited to 'arch/arm/kernel/kprobes-decode.c')
-rw-r--r-- | arch/arm/kernel/kprobes-decode.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/arch/arm/kernel/kprobes-decode.c b/arch/arm/kernel/kprobes-decode.c index baf053ea96eb..e5bc576ba3fb 100644 --- a/arch/arm/kernel/kprobes-decode.c +++ b/arch/arm/kernel/kprobes-decode.c | |||
@@ -1026,14 +1026,16 @@ space_cccc_000x(kprobe_opcode_t insn, struct arch_specific_insn *asi) | |||
1026 | /* cccc 0001 0xx0 xxxx xxxx xxxx xxxx xxx0 xxxx */ | 1026 | /* cccc 0001 0xx0 xxxx xxxx xxxx xxxx xxx0 xxxx */ |
1027 | if ((insn & 0x0f900010) == 0x01000000) { | 1027 | if ((insn & 0x0f900010) == 0x01000000) { |
1028 | 1028 | ||
1029 | /* BXJ : cccc 0001 0010 xxxx xxxx xxxx 0010 xxxx */ | 1029 | /* BXJ : cccc 0001 0010 xxxx xxxx xxxx 0010 xxxx */ |
1030 | /* MSR : cccc 0001 0x10 xxxx xxxx xxxx 0000 xxxx */ | 1030 | /* MSR : cccc 0001 0x10 xxxx xxxx xxxx 0000 xxxx */ |
1031 | /* MRS spsr : cccc 0001 0100 xxxx xxxx xxxx 0000 xxxx */ | ||
1031 | if ((insn & 0x0ff000f0) == 0x01200020 || | 1032 | if ((insn & 0x0ff000f0) == 0x01200020 || |
1032 | (insn & 0x0fb000f0) == 0x01200000) | 1033 | (insn & 0x0fb000f0) == 0x01200000 || |
1034 | (insn & 0x0ff000f0) == 0x01400000) | ||
1033 | return INSN_REJECTED; | 1035 | return INSN_REJECTED; |
1034 | 1036 | ||
1035 | /* MRS : cccc 0001 0x00 xxxx xxxx xxxx 0000 xxxx */ | 1037 | /* MRS cpsr : cccc 0001 0000 xxxx xxxx xxxx 0000 xxxx */ |
1036 | if ((insn & 0x0fb00010) == 0x01000000) | 1038 | if ((insn & 0x0ff000f0) == 0x01000000) |
1037 | return prep_emulate_rd12(insn, asi); | 1039 | return prep_emulate_rd12(insn, asi); |
1038 | 1040 | ||
1039 | /* SMLALxy : cccc 0001 0100 xxxx xxxx xxxx 1xx0 xxxx */ | 1041 | /* SMLALxy : cccc 0001 0100 xxxx xxxx xxxx 1xx0 xxxx */ |