From: Hirokazu Takata This patch is for profiling support. profile_tick() is used instead of m32r_do_profile(). * arch/m32r/kernel/smp.c (smp_local_timer_interrupt): Change profile API, use profile_tick() instead of m32r_do_profile(). * arch/m32r/kernel/time.c: ditto. * include/asm-m32r/hw_irq.h (m32r_do_profile): Removed. * include/asm-m32r/ptrace.h (profile_pc): Add profile_pc() macro. Signed-off-by: Hirokazu Takata Signed-off-by: Andrew Morton --- 25-akpm/arch/m32r/kernel/smp.c | 10 ++++------ 25-akpm/arch/m32r/kernel/time.c | 5 ++--- 25-akpm/include/asm-m32r/hw_irq.h | 33 +-------------------------------- 25-akpm/include/asm-m32r/ptrace.h | 14 ++++++++------ 4 files changed, 15 insertions(+), 47 deletions(-) diff -puN arch/m32r/kernel/smp.c~m32r-update-for-profiling arch/m32r/kernel/smp.c --- 25/arch/m32r/kernel/smp.c~m32r-update-for-profiling 2004-09-11 16:36:53.122628152 -0700 +++ 25-akpm/arch/m32r/kernel/smp.c 2004-09-11 16:36:53.131626784 -0700 @@ -1,8 +1,7 @@ /* * linux/arch/m32r/kernel/smp.c - * orig : i386 2.4.10 * - * MITSUBISHI M32R SMP support routines. + * M32R SMP support routines. * * Copyright (c) 2001, 2002 Hitoshi Yamamoto * @@ -14,8 +13,6 @@ * later. */ -/* $Id$ */ - #undef DEBUG_SMP #include @@ -23,6 +20,7 @@ #include #include #include +#include #include #include @@ -109,7 +107,7 @@ static void send_IPI_mask(cpumask_t, int unsigned long send_IPI_mask_phys(cpumask_t, int, int); /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ -/* Rescheduling request Routins */ +/* Rescheduling request Routines */ /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ /*==========================================================================* @@ -750,7 +748,7 @@ void smp_local_timer_interrupt(struct pt * useful with a profiling multiplier != 1 */ - m32r_do_profile(regs); + profile_tick(CPU_PROFILING, regs); if (--per_cpu(prof_counter, cpu_id) <= 0) { /* diff -puN arch/m32r/kernel/time.c~m32r-update-for-profiling arch/m32r/kernel/time.c --- 25/arch/m32r/kernel/time.c~m32r-update-for-profiling 2004-09-11 16:36:53.123628000 -0700 +++ 25-akpm/arch/m32r/kernel/time.c 2004-09-11 16:36:53.131626784 -0700 @@ -15,8 +15,6 @@ * Copyright (C) 2000 Philipp Rumpf */ -/* $Id$ */ - #undef DEBUG_TIMER #include @@ -29,6 +27,7 @@ #include #include #include +#include #include #include @@ -243,7 +242,7 @@ irqreturn_t timer_interrupt(int irq, voi write_sequnlock(&xtime_lock); #ifndef CONFIG_SMP - m32r_do_profile(regs); + profile_tick(CPU_PROFILING, regs); #endif return IRQ_HANDLED; diff -puN include/asm-m32r/hw_irq.h~m32r-update-for-profiling include/asm-m32r/hw_irq.h --- 25/include/asm-m32r/hw_irq.h~m32r-update-for-profiling 2004-09-11 16:36:53.125627696 -0700 +++ 25-akpm/include/asm-m32r/hw_irq.h 2004-09-11 16:36:53.132626632 -0700 @@ -1,40 +1,9 @@ #ifndef _ASM_M32R_HW_IRQ_H #define _ASM_M32R_HW_IRQ_H -/* $Id$ */ - -#include -#include -#include - -static __inline__ void hw_resend_irq(struct hw_interrupt_type *h, - unsigned int i) +static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) { /* Nothing to do */ } -static __inline__ void m32r_do_profile (struct pt_regs *regs) -{ - unsigned long pc = regs->bpc; - - profile_hook(regs); - - if (user_mode(regs)) - return; - - if (!prof_buffer) - return; - - pc -= (unsigned long) &_stext; - pc >>= prof_shift; - /* - * Don't ignore out-of-bounds PC values silently, - * put them into the last histogram slot, so if - * present, they will show up as a sharp peak. - */ - if (pc > prof_len - 1) - pc = prof_len - 1; - atomic_inc((atomic_t *)&prof_buffer[pc]); -} - #endif /* _ASM_M32R_HW_IRQ_H */ diff -puN include/asm-m32r/ptrace.h~m32r-update-for-profiling include/asm-m32r/ptrace.h --- 25/include/asm-m32r/ptrace.h~m32r-update-for-profiling 2004-09-11 16:36:53.127627392 -0700 +++ 25-akpm/include/asm-m32r/ptrace.h 2004-09-11 16:36:53.132626632 -0700 @@ -1,14 +1,15 @@ -#ifndef _M32R_PTRACE_H -#define _M32R_PTRACE_H - -/* $Id$ */ +#ifndef _ASM_M32R_PTRACE_H +#define _ASM_M32R_PTRACE_H /* + * linux/include/asm-m32r/ptrace.h + * * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * - * Copyright (C) 2001, 2002, 2004 Hirokazu Takata + * M32R version: + * Copyright (C) 2001-2002, 2004 Hirokazu Takata */ #include @@ -153,6 +154,7 @@ struct pt_regs { #endif #define instruction_pointer(regs) ((regs)->bpc) +#define profile_pc(regs) instruction_pointer(regs) extern void show_regs(struct pt_regs *); @@ -160,4 +162,4 @@ extern void withdraw_debug_trap(struct p #endif /* __KERNEL */ -#endif /* _M32R_PTRACE_H */ +#endif /* _ASM_M32R_PTRACE_H */ _