aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/kernel/kprobes-decode.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/arch/arm/kernel/kprobes-decode.c b/arch/arm/kernel/kprobes-decode.c
index 54c175906787..8f3f03e46ace 100644
--- a/arch/arm/kernel/kprobes-decode.c
+++ b/arch/arm/kernel/kprobes-decode.c
@@ -1102,13 +1102,16 @@ space_cccc_000x(kprobe_opcode_t insn, struct arch_specific_insn *asi)
1102 } 1102 }
1103 1103
1104 /* cccc 0000 xxxx xxxx xxxx xxxx xxxx 1001 xxxx */ 1104 /* cccc 0000 xxxx xxxx xxxx xxxx xxxx 1001 xxxx */
1105 else if ((insn & 0x0f000090) == 0x00000090) { 1105 else if ((insn & 0x0f0000f0) == 0x00000090) {
1106 1106
1107 /* MUL : cccc 0000 0000 xxxx xxxx xxxx 1001 xxxx : */ 1107 /* MUL : cccc 0000 0000 xxxx xxxx xxxx 1001 xxxx : */
1108 /* MULS : cccc 0000 0001 xxxx xxxx xxxx 1001 xxxx :cc */ 1108 /* MULS : cccc 0000 0001 xxxx xxxx xxxx 1001 xxxx :cc */
1109 /* MLA : cccc 0000 0010 xxxx xxxx xxxx 1001 xxxx : */ 1109 /* MLA : cccc 0000 0010 xxxx xxxx xxxx 1001 xxxx : */
1110 /* MLAS : cccc 0000 0011 xxxx xxxx xxxx 1001 xxxx :cc */ 1110 /* MLAS : cccc 0000 0011 xxxx xxxx xxxx 1001 xxxx :cc */
1111 /* UMAAL : cccc 0000 0100 xxxx xxxx xxxx 1001 xxxx : */ 1111 /* UMAAL : cccc 0000 0100 xxxx xxxx xxxx 1001 xxxx : */
1112 /* undef : cccc 0000 0101 xxxx xxxx xxxx 1001 xxxx : */
1113 /* MLS : cccc 0000 0110 xxxx xxxx xxxx 1001 xxxx : */
1114 /* undef : cccc 0000 0111 xxxx xxxx xxxx 1001 xxxx : */
1112 /* UMULL : cccc 0000 1000 xxxx xxxx xxxx 1001 xxxx : */ 1115 /* UMULL : cccc 0000 1000 xxxx xxxx xxxx 1001 xxxx : */
1113 /* UMULLS : cccc 0000 1001 xxxx xxxx xxxx 1001 xxxx :cc */ 1116 /* UMULLS : cccc 0000 1001 xxxx xxxx xxxx 1001 xxxx :cc */
1114 /* UMLAL : cccc 0000 1010 xxxx xxxx xxxx 1001 xxxx : */ 1117 /* UMLAL : cccc 0000 1010 xxxx xxxx xxxx 1001 xxxx : */
@@ -1117,9 +1120,11 @@ space_cccc_000x(kprobe_opcode_t insn, struct arch_specific_insn *asi)
1117 /* SMULLS : cccc 0000 1101 xxxx xxxx xxxx 1001 xxxx :cc */ 1120 /* SMULLS : cccc 0000 1101 xxxx xxxx xxxx 1001 xxxx :cc */
1118 /* SMLAL : cccc 0000 1110 xxxx xxxx xxxx 1001 xxxx : */ 1121 /* SMLAL : cccc 0000 1110 xxxx xxxx xxxx 1001 xxxx : */
1119 /* SMLALS : cccc 0000 1111 xxxx xxxx xxxx 1001 xxxx :cc */ 1122 /* SMLALS : cccc 0000 1111 xxxx xxxx xxxx 1001 xxxx :cc */
1120 if ((insn & 0x0fe000f0) == 0x00000090) { 1123 if ((insn & 0x00d00000) == 0x00500000) {
1124 return INSN_REJECTED;
1125 } else if ((insn & 0x00e00000) == 0x00000000) {
1121 return prep_emulate_rd16rs8rm0_wflags(insn, asi); 1126 return prep_emulate_rd16rs8rm0_wflags(insn, asi);
1122 } else if ((insn & 0x0fe000f0) == 0x00200090) { 1127 } else if ((insn & 0x00a00000) == 0x00200000) {
1123 return prep_emulate_rd16rn12rs8rm0_wflags(insn, asi); 1128 return prep_emulate_rd16rn12rs8rm0_wflags(insn, asi);
1124 } else { 1129 } else {
1125 return prep_emulate_rdhi16rdlo12rs8rm0_wflags(insn, asi); 1130 return prep_emulate_rdhi16rdlo12rs8rm0_wflags(insn, asi);