2 * Low-level ftrace handling
4 * Copyright (C) 2009 Michal Simek <monstr@monstr.eu>
5 * Copyright (C) 2009 PetaLogix
7 * This file is subject to the terms and conditions of the GNU General
8 * Public License. See the file COPYING in the main directory of this
9 * archive for more details.
12 #include <linux/linkage.h>
14 #define NOALIGN_ENTRY(name) .globl name; name:
16 /* FIXME MS: I think that I don't need to save all regs */
49 #define RESTORE_REGS \
88 /* MS: HAVE_FUNCTION_TRACE_MCOUNT_TEST begin of checking */
89 lwi r5, r0, function_trace_stop;
92 /* MS: HAVE_FUNCTION_TRACE_MCOUNT_TEST end of checking */
93 /* MS: test function trace if is taken or not */
94 lwi r20, r0, ftrace_trace_function;
95 addik r6, r0, ftrace_stub;
96 cmpu r5, r20, r6; /* ftrace_trace_function != ftrace_stub */
97 beqid r5, end; /* MS: not taken -> jump over */
99 /* static normal trace */
100 lwi r6, r1, 120; /* MS: load parent addr */
101 addik r5, r15, 0; /* MS: load current function addr */
102 /* MS: here is dependency on previous code */
103 brald r15, r20; /* MS: jump to ftrace handler */
109 rtsd r15, 8; /* MS: jump back */