From 555d97ac87aef08bb55dff6f05e68fe2987d6f6d Mon Sep 17 00:00:00 2001 From: Andy Fleming Date: Thu, 15 Dec 2005 20:02:04 -0600 Subject: [PATCH] powerpc: G4+ oprofile support This patch adds oprofile support for the 7450 and all its multitudinous derivatives. * Added 7450 (and derivatives) support for oprofile * Changed e500 cputable to have oprofile model and cpu_type fields * Added support for classic 32-bit performance monitor interrupt * Cleaned up common powerpc oprofile code to be as common as possible * Cleaned up oprofile_impl.h to reflect 32 bit classic code * Added 32-bit MMCRx bitfield definitions and SPR numbers Signed-off-by: Andy Fleming Signed-off-by: Paul Mackerras --- arch/powerpc/kernel/cputable.c | 74 +++++++++++++++++++++++++++++++++++------- 1 file changed, 63 insertions(+), 11 deletions(-) (limited to 'arch/powerpc/kernel/cputable.c') diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c index 1d85cedbbb7..f7f2a830fca 100644 --- a/arch/powerpc/kernel/cputable.c +++ b/arch/powerpc/kernel/cputable.c @@ -545,7 +545,11 @@ struct cpu_spec cpu_specs[] = { .icache_bsize = 32, .dcache_bsize = 32, .num_pmcs = 6, - .cpu_setup = __setup_cpu_745x + .cpu_setup = __setup_cpu_745x, +#ifdef CONFIG_OPROFILE + .oprofile_cpu_type = "ppc/7450", + .oprofile_model = &op_model_7450, +#endif }, { /* 7450 2.1 */ .pvr_mask = 0xffffffff, @@ -556,7 +560,11 @@ struct cpu_spec cpu_specs[] = { .icache_bsize = 32, .dcache_bsize = 32, .num_pmcs = 6, - .cpu_setup = __setup_cpu_745x + .cpu_setup = __setup_cpu_745x, +#ifdef CONFIG_OPROFILE + .oprofile_cpu_type = "ppc/7450", + .oprofile_model = &op_model_7450, +#endif }, { /* 7450 2.3 and newer */ .pvr_mask = 0xffff0000, @@ -567,7 +575,11 @@ struct cpu_spec cpu_specs[] = { .icache_bsize = 32, .dcache_bsize = 32, .num_pmcs = 6, - .cpu_setup = __setup_cpu_745x + .cpu_setup = __setup_cpu_745x, +#ifdef CONFIG_OPROFILE + .oprofile_cpu_type = "ppc/7450", + .oprofile_model = &op_model_7450, +#endif }, { /* 7455 rev 1.x */ .pvr_mask = 0xffffff00, @@ -578,7 +590,11 @@ struct cpu_spec cpu_specs[] = { .icache_bsize = 32, .dcache_bsize = 32, .num_pmcs = 6, - .cpu_setup = __setup_cpu_745x + .cpu_setup = __setup_cpu_745x, +#ifdef CONFIG_OPROFILE + .oprofile_cpu_type = "ppc/7450", + .oprofile_model = &op_model_7450, +#endif }, { /* 7455 rev 2.0 */ .pvr_mask = 0xffffffff, @@ -589,7 +605,11 @@ struct cpu_spec cpu_specs[] = { .icache_bsize = 32, .dcache_bsize = 32, .num_pmcs = 6, - .cpu_setup = __setup_cpu_745x + .cpu_setup = __setup_cpu_745x, +#ifdef CONFIG_OPROFILE + .oprofile_cpu_type = "ppc/7450", + .oprofile_model = &op_model_7450, +#endif }, { /* 7455 others */ .pvr_mask = 0xffff0000, @@ -600,7 +620,11 @@ struct cpu_spec cpu_specs[] = { .icache_bsize = 32, .dcache_bsize = 32, .num_pmcs = 6, - .cpu_setup = __setup_cpu_745x + .cpu_setup = __setup_cpu_745x, +#ifdef CONFIG_OPROFILE + .oprofile_cpu_type = "ppc/7450", + .oprofile_model = &op_model_7450, +#endif }, { /* 7447/7457 Rev 1.0 */ .pvr_mask = 0xffffffff, @@ -611,7 +635,11 @@ struct cpu_spec cpu_specs[] = { .icache_bsize = 32, .dcache_bsize = 32, .num_pmcs = 6, - .cpu_setup = __setup_cpu_745x + .cpu_setup = __setup_cpu_745x, +#ifdef CONFIG_OPROFILE + .oprofile_cpu_type = "ppc/7450", + .oprofile_model = &op_model_7450, +#endif }, { /* 7447/7457 Rev 1.1 */ .pvr_mask = 0xffffffff, @@ -622,7 +650,11 @@ struct cpu_spec cpu_specs[] = { .icache_bsize = 32, .dcache_bsize = 32, .num_pmcs = 6, - .cpu_setup = __setup_cpu_745x + .cpu_setup = __setup_cpu_745x, +#ifdef CONFIG_OPROFILE + .oprofile_cpu_type = "ppc/7450", + .oprofile_model = &op_model_7450, +#endif }, { /* 7447/7457 Rev 1.2 and later */ .pvr_mask = 0xffff0000, @@ -633,7 +665,11 @@ struct cpu_spec cpu_specs[] = { .icache_bsize = 32, .dcache_bsize = 32, .num_pmcs = 6, - .cpu_setup = __setup_cpu_745x + .cpu_setup = __setup_cpu_745x, +#ifdef CONFIG_OPROFILE + .oprofile_cpu_type = "ppc/7450", + .oprofile_model = &op_model_7450, +#endif }, { /* 7447A */ .pvr_mask = 0xffff0000, @@ -644,7 +680,11 @@ struct cpu_spec cpu_specs[] = { .icache_bsize = 32, .dcache_bsize = 32, .num_pmcs = 6, - .cpu_setup = __setup_cpu_745x + .cpu_setup = __setup_cpu_745x, +#ifdef CONFIG_OPROFILE + .oprofile_cpu_type = "ppc/7450", + .oprofile_model = &op_model_7450, +#endif }, { /* 7448 */ .pvr_mask = 0xffff0000, @@ -655,7 +695,11 @@ struct cpu_spec cpu_specs[] = { .icache_bsize = 32, .dcache_bsize = 32, .num_pmcs = 6, - .cpu_setup = __setup_cpu_745x + .cpu_setup = __setup_cpu_745x, +#ifdef CONFIG_OPROFILE + .oprofile_cpu_type = "ppc/7450", + .oprofile_model = &op_model_7450, +#endif }, { /* 82xx (8240, 8245, 8260 are all 603e cores) */ .pvr_mask = 0x7fff0000, @@ -979,6 +1023,10 @@ struct cpu_spec cpu_specs[] = { .icache_bsize = 32, .dcache_bsize = 32, .num_pmcs = 4, +#ifdef CONFIG_OPROFILE + .oprofile_cpu_type = "ppc/e500", + .oprofile_model = &op_model_fsl_booke, +#endif }, { /* e500v2 */ .pvr_mask = 0xffff0000, @@ -992,6 +1040,10 @@ struct cpu_spec cpu_specs[] = { .icache_bsize = 32, .dcache_bsize = 32, .num_pmcs = 4, +#ifdef CONFIG_OPROFILE + .oprofile_cpu_type = "ppc/e500", + .oprofile_model = &op_model_fsl_booke, +#endif }, #endif #if !CLASSIC_PPC -- cgit v1.2.3