提交 ccbfac29 编写于 作者: S Steven Rostedt 提交者: Thomas Gleixner

ftrace: powerpc clean ups

This patch cleans up the ftrace code in PowerPC based on the comments from
Michael Ellerman.
Signed-off-by: NSteven 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: NThomas Gleixner <tglx@linutronix.de>
上级 41bc8144
...@@ -1129,18 +1129,11 @@ _GLOBAL(_mcount) ...@@ -1129,18 +1129,11 @@ _GLOBAL(_mcount)
stw r5, 8(r1) stw r5, 8(r1)
LOAD_REG_ADDR(r5, ftrace_trace_function) LOAD_REG_ADDR(r5, ftrace_trace_function)
#if 0
mtctr r3
mr r1, r5
bctrl
#endif
lwz r5,0(r5) lwz r5,0(r5)
#if 1
mtctr r5 mtctr r5
bctrl bctrl
#else
bl ftrace_stub
#endif
nop nop
lwz r6, 8(r1) lwz r6, 8(r1)
......
...@@ -51,10 +51,16 @@ notrace unsigned char *ftrace_call_replace(unsigned long ip, unsigned long addr) ...@@ -51,10 +51,16 @@ notrace unsigned char *ftrace_call_replace(unsigned long ip, unsigned long addr)
{ {
static unsigned int op; static unsigned int op;
/*
* It would be nice to just use create_function_call, but that will
* update the code itself. Here we need to just return the
* instruction that is going to be modified, without modifying the
* code.
*/
addr = GET_ADDR(addr); addr = GET_ADDR(addr);
/* Set to "bl addr" */ /* Set to "bl addr" */
op = 0x48000001 | (ftrace_calc_offset(ip, addr) & 0x03fffffe); op = 0x48000001 | (ftrace_calc_offset(ip, addr) & 0x03fffffc);
/* /*
* No locking needed, this must be called via kstop_machine * No locking needed, this must be called via kstop_machine
......
...@@ -43,6 +43,7 @@ ...@@ -43,6 +43,7 @@
#include <asm/div64.h> #include <asm/div64.h>
#include <asm/signal.h> #include <asm/signal.h>
#include <asm/dcr.h> #include <asm/dcr.h>
#include <asm/ftrace.h>
#ifdef CONFIG_PPC32 #ifdef CONFIG_PPC32
extern void transfer_to_handler(void); extern void transfer_to_handler(void);
...@@ -68,6 +69,10 @@ EXPORT_SYMBOL(single_step_exception); ...@@ -68,6 +69,10 @@ EXPORT_SYMBOL(single_step_exception);
EXPORT_SYMBOL(sys_sigreturn); EXPORT_SYMBOL(sys_sigreturn);
#endif #endif
#ifdef CONFIG_FTRACE
EXPORT_SYMBOL(_mcount);
#endif
EXPORT_SYMBOL(strcpy); EXPORT_SYMBOL(strcpy);
EXPORT_SYMBOL(strncpy); EXPORT_SYMBOL(strncpy);
EXPORT_SYMBOL(strcat); EXPORT_SYMBOL(strcat);
......
...@@ -47,11 +47,6 @@ ...@@ -47,11 +47,6 @@
#include <asm/kgdb.h> #include <asm/kgdb.h>
#endif #endif
#ifdef CONFIG_FTRACE
extern void _mcount(void);
EXPORT_SYMBOL(_mcount);
#endif
extern void bootx_init(unsigned long r4, unsigned long phys); extern void bootx_init(unsigned long r4, unsigned long phys);
int boot_cpuid; int boot_cpuid;
......
...@@ -85,11 +85,6 @@ struct ppc64_caches ppc64_caches = { ...@@ -85,11 +85,6 @@ struct ppc64_caches ppc64_caches = {
}; };
EXPORT_SYMBOL_GPL(ppc64_caches); EXPORT_SYMBOL_GPL(ppc64_caches);
#ifdef CONFIG_FTRACE
extern void _mcount(void);
EXPORT_SYMBOL(_mcount);
#endif
/* /*
* These are used in binfmt_elf.c to put aux entries on the stack * These are used in binfmt_elf.c to put aux entries on the stack
* for each elf executable being started. * for each elf executable being started.
......
#ifndef _ASM_POWERPC_FTRACE
#define _ASM_POWERPC_FTRACE
extern void _mcount(void);
#endif
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册