1/* 2 * Copyright IBM Corp. 2008,2009 3 * 4 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>, 5 * 6 */ 7 8#include <asm/asm-offsets.h> 9 10 .globl ftrace_stub 11ftrace_stub: 12 br %r14 13 14 .globl _mcount 15_mcount: 16#ifdef CONFIG_DYNAMIC_FTRACE 17 br %r14 18 19 .data 20 .globl ftrace_dyn_func 21ftrace_dyn_func: 22 .quad ftrace_stub 23 .previous 24 25 .globl ftrace_caller 26ftrace_caller: 27#endif 28 larl %r1,function_trace_stop 29 icm %r1,0xf,0(%r1) 30 bnzr %r14 31 stmg %r2,%r5,32(%r15) 32 stg %r14,112(%r15) 33 lgr %r1,%r15 34 aghi %r15,-160 35 stg %r1,__SF_BACKCHAIN(%r15) 36 lgr %r2,%r14 37 lg %r3,168(%r15) 38#ifdef CONFIG_DYNAMIC_FTRACE 39 larl %r14,ftrace_dyn_func 40#else 41 larl %r14,ftrace_trace_function 42#endif 43 lg %r14,0(%r14) 44 basr %r14,%r14 45#ifdef CONFIG_FUNCTION_GRAPH_TRACER 46#ifdef CONFIG_DYNAMIC_FTRACE 47 .globl ftrace_graph_caller 48ftrace_graph_caller: 49 # This unconditional branch gets runtime patched. Change only if 50 # you know what you are doing. See ftrace_enable_graph_caller(). 51 j 0f 52#endif 53 lg %r2,272(%r15) 54 lg %r3,168(%r15) 55 brasl %r14,prepare_ftrace_return 56 stg %r2,168(%r15) 570: 58#endif 59 aghi %r15,160 60 lmg %r2,%r5,32(%r15) 61 lg %r14,112(%r15) 62 br %r14 63 64#ifdef CONFIG_FUNCTION_GRAPH_TRACER 65 66 .globl return_to_handler 67return_to_handler: 68 stmg %r2,%r5,32(%r15) 69 lgr %r1,%r15 70 aghi %r15,-160 71 stg %r1,__SF_BACKCHAIN(%r15) 72 brasl %r14,ftrace_return_to_handler 73 aghi %r15,160 74 lgr %r14,%r2 75 lmg %r2,%r5,32(%r15) 76 br %r14 77 78#endif 79