diff options
| author | Anton Blanchard <anton@samba.org> | 2005-09-06 00:53:57 -0400 |
|---|---|---|
| committer | Paul Mackerras <paulus@samba.org> | 2005-09-06 02:09:21 -0400 |
| commit | 1a410d883023da70806a0190c4bde104545cb9c6 (patch) | |
| tree | fbc47ca22df94ed69e78d9abe9153cbe22a74924 | |
| parent | a6908cd00036080fbea14ff67335e5f2a1ab5489 (diff) | |
[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[] = { | |||
| 60 | .dcache_bsize = 128, | 60 | .dcache_bsize = 128, |
| 61 | .num_pmcs = 8, | 61 | .num_pmcs = 8, |
| 62 | .cpu_setup = __setup_cpu_power3, | 62 | .cpu_setup = __setup_cpu_power3, |
| 63 | .oprofile_cpu_type = "ppc64/power3", | ||
| 63 | }, | 64 | }, |
| 64 | { /* Power3+ */ | 65 | { /* Power3+ */ |
| 65 | .pvr_mask = 0xffff0000, | 66 | .pvr_mask = 0xffff0000, |
| @@ -72,6 +73,7 @@ struct cpu_spec cpu_specs[] = { | |||
| 72 | .dcache_bsize = 128, | 73 | .dcache_bsize = 128, |
| 73 | .num_pmcs = 8, | 74 | .num_pmcs = 8, |
| 74 | .cpu_setup = __setup_cpu_power3, | 75 | .cpu_setup = __setup_cpu_power3, |
| 76 | .oprofile_cpu_type = "ppc64/power3", | ||
| 75 | }, | 77 | }, |
| 76 | { /* Northstar */ | 78 | { /* Northstar */ |
| 77 | .pvr_mask = 0xffff0000, | 79 | .pvr_mask = 0xffff0000, |
| @@ -85,6 +87,7 @@ struct cpu_spec cpu_specs[] = { | |||
| 85 | .dcache_bsize = 128, | 87 | .dcache_bsize = 128, |
| 86 | .num_pmcs = 8, | 88 | .num_pmcs = 8, |
| 87 | .cpu_setup = __setup_cpu_power3, | 89 | .cpu_setup = __setup_cpu_power3, |
| 90 | .oprofile_cpu_type = "ppc64/rs64", | ||
| 88 | }, | 91 | }, |
| 89 | { /* Pulsar */ | 92 | { /* Pulsar */ |
| 90 | .pvr_mask = 0xffff0000, | 93 | .pvr_mask = 0xffff0000, |
| @@ -98,6 +101,7 @@ struct cpu_spec cpu_specs[] = { | |||
| 98 | .dcache_bsize = 128, | 101 | .dcache_bsize = 128, |
| 99 | .num_pmcs = 8, | 102 | .num_pmcs = 8, |
| 100 | .cpu_setup = __setup_cpu_power3, | 103 | .cpu_setup = __setup_cpu_power3, |
| 104 | .oprofile_cpu_type = "ppc64/rs64", | ||
| 101 | }, | 105 | }, |
| 102 | { /* I-star */ | 106 | { /* I-star */ |
| 103 | .pvr_mask = 0xffff0000, | 107 | .pvr_mask = 0xffff0000, |
| @@ -111,6 +115,7 @@ struct cpu_spec cpu_specs[] = { | |||
| 111 | .dcache_bsize = 128, | 115 | .dcache_bsize = 128, |
| 112 | .num_pmcs = 8, | 116 | .num_pmcs = 8, |
| 113 | .cpu_setup = __setup_cpu_power3, | 117 | .cpu_setup = __setup_cpu_power3, |
| 118 | .oprofile_cpu_type = "ppc64/rs64", | ||
| 114 | }, | 119 | }, |
| 115 | { /* S-star */ | 120 | { /* S-star */ |
| 116 | .pvr_mask = 0xffff0000, | 121 | .pvr_mask = 0xffff0000, |
| @@ -124,6 +129,7 @@ struct cpu_spec cpu_specs[] = { | |||
| 124 | .dcache_bsize = 128, | 129 | .dcache_bsize = 128, |
| 125 | .num_pmcs = 8, | 130 | .num_pmcs = 8, |
| 126 | .cpu_setup = __setup_cpu_power3, | 131 | .cpu_setup = __setup_cpu_power3, |
| 132 | .oprofile_cpu_type = "ppc64/rs64", | ||
| 127 | }, | 133 | }, |
| 128 | { /* Power4 */ | 134 | { /* Power4 */ |
| 129 | .pvr_mask = 0xffff0000, | 135 | .pvr_mask = 0xffff0000, |
| @@ -137,6 +143,7 @@ struct cpu_spec cpu_specs[] = { | |||
| 137 | .dcache_bsize = 128, | 143 | .dcache_bsize = 128, |
| 138 | .num_pmcs = 8, | 144 | .num_pmcs = 8, |
| 139 | .cpu_setup = __setup_cpu_power4, | 145 | .cpu_setup = __setup_cpu_power4, |
| 146 | .oprofile_cpu_type = "ppc64/power4", | ||
| 140 | }, | 147 | }, |
| 141 | { /* Power4+ */ | 148 | { /* Power4+ */ |
| 142 | .pvr_mask = 0xffff0000, | 149 | .pvr_mask = 0xffff0000, |
| @@ -150,6 +157,7 @@ struct cpu_spec cpu_specs[] = { | |||
| 150 | .dcache_bsize = 128, | 157 | .dcache_bsize = 128, |
| 151 | .num_pmcs = 8, | 158 | .num_pmcs = 8, |
| 152 | .cpu_setup = __setup_cpu_power4, | 159 | .cpu_setup = __setup_cpu_power4, |
| 160 | .oprofile_cpu_type = "ppc64/power4", | ||
| 153 | }, | 161 | }, |
| 154 | { /* PPC970 */ | 162 | { /* PPC970 */ |
| 155 | .pvr_mask = 0xffff0000, | 163 | .pvr_mask = 0xffff0000, |
| @@ -165,6 +173,7 @@ struct cpu_spec cpu_specs[] = { | |||
| 165 | .dcache_bsize = 128, | 173 | .dcache_bsize = 128, |
| 166 | .num_pmcs = 8, | 174 | .num_pmcs = 8, |
| 167 | .cpu_setup = __setup_cpu_ppc970, | 175 | .cpu_setup = __setup_cpu_ppc970, |
| 176 | .oprofile_cpu_type = "ppc64/970", | ||
| 168 | }, | 177 | }, |
| 169 | { /* PPC970FX */ | 178 | { /* PPC970FX */ |
| 170 | .pvr_mask = 0xffff0000, | 179 | .pvr_mask = 0xffff0000, |
| @@ -180,6 +189,7 @@ struct cpu_spec cpu_specs[] = { | |||
| 180 | .dcache_bsize = 128, | 189 | .dcache_bsize = 128, |
| 181 | .num_pmcs = 8, | 190 | .num_pmcs = 8, |
| 182 | .cpu_setup = __setup_cpu_ppc970, | 191 | .cpu_setup = __setup_cpu_ppc970, |
| 192 | .oprofile_cpu_type = "ppc64/970", | ||
| 183 | }, | 193 | }, |
| 184 | { /* PPC970MP */ | 194 | { /* PPC970MP */ |
| 185 | .pvr_mask = 0xffff0000, | 195 | .pvr_mask = 0xffff0000, |
| @@ -194,6 +204,7 @@ struct cpu_spec cpu_specs[] = { | |||
| 194 | .icache_bsize = 128, | 204 | .icache_bsize = 128, |
| 195 | .dcache_bsize = 128, | 205 | .dcache_bsize = 128, |
| 196 | .cpu_setup = __setup_cpu_ppc970, | 206 | .cpu_setup = __setup_cpu_ppc970, |
| 207 | .oprofile_cpu_type = "ppc64/970", | ||
| 197 | }, | 208 | }, |
| 198 | { /* Power5 */ | 209 | { /* Power5 */ |
| 199 | .pvr_mask = 0xffff0000, | 210 | .pvr_mask = 0xffff0000, |
| @@ -209,6 +220,7 @@ struct cpu_spec cpu_specs[] = { | |||
| 209 | .dcache_bsize = 128, | 220 | .dcache_bsize = 128, |
| 210 | .num_pmcs = 6, | 221 | .num_pmcs = 6, |
| 211 | .cpu_setup = __setup_cpu_power4, | 222 | .cpu_setup = __setup_cpu_power4, |
| 223 | .oprofile_cpu_type = "ppc64/power5", | ||
| 212 | }, | 224 | }, |
| 213 | { /* Power5 */ | 225 | { /* Power5 */ |
| 214 | .pvr_mask = 0xffff0000, | 226 | .pvr_mask = 0xffff0000, |
| @@ -224,6 +236,7 @@ struct cpu_spec cpu_specs[] = { | |||
| 224 | .dcache_bsize = 128, | 236 | .dcache_bsize = 128, |
| 225 | .num_pmcs = 6, | 237 | .num_pmcs = 6, |
| 226 | .cpu_setup = __setup_cpu_power4, | 238 | .cpu_setup = __setup_cpu_power4, |
| 239 | .oprofile_cpu_type = "ppc64/power5", | ||
| 227 | }, | 240 | }, |
| 228 | { /* BE DD1.x */ | 241 | { /* BE DD1.x */ |
| 229 | .pvr_mask = 0xffff0000, | 242 | .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) | |||
| 132 | case PV_630: | 132 | case PV_630: |
| 133 | case PV_630p: | 133 | case PV_630p: |
| 134 | model = &op_model_rs64; | 134 | model = &op_model_rs64; |
| 135 | ops->cpu_type = "ppc64/power3"; | ||
| 136 | break; | 135 | break; |
| 137 | 136 | ||
| 138 | case PV_NORTHSTAR: | 137 | case PV_NORTHSTAR: |
| @@ -140,32 +139,29 @@ int __init oprofile_arch_init(struct oprofile_operations *ops) | |||
| 140 | case PV_ICESTAR: | 139 | case PV_ICESTAR: |
| 141 | case PV_SSTAR: | 140 | case PV_SSTAR: |
| 142 | model = &op_model_rs64; | 141 | model = &op_model_rs64; |
| 143 | ops->cpu_type = "ppc64/rs64"; | ||
| 144 | break; | 142 | break; |
| 145 | 143 | ||
| 146 | case PV_POWER4: | 144 | case PV_POWER4: |
| 147 | case PV_POWER4p: | 145 | case PV_POWER4p: |
| 148 | model = &op_model_power4; | 146 | model = &op_model_power4; |
| 149 | ops->cpu_type = "ppc64/power4"; | ||
| 150 | break; | 147 | break; |
| 151 | 148 | ||
| 152 | case PV_970: | 149 | case PV_970: |
| 153 | case PV_970FX: | 150 | case PV_970FX: |
| 154 | case PV_970MP: | 151 | case PV_970MP: |
| 155 | model = &op_model_power4; | 152 | model = &op_model_power4; |
| 156 | ops->cpu_type = "ppc64/970"; | ||
| 157 | break; | 153 | break; |
| 158 | 154 | ||
| 159 | case PV_POWER5: | 155 | case PV_POWER5: |
| 160 | case PV_POWER5p: | 156 | case PV_POWER5p: |
| 161 | model = &op_model_power4; | 157 | model = &op_model_power4; |
| 162 | ops->cpu_type = "ppc64/power5"; | ||
| 163 | break; | 158 | break; |
| 164 | 159 | ||
| 165 | default: | 160 | default: |
| 166 | return -ENODEV; | 161 | return -ENODEV; |
| 167 | } | 162 | } |
| 168 | 163 | ||
| 164 | ops->cpu_type = cur_cpu_spec->oprofile_cpu_type; | ||
| 169 | model->num_counters = cur_cpu_spec->num_pmcs; | 165 | model->num_counters = cur_cpu_spec->num_pmcs; |
| 170 | ops->create_files = op_ppc64_create_files; | 166 | ops->create_files = op_ppc64_create_files; |
| 171 | ops->setup = op_ppc64_setup; | 167 | 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 { | |||
| 59 | * BHT, SPD, etc... from head.S before branching to identify_machine | 59 | * BHT, SPD, etc... from head.S before branching to identify_machine |
| 60 | */ | 60 | */ |
| 61 | cpu_setup_t cpu_setup; | 61 | cpu_setup_t cpu_setup; |
| 62 | |||
| 63 | /* Used by oprofile userspace to select the right counters */ | ||
| 64 | char *oprofile_cpu_type; | ||
| 62 | }; | 65 | }; |
| 63 | 66 | ||
| 64 | extern struct cpu_spec cpu_specs[]; | 67 | extern struct cpu_spec cpu_specs[]; |
