ARM: 8678/1: ftrace: Adds support for CONFIG_DYNAMIC_FTRACE_WITH_REGS
authorAbel Vesa <abelvesa@linux.com>
Fri, 26 May 2017 20:49:47 +0000 (21:49 +0100)
committerRussell King <rmk+kernel@armlinux.org.uk>
Sun, 18 Jun 2017 21:25:16 +0000 (22:25 +0100)
commit620176f335017fbfcbc79d26a8c9beb6e64f4868
treee5865d1ab6cfe66b5009ce118c08d4b9cc49a711
parent1515b186c2359996b50241c1c6f79ff933d5112a
ARM: 8678/1: ftrace: Adds support for CONFIG_DYNAMIC_FTRACE_WITH_REGS

The DYNAMIC_FTRACE_WITH_REGS configuration makes it possible for a
ftrace operation to specify if registers need to saved/restored by
the ftrace handler. This is needed by kgraft and possibly other
ftrace-based tools, and the ARM architecture is currently lacking
this feature. It would also be the first step to support the
"Kprobes-on-ftrace" optimization on ARM.

This patch introduces a new ftrace handler that stores the registers
on the stack before calling the next stage. The registers are restored
from the stack before going back to the instrumented function.

A side-effect of this patch is to activate the support for
ftrace_modify_call() as it defines ARCH_SUPPORTS_FTRACE_OPS for the
ARM architecture.

Signed-off-by: Abel Vesa <abelvesa@linux.com>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
arch/arm/Kconfig
arch/arm/include/asm/ftrace.h
arch/arm/kernel/entry-ftrace.S
arch/arm/kernel/ftrace.c