aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/kernel/kprobes-arm.c44
1 files changed, 30 insertions, 14 deletions
diff --git a/arch/arm/kernel/kprobes-arm.c b/arch/arm/kernel/kprobes-arm.c
index d252e7821fcc..1ee38adeb82d 100644
--- a/arch/arm/kernel/kprobes-arm.c
+++ b/arch/arm/kernel/kprobes-arm.c
@@ -1275,19 +1275,25 @@ static const union decode_item arm_cccc_000x_____1xx1_table[] = {
1275 DECODE_EMULATEX (0x0e5000d0, 0x004000d0, emulate_ldrdstrd, 1275 DECODE_EMULATEX (0x0e5000d0, 0x004000d0, emulate_ldrdstrd,
1276 REGS(NOPCWB, NOPCX, 0, 0, 0)), 1276 REGS(NOPCWB, NOPCX, 0, 0, 0)),
1277 1277
1278 /* Reject Rd is PC */
1279 /* TODO: fold this into next entry when it is made a DECODE_EMULATE */
1280 DECODE_REJECT (0x0000f000, 0x0000f000),
1281
1282 /* STRH (register) cccc 000x x0x0 xxxx xxxx xxxx 1011 xxxx */ 1278 /* STRH (register) cccc 000x x0x0 xxxx xxxx xxxx 1011 xxxx */
1279 DECODE_EMULATEX (0x0e5000f0, 0x000000b0, emulate_str,
1280 REGS(NOPCWB, NOPC, 0, 0, NOPC)),
1281
1283 /* LDRH (register) cccc 000x x0x1 xxxx xxxx xxxx 1011 xxxx */ 1282 /* LDRH (register) cccc 000x x0x1 xxxx xxxx xxxx 1011 xxxx */
1284 /* LDRSB (register) cccc 000x x0x1 xxxx xxxx xxxx 1101 xxxx */ 1283 /* LDRSB (register) cccc 000x x0x1 xxxx xxxx xxxx 1101 xxxx */
1285 /* LDRSH (register) cccc 000x x0x1 xxxx xxxx xxxx 1111 xxxx */ 1284 /* LDRSH (register) cccc 000x x0x1 xxxx xxxx xxxx 1111 xxxx */
1285 DECODE_EMULATEX (0x0e500090, 0x00100090, emulate_ldr,
1286 REGS(NOPCWB, NOPC, 0, 0, NOPC)),
1287
1286 /* STRH (immediate) cccc 000x x1x0 xxxx xxxx xxxx 1011 xxxx */ 1288 /* STRH (immediate) cccc 000x x1x0 xxxx xxxx xxxx 1011 xxxx */
1289 DECODE_EMULATEX (0x0e5000f0, 0x004000b0, emulate_str,
1290 REGS(NOPCWB, NOPC, 0, 0, 0)),
1291
1287 /* LDRH (immediate) cccc 000x x1x1 xxxx xxxx xxxx 1011 xxxx */ 1292 /* LDRH (immediate) cccc 000x x1x1 xxxx xxxx xxxx 1011 xxxx */
1288 /* LDRSB (immediate) cccc 000x x1x1 xxxx xxxx xxxx 1101 xxxx */ 1293 /* LDRSB (immediate) cccc 000x x1x1 xxxx xxxx xxxx 1101 xxxx */
1289 /* LDRSH (immediate) cccc 000x x1x1 xxxx xxxx xxxx 1111 xxxx */ 1294 /* LDRSH (immediate) cccc 000x x1x1 xxxx xxxx xxxx 1111 xxxx */
1290 DECODE_CUSTOM (0x0e000090, 0x00000090, prep_emulate_ldr_str), 1295 DECODE_EMULATEX (0x0e500090, 0x00500090, emulate_ldr,
1296 REGS(NOPCWB, NOPC, 0, 0, 0)),
1291 1297
1292 DECODE_END 1298 DECODE_END
1293}; 1299};
@@ -1558,15 +1564,25 @@ static const union decode_item arm_cccc_01xx_table[] = {
1558 /* LDRB/STRB pc,[...] cccc 01xx x0xx xxxx xxxx xxxx xxxx xxxx */ 1564 /* LDRB/STRB pc,[...] cccc 01xx x0xx xxxx xxxx xxxx xxxx xxxx */
1559 DECODE_REJECT (0x0c40f000, 0x0440f000), 1565 DECODE_REJECT (0x0c40f000, 0x0440f000),
1560 1566
1561 /* LDR cccc 01xx x0x1 xxxx xxxx xxxx xxxx xxxx */ 1567 /* STR (immediate) cccc 010x x0x0 xxxx xxxx xxxx xxxx xxxx */
1562 /* LDRB cccc 01xx x1x1 xxxx xxxx xxxx xxxx xxxx */ 1568 /* STRB (immediate) cccc 010x x1x0 xxxx xxxx xxxx xxxx xxxx */
1563 /* LDRBT cccc 01x0 x111 xxxx xxxx xxxx xxxx xxxx */ 1569 DECODE_EMULATEX (0x0e100000, 0x04000000, emulate_str,
1564 /* LDRT cccc 01x0 x011 xxxx xxxx xxxx xxxx xxxx */ 1570 REGS(NOPCWB, ANY, 0, 0, 0)),
1565 /* STR cccc 01xx x0x0 xxxx xxxx xxxx xxxx xxxx */ 1571
1566 /* STRB cccc 01xx x1x0 xxxx xxxx xxxx xxxx xxxx */ 1572 /* LDR (immediate) cccc 010x x0x1 xxxx xxxx xxxx xxxx xxxx */
1567 /* STRBT cccc 01x0 x110 xxxx xxxx xxxx xxxx xxxx */ 1573 /* LDRB (immediate) cccc 010x x1x1 xxxx xxxx xxxx xxxx xxxx */
1568 /* STRT cccc 01x0 x010 xxxx xxxx xxxx xxxx xxxx */ 1574 DECODE_EMULATEX (0x0e100000, 0x04100000, emulate_ldr,
1569 DECODE_CUSTOM (0x0c000000, 0x04000000, prep_emulate_ldr_str), 1575 REGS(NOPCWB, ANY, 0, 0, 0)),
1576
1577 /* STR (register) cccc 011x x0x0 xxxx xxxx xxxx xxxx xxxx */
1578 /* STRB (register) cccc 011x x1x0 xxxx xxxx xxxx xxxx xxxx */
1579 DECODE_EMULATEX (0x0e100000, 0x06000000, emulate_str,
1580 REGS(NOPCWB, ANY, 0, 0, NOPC)),
1581
1582 /* LDR (register) cccc 011x x0x1 xxxx xxxx xxxx xxxx xxxx */
1583 /* LDRB (register) cccc 011x x1x1 xxxx xxxx xxxx xxxx xxxx */
1584 DECODE_EMULATEX (0x0e100000, 0x06100000, emulate_ldr,
1585 REGS(NOPCWB, ANY, 0, 0, NOPC)),
1570 1586
1571 DECODE_END 1587 DECODE_END
1572}; 1588};