summaryrefslogtreecommitdiffstats
path: root/arch/blackfin/kernel/ftrace-entry.S
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-03-18 17:02:35 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2010-03-18 17:02:35 -0700
commit39710479303fd3affb3e204e9a7a75cc676977b5 (patch)
tree3fff5fb412df77170883f02fc54bdbee9aba4f22 /arch/blackfin/kernel/ftrace-entry.S
parent9d20593a722c2dab7a5ab74f5d8c9b604aca52f9 (diff)
parenteb63e5d15758d2b1e607ddd5fb861b5596629380 (diff)
downloadtalos-obmc-linux-39710479303fd3affb3e204e9a7a75cc676977b5.tar.gz
talos-obmc-linux-39710479303fd3affb3e204e9a7a75cc676977b5.zip
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin: (96 commits) Blackfin: stop cleaning include/asm/asm-offsets.h Blackfin: scale calibration when cpu freq changes Blackfin: eat spurious space in asm/dpmc.h Blackfin: fix anomaly 283 handling with exact hardware error Blackfin: bf537-stamp: add example ADXL346 orientation resources Blackfin: bf537-stamp: add example AD2S1210 IIO resources Blackfin: don't support keypad wakeup from hibernate Blackfin: bf537-stamp: add example AD7416 IIO resources Blackfin: bf537-stamp: add example ADP8860 backlight/led resources Blackfin: bf537-stamp: add example AD7414 temp sensor resources Blackfin: rename AD1836 to AD183X in board files Blackfin: bf537-stamp: add example AD2S120x resources Blackfin: add support for the on-chip MAC status interrupts Blackfin: asm/page.h: pull in asm-generic headers Blackfin: mark gpio lib functions static Blackfin: bf537-stamp: add example ADAU1361 resources Blackfin: GPIO: implement to_irq handler Blackfin: bf537-stamp: add example ADP122/ADP150 power regulator resources Blackfin: bf537-stamp: add example AD2S90 resources Blackfin: bf537-stamp: add example AD5398 power regulator resources ...
Diffstat (limited to 'arch/blackfin/kernel/ftrace-entry.S')
-rw-r--r--arch/blackfin/kernel/ftrace-entry.S23
1 files changed, 19 insertions, 4 deletions
diff --git a/arch/blackfin/kernel/ftrace-entry.S b/arch/blackfin/kernel/ftrace-entry.S
index 76dd4fbcd17a..d66446b572c0 100644
--- a/arch/blackfin/kernel/ftrace-entry.S
+++ b/arch/blackfin/kernel/ftrace-entry.S
@@ -1,7 +1,7 @@
/*
* mcount and friends -- ftrace stuff
*
- * Copyright (C) 2009 Analog Devices Inc.
+ * Copyright (C) 2009-2010 Analog Devices Inc.
* Licensed under the GPL-2 or later.
*/
@@ -21,6 +21,15 @@
* function will be waiting there. mmmm pie.
*/
ENTRY(__mcount)
+#ifdef CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST
+ /* optional micro optimization: return if stopped */
+ p1.l = _function_trace_stop;
+ p1.h = _function_trace_stop;
+ r3 = [p1];
+ cc = r3 == 0;
+ if ! cc jump _ftrace_stub (bp);
+#endif
+
/* save third function arg early so we can do testing below */
[--sp] = r2;
@@ -106,9 +115,12 @@ ENTRY(_ftrace_graph_caller)
[--sp] = r1;
[--sp] = rets;
- /* prepare_ftrace_return(unsigned long *parent, unsigned long self_addr) */
- r0 = sp;
- r1 = rets;
+ /* prepare_ftrace_return(parent, self_addr, frame_pointer) */
+ r0 = sp; /* unsigned long *parent */
+ r1 = rets; /* unsigned long self_addr */
+#ifdef CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST
+ r2 = fp; /* unsigned long frame_pointer */
+#endif
r0 += 16; /* skip the 4 local regs on stack */
r1 += -MCOUNT_INSN_SIZE;
call _prepare_ftrace_return;
@@ -127,6 +139,9 @@ ENTRY(_return_to_handler)
[--sp] = r1;
/* get original return address */
+#ifdef CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST
+ r0 = fp; /* Blackfin is sane, so omit this */
+#endif
call _ftrace_return_to_handler;
rets = r0;
OpenPOWER on IntegriCloud