s390/ftrace: add FTRACE_GEN_NOP_ASM macro
authorSven Schnelle <svens@linux.ibm.com>
Fri, 24 Sep 2021 13:03:07 +0000 (15:03 +0200)
committerVasily Gorbik <gor@linux.ibm.com>
Mon, 4 Oct 2021 07:49:37 +0000 (09:49 +0200)
FTRACE_GEN_NOP_ASM(name) can be used to generate assembly functions with
the required information added to allow tracing via kprobes/ftrace. It
adds the nop instruction which will be patched by ftrace later. If the
compiler supports -mnop-mcount it will also add an entry to the
__mcount_loc section.

Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
Acked-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/include/asm/ftrace.h

index e8b460f39c588414673b6456b6c356a95c7c593c..d1841f4176be036b8728fc28cfa7fc4c1fe797a9 100644 (file)
@@ -68,4 +68,32 @@ static inline bool arch_syscall_match_sym_name(const char *sym,
 }
 
 #endif /* __ASSEMBLY__ */
+
+#ifdef CONFIG_FUNCTION_TRACER
+
+#define FTRACE_NOP_INSN .word 0xc004, 0x0000, 0x0000 /* brcl 0,0 */
+
+#ifndef CC_USING_HOTPATCH
+
+#define FTRACE_GEN_MCOUNT_RECORD(name)         \
+       .section __mcount_loc, "a", @progbits;  \
+       .quad name;                             \
+       .previous;
+
+#else /* !CC_USING_HOTPATCH */
+
+#define FTRACE_GEN_MCOUNT_RECORD(name)
+
+#endif /* !CC_USING_HOTPATCH */
+
+#define FTRACE_GEN_NOP_ASM(name)               \
+       FTRACE_GEN_MCOUNT_RECORD(name)          \
+       FTRACE_NOP_INSN
+
+#else /* CONFIG_FUNCTION_TRACER */
+
+#define FTRACE_GEN_NOP_ASM(name)
+
+#endif /* CONFIG_FUNCTION_TRACER */
+
 #endif /* _ASM_S390_FTRACE_H */