aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh
diff options
context:
space:
mode:
authorMatt Fleming <matt@console-pimps.org>2009-06-28 09:05:44 -0400
committerPaul Mundt <lethal@linux-sh.org>2009-07-06 06:53:53 -0400
commitc1340c053be7a43d837a3acb352d5008be865a55 (patch)
treeb88104b3a2373d58465057eae38885b66315b3c0 /arch/sh
parentca0d17277fd101ce4878f92b398b6ab71fb2c287 (diff)
sh: Define HAVE_FUNCTION_TRACE_MCOUNT_TEST
Enable HAVE_FUNCTION_TRACE_MCOUNT_TEST and test the value of function_trace_stop from our assembly code as opposed to using the generic C function. This should optimise our mcount/ftrace code path. Signed-off-by: Matt Fleming <matt@console-pimps.org> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh')
-rw-r--r--arch/sh/Kconfig1
-rw-r--r--arch/sh/lib/mcount.S17
2 files changed, 17 insertions, 1 deletions
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index e2bdd7b94fd9..801a4a79ffe3 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -31,6 +31,7 @@ config SUPERH32
31 select HAVE_FUNCTION_TRACER 31 select HAVE_FUNCTION_TRACER
32 select HAVE_FTRACE_MCOUNT_RECORD 32 select HAVE_FTRACE_MCOUNT_RECORD
33 select HAVE_DYNAMIC_FTRACE 33 select HAVE_DYNAMIC_FTRACE
34 select HAVE_FUNCTION_TRACE_MCOUNT_TEST
34 select HAVE_ARCH_KGDB 35 select HAVE_ARCH_KGDB
35 select ARCH_HIBERNATION_POSSIBLE if MMU 36 select ARCH_HIBERNATION_POSSIBLE if MMU
36 37
diff --git a/arch/sh/lib/mcount.S b/arch/sh/lib/mcount.S
index 110fbfe1831f..cb87ef580b31 100644
--- a/arch/sh/lib/mcount.S
+++ b/arch/sh/lib/mcount.S
@@ -2,7 +2,7 @@
2 * arch/sh/lib/mcount.S 2 * arch/sh/lib/mcount.S
3 * 3 *
4 * Copyright (C) 2008 Paul Mundt 4 * Copyright (C) 2008 Paul Mundt
5 * Copyright (C) 2008 Matt Fleming 5 * Copyright (C) 2008, 2009 Matt Fleming
6 * 6 *
7 * This file is subject to the terms and conditions of the GNU General Public 7 * This file is subject to the terms and conditions of the GNU General Public
8 * License. See the file "COPYING" in the main directory of this archive 8 * License. See the file "COPYING" in the main directory of this archive
@@ -35,6 +35,12 @@
35 .type mcount,@function 35 .type mcount,@function
36_mcount: 36_mcount:
37mcount: 37mcount:
38#ifndef CONFIG_DYNAMIC_FTRACE
39 mov.l .Lfunction_trace_stop, r0
40 mov.l @r0, r0
41 tst r0, r0
42 bf ftrace_stub
43#endif
38 MCOUNT_ENTER() 44 MCOUNT_ENTER()
39 45
40#ifdef CONFIG_DYNAMIC_FTRACE 46#ifdef CONFIG_DYNAMIC_FTRACE
@@ -62,6 +68,11 @@ skip_trace:
62#ifdef CONFIG_DYNAMIC_FTRACE 68#ifdef CONFIG_DYNAMIC_FTRACE
63 .globl ftrace_caller 69 .globl ftrace_caller
64ftrace_caller: 70ftrace_caller:
71 mov.l .Lfunction_trace_stop, r0
72 mov.l @r0, r0
73 tst r0, r0
74 bf ftrace_stub
75
65 MCOUNT_ENTER() 76 MCOUNT_ENTER()
66 77
67 .globl ftrace_call 78 .globl ftrace_call
@@ -88,3 +99,7 @@ ftrace_call:
88ftrace_stub: 99ftrace_stub:
89 rts 100 rts
90 nop 101 nop
102
103 .align 2
104.Lfunction_trace_stop:
105 .long function_trace_stop