From: dave.martin@linaro.org (Dave Martin)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCHv2 2/6] ARM: ftrace: use canonical Thumb-2 wide instruction format
Date: Mon, 30 Jan 2012 16:54:22 +0000 [thread overview]
Message-ID: <20120130165421.GC2248@linaro.org> (raw)
In-Reply-To: <1327757725-10114-3-git-send-email-rabin@rab.in>
On Sat, Jan 28, 2012 at 07:05:21PM +0530, Rabin Vincent wrote:
> As commit 592201a9f15 (ARM: Thumb-2: Support Thumb-2 in undefined
> instruction handler) says:
>
> 32-bit Thumb instructions are specified in the form:
> ((first_half << 16 ) | second_half)
> which matches the layout used by the ARM ARM.
>
> Convert the ftrace code to use the same format to avoid the usage of
> different formats in kernel code.
>
> Signed-off-by: Rabin Vincent <rabin@rab.in>
Acked-by: Dave Martin <dave.martin@linaro.org>
I haven't tried it out, but the use of the opcode helpers looks correct.
Cheers
---Dave
> ---
> arch/arm/kernel/ftrace.c | 13 +++++++++++--
> 1 files changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/kernel/ftrace.c b/arch/arm/kernel/ftrace.c
> index e9488ad..72a381a 100644
> --- a/arch/arm/kernel/ftrace.c
> +++ b/arch/arm/kernel/ftrace.c
> @@ -16,10 +16,11 @@
> #include <linux/uaccess.h>
>
> #include <asm/cacheflush.h>
> +#include <asm/opcodes.h>
> #include <asm/ftrace.h>
>
> #ifdef CONFIG_THUMB2_KERNEL
> -#define NOP 0xeb04f85d /* pop.w {lr} */
> +#define NOP 0xf85deb04 /* pop.w {lr} */
> #else
> #define NOP 0xe8bd4000 /* pop {lr} */
> #endif
> @@ -88,7 +89,7 @@ static unsigned long ftrace_gen_branch(unsigned long pc, unsigned long addr,
> if (link)
> second |= 1 << 14;
>
> - return (second << 16) | first;
> + return __opcode_thumb32_compose(first, second);
> }
> #else
> static unsigned long ftrace_gen_branch(unsigned long pc, unsigned long addr,
> @@ -125,6 +126,14 @@ static int ftrace_modify_code(unsigned long pc, unsigned long old,
> {
> unsigned long replaced;
>
> + if (IS_ENABLED(CONFIG_THUMB2_KERNEL)) {
> + old = __opcode_to_mem_thumb32(old);
> + new = __opcode_to_mem_thumb32(new);
> + } else {
> + old = __opcode_to_mem_arm(old);
> + new = __opcode_to_mem_arm(new);
> + }
> +
> if (old) {
> if (probe_kernel_read(&replaced, (void *)pc, MCOUNT_INSN_SIZE))
> return -EFAULT;
> --
> 1.7.8.3
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2012-01-30 16:54 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-28 13:35 [PATCHv2 0/6] ARM: jump label support Rabin Vincent
2012-01-28 13:35 ` [PATCHv2 1/6] ARM: ftrace: remove useless memory checks Rabin Vincent
2012-02-20 16:16 ` Russell King - ARM Linux
2012-02-22 14:13 ` Rabin Vincent
2012-02-22 21:28 ` Russell King - ARM Linux
2012-02-24 16:48 ` Rabin Vincent
2012-02-27 11:21 ` Russell King - ARM Linux
2012-01-28 13:35 ` [PATCHv2 2/6] ARM: ftrace: use canonical Thumb-2 wide instruction format Rabin Vincent
2012-01-30 16:54 ` Dave Martin [this message]
2012-01-28 13:35 ` [PATCHv2 3/6] ARM: extract out insn generation code from ftrace Rabin Vincent
2012-01-28 13:35 ` [PATCHv2 4/6] ARM: extract out code patch function from kprobes Rabin Vincent
2012-01-30 17:00 ` Dave Martin
2012-02-07 16:07 ` [PATCHv3] " Rabin Vincent
2012-01-31 18:32 ` [PATCHv2 4/6] " Tixy
2012-01-28 13:35 ` [PATCHv2 5/6] jump label: detect %c support for ARM Rabin Vincent
2012-01-28 13:35 ` Rabin Vincent
2012-02-07 16:18 ` Rabin Vincent
2012-02-07 16:18 ` Rabin Vincent
2012-02-07 18:04 ` Jason Baron
2012-02-07 18:04 ` Jason Baron
2012-02-20 17:21 ` Russell King - ARM Linux
2012-02-20 17:21 ` Russell King - ARM Linux
2012-02-22 13:32 ` Rabin Vincent
2012-02-22 13:32 ` Rabin Vincent
2012-01-28 13:35 ` [PATCHv2 6/6] ARM: add jump label support Rabin Vincent
2012-02-15 17:00 ` [PATCHv3] " Rabin Vincent
2012-02-29 15:24 ` Rabin Vincent
2012-02-29 15:47 ` Jason Baron
2012-01-31 8:23 ` [PATCHv2 0/6] ARM: " Jon Medhurst (Tixy)
2012-01-31 11:11 ` Dave Martin
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=20120130165421.GC2248@linaro.org \
--to=dave.martin@linaro.org \
--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.