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>
This commit is contained in:
committed by
Thomas Gleixner
parent
41bc8144d0
commit
ccbfac2923
@@ -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)
|
|||||||
{
|
{
|
||||||
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 @@
|
|||||||
#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);
|
|||||||
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 @@
|
|||||||
#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 = {
|
|||||||
};
|
};
|
||||||
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.
|
||||||
|
6
include/asm-powerpc/ftrace.h
Normal file
6
include/asm-powerpc/ftrace.h
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
#ifndef _ASM_POWERPC_FTRACE
|
||||||
|
#define _ASM_POWERPC_FTRACE
|
||||||
|
|
||||||
|
extern void _mcount(void);
|
||||||
|
|
||||||
|
#endif
|
Reference in New Issue
Block a user