All of lore.kernel.org
 help / color / mirror / Atom feed
From: tixy@yxit.co.uk (Tixy)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 14/24] ARM: kprobes: Migrate ARM space_cccc_100x to decoding tables
Date: Wed, 13 Jul 2011 10:06:03 +0100	[thread overview]
Message-ID: <1310547973-31784-15-git-send-email-tixy@yxit.co.uk> (raw)
In-Reply-To: <1310547973-31784-1-git-send-email-tixy@yxit.co.uk>

From: Jon Medhurst <tixy@yxit.co.uk>

Signed-off-by: Jon Medhurst <tixy@yxit.co.uk>
---
 arch/arm/kernel/kprobes-arm.c |   33 +++++++++++++--------------------
 1 files changed, 13 insertions(+), 20 deletions(-)

diff --git a/arch/arm/kernel/kprobes-arm.c b/arch/arm/kernel/kprobes-arm.c
index 319e6fe..b2fd2c8 100644
--- a/arch/arm/kernel/kprobes-arm.c
+++ b/arch/arm/kernel/kprobes-arm.c
@@ -1434,25 +1434,18 @@ static const union decode_item arm_cccc_01xx_table[] = {
 	DECODE_END
 };
 
-static enum kprobe_insn __kprobes
-space_cccc_100x(kprobe_opcode_t insn, struct arch_specific_insn *asi)
-{
-	/* LDM(2) : cccc 100x x101 xxxx 0xxx xxxx xxxx xxxx */
-	/* LDM(3) : cccc 100x x1x1 xxxx 1xxx xxxx xxxx xxxx */
-	if ((insn & 0x0e708000) == 0x85000000 ||
-	    (insn & 0x0e508000) == 0x85010000)
-		return INSN_REJECTED;
-
-	/* LDM(1) : cccc 100x x0x1 xxxx xxxx xxxx xxxx xxxx */
-	/* STM(1) : cccc 100x x0x0 xxxx xxxx xxxx xxxx xxxx */
-
-	/*
-	 * Make the instruction unconditional because the new emulation
-	 * functions don't bother to setup the PSR context.
-	 */
-	insn = (insn | 0xe0000000) & ~0x10000000;
-	return kprobe_decode_ldmstm(insn, asi);
-}
+static const union decode_item arm_cccc_100x_table[] = {
+	/* Block data transfer instructions				*/
+
+	/* LDM			cccc 100x x0x1 xxxx xxxx xxxx xxxx xxxx */
+	/* STM			cccc 100x x0x0 xxxx xxxx xxxx xxxx xxxx */
+	DECODE_CUSTOM	(0x0e400000, 0x08000000, kprobe_decode_ldmstm),
+
+	/* STM (user registers)	cccc 100x x1x0 xxxx xxxx xxxx xxxx xxxx */
+	/* LDM (user registers)	cccc 100x x1x1 xxxx 0xxx xxxx xxxx xxxx */
+	/* LDM (exception ret)	cccc 100x x1x1 xxxx 1xxx xxxx xxxx xxxx */
+	DECODE_END
+};
 
 static enum kprobe_insn __kprobes
 space_cccc_101x(kprobe_opcode_t insn, struct arch_specific_insn *asi)
@@ -1531,7 +1524,7 @@ arm_kprobe_decode_insn(kprobe_opcode_t insn, struct arch_specific_insn *asi)
 
 	else if ((insn & 0x0e000000) == 0x08000000)
 
-		return space_cccc_100x(insn, asi);
+		return kprobe_decode_insn(insn, asi, arm_cccc_100x_table, false);
 
 	else if ((insn & 0x0e000000) == 0x0a000000)
 
-- 
1.7.2.5

  parent reply	other threads:[~2011-07-13  9:06 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-13  9:05 [PATCH 0/24] ARM: kprobes: Migrate ARM instruction decoding to data tables Tixy
2011-07-13  9:05 ` [PATCH 01/24] ARM: kprobes: Migrate ARM space_1111 to decoding tables Tixy
2011-07-13  9:05 ` [PATCH 02/24] ARM: kprobes: Add alu_write_pc() Tixy
2011-07-13  9:05 ` [PATCH 03/24] ARM: kprobes: Add BLX macro Tixy
2011-07-13  9:05 ` [PATCH 04/24] ARM: kprobes: Add emulate_rd12rn16rm0rs8_rwflags() Tixy
2011-07-13  9:05 ` [PATCH 05/24] ARM: kprobes: Migrate ARM data-processing (register) instructions to decoding tables Tixy
2011-07-13  9:05 ` [PATCH 06/24] ARM: kprobes: Add emulate_ldrdstrd() Tixy
2011-07-13  9:05 ` [PATCH 07/24] ARM: kprobes: Migrate ARM LDRD and STRD to decoding tables Tixy
2011-07-13  9:05 ` [PATCH 08/24] ARM: kprobes: Migrate ARM space_cccc_000x " Tixy
2011-07-13  9:05 ` [PATCH 09/24] ARM: kprobes: Migrate ARM space_cccc_001x " Tixy
2011-07-13  9:05 ` [PATCH 10/24] ARM: kprobes: Add emulate_rd12rn16rm0_rwflags_nopc() Tixy
2011-07-13  9:06 ` [PATCH 11/24] ARM: kprobes: Migrate ARM space_cccc_0110__1 to decoding tables Tixy
2011-07-13  9:06 ` [PATCH 12/24] ARM: kprobes: Migrate ARM space_cccc_0111__1 " Tixy
2011-07-13  9:06 ` [PATCH 13/24] ARM: kprobes: Migrate ARM space_cccc_01xx " Tixy
2011-07-13  9:06 ` Tixy [this message]
2011-07-13  9:06 ` [PATCH 15/24] ARM: kprobes: Migrate remaining instruction decoding functions to tables Tixy
2011-07-13  9:06 ` [PATCH 16/24] ARM: kprobes: Add emulate_rd16rn12rm0rs8_rwflags_nopc() Tixy
2011-07-13  9:06 ` [PATCH 17/24] ARM: kprobes: Replace use of prep_emulate_rd12rn16rm0_wflags() Tixy
2011-07-13  9:06 ` [PATCH 18/24] ARM: kprobes: Add emulate_rd12rm0_noflags_nopc() Tixy
2011-07-13  9:06 ` [PATCH 19/24] ARM: kprobes: Add emulate_rdlo12rdhi16rn0rm8_rwflags_nopc() Tixy
2011-07-13  9:06 ` [PATCH 20/24] ARM: kprobes: Add new versions of emulate_ldr() and emulate_str() Tixy
2011-07-13  9:06 ` [PATCH 21/24] ARM: kprobes: Use " Tixy
2011-07-13  9:06 ` [PATCH 22/24] ARM: kprobes: Reject probing of unprivileged load and store instructions Tixy
2011-07-13  9:06 ` [PATCH 23/24] ARM: kprobes: Decode ARM preload (immediate) instructions Tixy
2011-07-13  9:06 ` [PATCH 24/24] ARM: kprobes: Remove now unused code Tixy
2011-07-13 16:04   ` Nicolas Pitre

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1310547973-31784-15-git-send-email-tixy@yxit.co.uk \
    --to=tixy@yxit.co.uk \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.