riscv/ftrace: Add dynamic function tracer support
authorAlan Kao <alankao@andestech.com>
Tue, 13 Feb 2018 05:13:17 +0000 (13:13 +0800)
committerPalmer Dabbelt <palmer@sifive.com>
Tue, 3 Apr 2018 02:59:12 +0000 (19:59 -0700)
commitc15ac4fd60d5ffdb151bb2c7805f377fd7f90363
tree758628a4b5779f5af742da0b1781e8a467736827
parenta1d2a6b4cee858a2f27eebce731fbf1dfd72cb4e
riscv/ftrace: Add dynamic function tracer support

We now have dynamic ftrace with the following added items:

* ftrace_make_call, ftrace_make_nop (in kernel/ftrace.c)
  The two functions turn each recorded call site of filtered functions
  into a call to ftrace_caller or nops

* ftracce_update_ftrace_func (in kernel/ftrace.c)
  turns the nops at ftrace_call into a call to a generic entry for
  function tracers.

* ftrace_caller (in kernel/mcount-dyn.S)
  The entry where each _mcount call sites calls to once they are
  filtered to be traced.

Also, this patch fixes the semantic problems in mcount.S, which will be
treated as only a reference implementation once we have the dynamic
ftrace.

Cc: Greentime Hu <greentime@andestech.com>
Signed-off-by: Alan Kao <alankao@andestech.com>
Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
arch/riscv/Kconfig
arch/riscv/include/asm/ftrace.h
arch/riscv/kernel/Makefile
arch/riscv/kernel/ftrace.c
arch/riscv/kernel/mcount-dyn.S [new file with mode: 0644]
arch/riscv/kernel/mcount.S