[PATCH] Add 7450 support to oprofile tools
Andy Fleming
afleming at freescale.com
Sat Sep 16 04:35:30 EST 2006
On Sep 13, 2006, at 19:04, Mark A. Greer wrote:
> Well, my first patch to this mailing list didn't go so well. There
> were
> some errors in the events file so there is a replacement patch below.
>
> I know 0.9.2 is coming out so I will respin it when it arrives.
> I'm resending in case someone is uses it before 0.9.2.
>
> Sorry for the spam,
Excellent. This is becoming more and more desperately needed.
>
> Mark
> --
>
> Hi,
>
> I don't normally monitor or contribute to oprofile so I'm not sure
> what your patch conventions are. If this email or patch is not in the
> correct format please let me know what that format is and I'll
> resubmit.
>
> Notes:
> - This patch applies to oprofile-0.9.1.tar.gz
> - Vitaly Wool contributed significantly to this patch.
>
> Thanks,
>
> Mark
> --
>
> This patch adds PowerPC MPC7450 support to the oprofile tools.
> In reality, it also adds support for the MPC7445, MPC7447, MPC7447A,
> MPC7448, MPC7455, and MPC7457 processors but has only been tested
> on a MPC7447A. The 7450 name was chosen because it matches the name
> used in the Linux kernel, <file:arch/powerpc/oprofile/
> op_model_7450.c>.
>
> Note that not all of the performance counters available on those
> processors were added to the events file but its a start, at least.
>
> Signed-off-by: Mark A. Greer <mgreer at mvista.com>
> --
>
> events/Makefile.in | 3 ++-
> events/ppc/7450/events | 22 ++++++++++++++++++++++
> events/ppc/7450/unit_masks | 4 ++++
> libop/op_cpu_type.c | 1 +
> libop/op_cpu_type.h | 1 +
> libop/op_events.c | 6 +++++-
> utils/ophelp.c | 5 +++++
> 7 files changed, 40 insertions(+), 2 deletions(-)
> --
>
> diff -Nurp oprofile-0.9.1/events/Makefile.in oprofile-0.9.1.current/
> events/Makefile.in
> --- oprofile-0.9.1/events/Makefile.in 2005-07-18 12:40:00.000000000
> -0700
> +++ oprofile-0.9.1.current/events/Makefile.in 2006-09-11
> 14:40:41.000000000 -0700
> @@ -210,7 +210,8 @@ event_files = \
> mips/r12000/events mips/r12000/unit_masks \
> mips/vr5432/events mips/vr5432/unit_masks \
> mips/vr5500/events mips/vr5500/unit_masks \
> - ppc/e500/events ppc/e500/unit_masks
> + ppc/e500/events ppc/e500/unit_masks \
> + ppc/7450/events ppc/7450/unit_masks
>
> EXTRA_DIST = $(event_files)
> all: all-am
> diff -Nurp oprofile-0.9.1/events/ppc/7450/events
> oprofile-0.9.1.current/events/ppc/7450/events
> --- oprofile-0.9.1/events/ppc/7450/events 1969-12-31
> 17:00:00.000000000 -0700
> +++ oprofile-0.9.1.current/events/ppc/7450/events 2006-09-13
> 16:44:07.000000000 -0700
> @@ -0,0 +1,22 @@
> +# 745x Events
> +#
> +event:0x1 counters:0,1,2,3 um:zero minimum:3000 name:CYCLES :
> Processor cycles
> +event:0x2 counters:0,1,2,3 um:zero minimum:3000
> name:COMPLETED_INSNS : Completed Instructions
> +event:0x3 counters:0,1,2,3 um:zero minimum:3000
> name:TBL_BIT_TRANSTNS : TBL Bit Transitions
> +event:0x4 counters:0,1,2,3 um:zero minimum:3000
> name:DISPATCHED_INSNS : Dispatched Instructions
> +event:0x5 counters:0,1,2,3 um:zero minimum:3000
> name:PROC_PERFMON_EXC: Process Performance Monitor Exception
> +event:0x8 counters:0,1,3 um:zero minimum:3000 name:VPU_INSNS : VPU
> Instructions Completed
> +event:0x9 counters:0,1,3 um:zero minimum:3000 name:VFPU_INSNS :
> VFPU Instructions Completed
> +event:0xa counters:0,1,3 um:zero minimum:3000 name:VIU1_INSNS :
> VIU1 Instructions Completed
> +event:0xb counters:0,1,3 um:zero minimum:3000 name:VIU2_INSNS :
> VIU2 Instructions Completed
> +event:0xe counters:0,1 um:zero minimum:3000 name:VPU_CYCLES :
> Cycles a VPU Instruction
> +event:0xf counters:0,1 um:zero minimum:3000 name:VFPU_CYCLES :
> Cycles a VFPU Instruction
> +event:0x10 counters:0,1 um:zero minimum:3000 name:VIU1_CYCLES :
> Cycles a VIU1 Instruction
> +event:0x11 counters:0,1 um:zero minimum:3000 name:VIU2_CYCLES :
> Cycles a VIU2 Instruction
> +event:0x14 counters:0,1 um:zero minimum:3000 name:STORE_INSNS :
> Store Instructions
> +event:0x15 counters:0,1 um:zero minimum:3000
> name:L1_ICACHE_MISSES : L1 Instruction Cache Misses
> +event:0x16 counters:0,1 um:zero minimum:3000 name:L1_DATA_SNOOPS:
> L1 Data Snoops
> +event:0x17 counters:0,1 um:zero minimum:3000
> name:UNRESOLVED_BRANCHES: Unresolved Branches
> +event:0x27 counters:0,1 um:zero minimum:3000
> name:ITLB_TABLE_CYCLES: ITLM Hardware Table Search Cycles
> +event:0x29 counters:0,1 um:zeor minimum:3000 name:
> L1_ICACHE_ACCESSES: L1 Instruction Cache Accesses
> +event:0x2a counters:0,1 um:zeor minimum:3000 name:
> INSN_BP_MATCHES: Instruction Breakpoint Matches
> diff -Nurp oprofile-0.9.1/events/ppc/7450/unit_masks
> oprofile-0.9.1.current/events/ppc/7450/unit_masks
> --- oprofile-0.9.1/events/ppc/7450/unit_masks 1969-12-31
> 17:00:00.000000000 -0700
> +++ oprofile-0.9.1.current/events/ppc/7450/unit_masks 2006-09-11
> 14:40:41.000000000 -0700
> @@ -0,0 +1,4 @@
> +# 745x possible unit masks
> +#
> +name:zero type:mandatory default:0x0
> + 0x0 No unit mask
> diff -Nurp oprofile-0.9.1/libop/op_cpu_type.c
> oprofile-0.9.1.current/libop/op_cpu_type.c
> --- oprofile-0.9.1/libop/op_cpu_type.c 2005-07-11
> 13:46:23.000000000 -0700
> +++ oprofile-0.9.1.current/libop/op_cpu_type.c 2006-09-11
> 14:40:41.000000000 -0700
> @@ -55,6 +55,7 @@ static struct cpu_descr const cpu_descrs
> { "NEC VR5432", "mips/vr5432", CPU_MIPS_VR5432, 2 },
> { "NEC VR5500", "mips/vr5500", CPU_MIPS_VR5500, 2 },
> { "e500", "ppc/e500", CPU_PPC_E500, 4 },
> + { "ppc 7450", "ppc/7450", CPU_PPC_7450, 6 },
> };
>
> static size_t const nr_cpu_descrs = sizeof(cpu_descrs) / sizeof
> (struct cpu_descr);
> diff -Nurp oprofile-0.9.1/libop/op_cpu_type.h
> oprofile-0.9.1.current/libop/op_cpu_type.h
> --- oprofile-0.9.1/libop/op_cpu_type.h 2005-07-11
> 13:46:23.000000000 -0700
> +++ oprofile-0.9.1.current/libop/op_cpu_type.h 2006-09-11
> 14:40:41.000000000 -0700
> @@ -51,6 +51,7 @@ typedef enum {
> CPU_MIPS_VR5432, /**< NEC VR5432 */
> CPU_MIPS_VR5500, /**< MIPS VR5500, VR5532 and VR7701 */
> CPU_PPC_E500, /**< e500 */
> + CPU_PPC_7450, /**< PPC 7450 */
> MAX_CPU_TYPE
> } op_cpu;
>
> diff -Nurp oprofile-0.9.1/libop/op_events.c oprofile-0.9.1.current/
> libop/op_events.c
> --- oprofile-0.9.1/libop/op_events.c 2005-07-11 13:46:23.000000000
> -0700
> +++ oprofile-0.9.1.current/libop/op_events.c 2006-09-11
> 14:40:41.000000000 -0700
> @@ -816,7 +816,11 @@ void op_default_event(op_cpu cpu_type, s
> case CPU_PPC_E500:
> descr->name = "CPU_CLK";
> break;
> -
> +
> + case CPU_PPC_7450:
> + descr->name = "CYCLES";
> + break;
> +
> // don't use default, if someone add a cpu he wants a compiler
> // warning if he forgets to handle it here.
> case CPU_TIMER_INT:
> diff -Nurp oprofile-0.9.1/utils/ophelp.c oprofile-0.9.1.current/
> utils/ophelp.c
> --- oprofile-0.9.1/utils/ophelp.c 2005-07-11 13:46:23.000000000 -0700
> +++ oprofile-0.9.1.current/utils/ophelp.c 2006-09-11
> 14:40:41.000000000 -0700
> @@ -450,6 +450,11 @@ int main(int argc, char const * argv[])
> "Chapter 7: Performance Monitor\n"
> "Downloadable from http://www.freescale.com\n");
> break;
> + case CPU_PPC_7450:
> + printf("See MPC7450 RISC Microprocessor Family "
> + "Reference Manual\n"
> + "Chapter 11: Performance Monitor\n"
> + "Downloadable from http://www.freescale.com\n");
>
> case CPU_RTC:
> break;
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev at ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-dev
More information about the Linuxppc-dev
mailing list