diff options
author | Anton Blanchard <anton@samba.org> | 2005-09-06 06:53:57 +0200 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2005-09-06 08:09:21 +0200 |
commit | 1a410d883023da70806a0190c4bde104545cb9c6 (patch) | |
tree | fbc47ca22df94ed69e78d9abe9153cbe22a74924 | |
parent | [PATCH] ppc64: Use num_pmcs in oprofile code (diff) | |
download | linux-1a410d883023da70806a0190c4bde104545cb9c6.tar.xz linux-1a410d883023da70806a0190c4bde104545cb9c6.zip |
[PATCH] ppc64: Add oprofile cpu_type to cpu feature struct
Add oprofile cpu_type to cpu feature struct.
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
-rw-r--r-- | arch/ppc64/kernel/cputable.c | 13 | ||||
-rw-r--r-- | arch/ppc64/oprofile/common.c | 6 | ||||
-rw-r--r-- | include/asm-ppc64/cputable.h | 3 |
3 files changed, 17 insertions, 5 deletions
diff --git a/arch/ppc64/kernel/cputable.c b/arch/ppc64/kernel/cputable.c index 25ab72323c58..c022ec4d1e91 100644 --- a/arch/ppc64/kernel/cputable.c +++ b/arch/ppc64/kernel/cputable.c @@ -60,6 +60,7 @@ struct cpu_spec cpu_specs[] = { .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_power3, + .oprofile_cpu_type = "ppc64/power3", }, { /* Power3+ */ .pvr_mask = 0xffff0000, @@ -72,6 +73,7 @@ struct cpu_spec cpu_specs[] = { .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_power3, + .oprofile_cpu_type = "ppc64/power3", }, { /* Northstar */ .pvr_mask = 0xffff0000, @@ -85,6 +87,7 @@ struct cpu_spec cpu_specs[] = { .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_power3, + .oprofile_cpu_type = "ppc64/rs64", }, { /* Pulsar */ .pvr_mask = 0xffff0000, @@ -98,6 +101,7 @@ struct cpu_spec cpu_specs[] = { .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_power3, + .oprofile_cpu_type = "ppc64/rs64", }, { /* I-star */ .pvr_mask = 0xffff0000, @@ -111,6 +115,7 @@ struct cpu_spec cpu_specs[] = { .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_power3, + .oprofile_cpu_type = "ppc64/rs64", }, { /* S-star */ .pvr_mask = 0xffff0000, @@ -124,6 +129,7 @@ struct cpu_spec cpu_specs[] = { .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_power3, + .oprofile_cpu_type = "ppc64/rs64", }, { /* Power4 */ .pvr_mask = 0xffff0000, @@ -137,6 +143,7 @@ struct cpu_spec cpu_specs[] = { .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_power4, + .oprofile_cpu_type = "ppc64/power4", }, { /* Power4+ */ .pvr_mask = 0xffff0000, @@ -150,6 +157,7 @@ struct cpu_spec cpu_specs[] = { .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_power4, + .oprofile_cpu_type = "ppc64/power4", }, { /* PPC970 */ .pvr_mask = 0xffff0000, @@ -165,6 +173,7 @@ struct cpu_spec cpu_specs[] = { .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_ppc970, + .oprofile_cpu_type = "ppc64/970", }, { /* PPC970FX */ .pvr_mask = 0xffff0000, @@ -180,6 +189,7 @@ struct cpu_spec cpu_specs[] = { .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_ppc970, + .oprofile_cpu_type = "ppc64/970", }, { /* PPC970MP */ .pvr_mask = 0xffff0000, @@ -194,6 +204,7 @@ struct cpu_spec cpu_specs[] = { .icache_bsize = 128, .dcache_bsize = 128, .cpu_setup = __setup_cpu_ppc970, + .oprofile_cpu_type = "ppc64/970", }, { /* Power5 */ .pvr_mask = 0xffff0000, @@ -209,6 +220,7 @@ struct cpu_spec cpu_specs[] = { .dcache_bsize = 128, .num_pmcs = 6, .cpu_setup = __setup_cpu_power4, + .oprofile_cpu_type = "ppc64/power5", }, { /* Power5 */ .pvr_mask = 0xffff0000, @@ -224,6 +236,7 @@ struct cpu_spec cpu_specs[] = { .dcache_bsize = 128, .num_pmcs = 6, .cpu_setup = __setup_cpu_power4, + .oprofile_cpu_type = "ppc64/power5", }, { /* BE DD1.x */ .pvr_mask = 0xffff0000, diff --git a/arch/ppc64/oprofile/common.c b/arch/ppc64/oprofile/common.c index a376eb2a1f0f..0260122a8d6c 100644 --- a/arch/ppc64/oprofile/common.c +++ b/arch/ppc64/oprofile/common.c @@ -132,7 +132,6 @@ int __init oprofile_arch_init(struct oprofile_operations *ops) case PV_630: case PV_630p: model = &op_model_rs64; - ops->cpu_type = "ppc64/power3"; break; case PV_NORTHSTAR: @@ -140,32 +139,29 @@ int __init oprofile_arch_init(struct oprofile_operations *ops) case PV_ICESTAR: case PV_SSTAR: model = &op_model_rs64; - ops->cpu_type = "ppc64/rs64"; break; case PV_POWER4: case PV_POWER4p: model = &op_model_power4; - ops->cpu_type = "ppc64/power4"; break; case PV_970: case PV_970FX: case PV_970MP: model = &op_model_power4; - ops->cpu_type = "ppc64/970"; break; case PV_POWER5: case PV_POWER5p: model = &op_model_power4; - ops->cpu_type = "ppc64/power5"; break; default: return -ENODEV; } + ops->cpu_type = cur_cpu_spec->oprofile_cpu_type; model->num_counters = cur_cpu_spec->num_pmcs; ops->create_files = op_ppc64_create_files; ops->setup = op_ppc64_setup; diff --git a/include/asm-ppc64/cputable.h b/include/asm-ppc64/cputable.h index 80b907727a79..445727ae2baa 100644 --- a/include/asm-ppc64/cputable.h +++ b/include/asm-ppc64/cputable.h @@ -59,6 +59,9 @@ struct cpu_spec { * BHT, SPD, etc... from head.S before branching to identify_machine */ cpu_setup_t cpu_setup; + + /* Used by oprofile userspace to select the right counters */ + char *oprofile_cpu_type; }; extern struct cpu_spec cpu_specs[]; |