Messages in this thread | | | From | Arnd Bergmann <> | Date | Wed, 8 Jan 2020 15:22:33 +0100 | Subject | Re: [PATCH -v5mkII 13/17] arm/ftrace: Use __patch_text() |
| |
On Wed, Jan 8, 2020 at 3:16 PM Steven Rostedt <rostedt@goodmis.org> wrote: > > On Wed, 8 Jan 2020 13:22:52 +0100 > Arnd Bergmann <arnd@arndb.de> wrote: > > > The problem is that we don't have a BE32 definition of > > __opcode_to_mem_thumb32, mostly because no hardware > > supports that. > > > > One possible workaround is a big ugly: > > > > diff --git a/arch/arm/kernel/patch.c b/arch/arm/kernel/patch.c > > index d0a05a3bdb96..1067fd122897 100644 > > --- a/arch/arm/kernel/patch.c > > +++ b/arch/arm/kernel/patch.c > > @@ -90,9 +90,11 @@ void __kprobes __patch_text_real(void *addr, > > unsigned int insn, bool remap) > > > > size = sizeof(u32); > > } else { > > +#ifdef CONFIG_THUMB2_KERNEL > > if (thumb2) > > If we change the above to: > > if (IS_ENABLED(CONFIG_THUMB2_KERNEL) && thumb2) > > Would the compiler optmize out __opcode_to_mem_thumb32(). We would need > to add a declaration for it, but wont need to define it. At least we > wont have nasty #ifdef logic in the code.
If we add a declaration for it, I think no change to patch.c is needed, as 'thumb2' already has compile-time constant value equal to IS_ENABLED(CONFIG_THUMB2_KERNEL).
I'll try it out.
Arnd
| |