aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc
diff options
context:
space:
mode:
authorSteven Rostedt <rostedt@goodmis.org>2008-05-22 14:31:07 -0400
committerThomas Gleixner <tglx@linutronix.de>2008-05-26 16:51:57 -0400
commitccbfac2923c9febaeaf07a50054027a92b502718 (patch)
tree0ed9e86b823ef0b55023a5428b3799ecfe79ea78 /arch/powerpc
parent41bc8144d02028133bcd1d545023c6f49e8b2411 (diff)
ftrace: powerpc clean ups
This patch cleans up the ftrace code in PowerPC based on the comments from Michael Ellerman. Signed-off-by: Steven Rostedt <srostedt@redhat.com> Cc: Michael Ellerman <michael@ellerman.id.au> Cc: proski@gnu.org Cc: a.p.zijlstra@chello.nl Cc: Pekka Paalanen <pq@iki.fi> Cc: Steven Rostedt <srostedt@redhat.com> Cc: linuxppc-dev@ozlabs.org Cc: Soeren Sandmann Pedersen <sandmann@redhat.com> Cc: paulus@samba.org Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/powerpc')
-rw-r--r--arch/powerpc/kernel/entry_32.S11
-rw-r--r--arch/powerpc/kernel/ftrace.c8
-rw-r--r--arch/powerpc/kernel/ppc_ksyms.c5
-rw-r--r--arch/powerpc/kernel/setup_32.c5
-rw-r--r--arch/powerpc/kernel/setup_64.c5
5 files changed, 14 insertions, 20 deletions
diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S
index 0e6221889ca9..3b1dd29d9f91 100644
--- a/arch/powerpc/kernel/entry_32.S
+++ b/arch/powerpc/kernel/entry_32.S
@@ -1129,18 +1129,11 @@ _GLOBAL(_mcount)
1129 stw r5, 8(r1) 1129 stw r5, 8(r1)
1130 1130
1131 LOAD_REG_ADDR(r5, ftrace_trace_function) 1131 LOAD_REG_ADDR(r5, ftrace_trace_function)
1132#if 0
1133 mtctr r3
1134 mr r1, r5
1135 bctrl
1136#endif
1137 lwz r5,0(r5) 1132 lwz r5,0(r5)
1138#if 1 1133
1139 mtctr r5 1134 mtctr r5
1140 bctrl 1135 bctrl
1141#else 1136
1142 bl ftrace_stub
1143#endif
1144 nop 1137 nop
1145 1138
1146 lwz r6, 8(r1) 1139 lwz r6, 8(r1)
diff --git a/arch/powerpc/kernel/ftrace.c b/arch/powerpc/kernel/ftrace.c
index 5a4993fefa45..69ed41223468 100644
--- a/arch/powerpc/kernel/ftrace.c
+++ b/arch/powerpc/kernel/ftrace.c
@@ -51,10 +51,16 @@ notrace unsigned char *ftrace_call_replace(unsigned long ip, unsigned long addr)
51{ 51{
52 static unsigned int op; 52 static unsigned int op;
53 53
54 /*
55 * It would be nice to just use create_function_call, but that will
56 * update the code itself. Here we need to just return the
57 * instruction that is going to be modified, without modifying the
58 * code.
59 */
54 addr = GET_ADDR(addr); 60 addr = GET_ADDR(addr);
55 61
56 /* Set to "bl addr" */ 62 /* Set to "bl addr" */
57 op = 0x48000001 | (ftrace_calc_offset(ip, addr) & 0x03fffffe); 63 op = 0x48000001 | (ftrace_calc_offset(ip, addr) & 0x03fffffc);
58 64
59 /* 65 /*
60 * No locking needed, this must be called via kstop_machine 66 * No locking needed, this must be called via kstop_machine
diff --git a/arch/powerpc/kernel/ppc_ksyms.c b/arch/powerpc/kernel/ppc_ksyms.c
index cf6b5a7d8b3f..4300db52662a 100644
--- a/arch/powerpc/kernel/ppc_ksyms.c
+++ b/arch/powerpc/kernel/ppc_ksyms.c
@@ -43,6 +43,7 @@
43#include <asm/div64.h> 43#include <asm/div64.h>
44#include <asm/signal.h> 44#include <asm/signal.h>
45#include <asm/dcr.h> 45#include <asm/dcr.h>
46#include <asm/ftrace.h>
46 47
47#ifdef CONFIG_PPC32 48#ifdef CONFIG_PPC32
48extern void transfer_to_handler(void); 49extern void transfer_to_handler(void);
@@ -68,6 +69,10 @@ EXPORT_SYMBOL(single_step_exception);
68EXPORT_SYMBOL(sys_sigreturn); 69EXPORT_SYMBOL(sys_sigreturn);
69#endif 70#endif
70 71
72#ifdef CONFIG_FTRACE
73EXPORT_SYMBOL(_mcount);
74#endif
75
71EXPORT_SYMBOL(strcpy); 76EXPORT_SYMBOL(strcpy);
72EXPORT_SYMBOL(strncpy); 77EXPORT_SYMBOL(strncpy);
73EXPORT_SYMBOL(strcat); 78EXPORT_SYMBOL(strcat);
diff --git a/arch/powerpc/kernel/setup_32.c b/arch/powerpc/kernel/setup_32.c
index 22f8e2bacd32..19e8fcb9cea8 100644
--- a/arch/powerpc/kernel/setup_32.c
+++ b/arch/powerpc/kernel/setup_32.c
@@ -47,11 +47,6 @@
47#include <asm/kgdb.h> 47#include <asm/kgdb.h>
48#endif 48#endif
49 49
50#ifdef CONFIG_FTRACE
51extern void _mcount(void);
52EXPORT_SYMBOL(_mcount);
53#endif
54
55extern void bootx_init(unsigned long r4, unsigned long phys); 50extern void bootx_init(unsigned long r4, unsigned long phys);
56 51
57int boot_cpuid; 52int boot_cpuid;
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c
index 277bf18cbbcc..098fd96a394a 100644
--- a/arch/powerpc/kernel/setup_64.c
+++ b/arch/powerpc/kernel/setup_64.c
@@ -85,11 +85,6 @@ struct ppc64_caches ppc64_caches = {
85}; 85};
86EXPORT_SYMBOL_GPL(ppc64_caches); 86EXPORT_SYMBOL_GPL(ppc64_caches);
87 87
88#ifdef CONFIG_FTRACE
89extern void _mcount(void);
90EXPORT_SYMBOL(_mcount);
91#endif
92
93/* 88/*
94 * These are used in binfmt_elf.c to put aux entries on the stack 89 * These are used in binfmt_elf.c to put aux entries on the stack
95 * for each elf executable being started. 90 * for each elf executable being started.