diff options
-rw-r--r-- | arch/powerpc/kernel/cputable.c | 104 | ||||
-rw-r--r-- | arch/powerpc/oprofile/common.c | 26 | ||||
-rw-r--r-- | include/asm-powerpc/cputable.h | 11 |
3 files changed, 59 insertions, 82 deletions
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c index 2f82a2091440..2a16f4a192ee 100644 --- a/arch/powerpc/kernel/cputable.c +++ b/arch/powerpc/kernel/cputable.c | |||
@@ -78,10 +78,8 @@ struct cpu_spec cpu_specs[] = { | |||
78 | .dcache_bsize = 128, | 78 | .dcache_bsize = 128, |
79 | .num_pmcs = 8, | 79 | .num_pmcs = 8, |
80 | .cpu_setup = __setup_cpu_power3, | 80 | .cpu_setup = __setup_cpu_power3, |
81 | #ifdef CONFIG_OPROFILE | ||
82 | .oprofile_cpu_type = "ppc64/power3", | 81 | .oprofile_cpu_type = "ppc64/power3", |
83 | .oprofile_model = &op_model_rs64, | 82 | .oprofile_type = RS64, |
84 | #endif | ||
85 | }, | 83 | }, |
86 | { /* Power3+ */ | 84 | { /* Power3+ */ |
87 | .pvr_mask = 0xffff0000, | 85 | .pvr_mask = 0xffff0000, |
@@ -93,10 +91,8 @@ struct cpu_spec cpu_specs[] = { | |||
93 | .dcache_bsize = 128, | 91 | .dcache_bsize = 128, |
94 | .num_pmcs = 8, | 92 | .num_pmcs = 8, |
95 | .cpu_setup = __setup_cpu_power3, | 93 | .cpu_setup = __setup_cpu_power3, |
96 | #ifdef CONFIG_OPROFILE | ||
97 | .oprofile_cpu_type = "ppc64/power3", | 94 | .oprofile_cpu_type = "ppc64/power3", |
98 | .oprofile_model = &op_model_rs64, | 95 | .oprofile_type = RS64, |
99 | #endif | ||
100 | }, | 96 | }, |
101 | { /* Northstar */ | 97 | { /* Northstar */ |
102 | .pvr_mask = 0xffff0000, | 98 | .pvr_mask = 0xffff0000, |
@@ -108,10 +104,8 @@ struct cpu_spec cpu_specs[] = { | |||
108 | .dcache_bsize = 128, | 104 | .dcache_bsize = 128, |
109 | .num_pmcs = 8, | 105 | .num_pmcs = 8, |
110 | .cpu_setup = __setup_cpu_power3, | 106 | .cpu_setup = __setup_cpu_power3, |
111 | #ifdef CONFIG_OPROFILE | ||
112 | .oprofile_cpu_type = "ppc64/rs64", | 107 | .oprofile_cpu_type = "ppc64/rs64", |
113 | .oprofile_model = &op_model_rs64, | 108 | .oprofile_type = RS64, |
114 | #endif | ||
115 | }, | 109 | }, |
116 | { /* Pulsar */ | 110 | { /* Pulsar */ |
117 | .pvr_mask = 0xffff0000, | 111 | .pvr_mask = 0xffff0000, |
@@ -123,10 +117,8 @@ struct cpu_spec cpu_specs[] = { | |||
123 | .dcache_bsize = 128, | 117 | .dcache_bsize = 128, |
124 | .num_pmcs = 8, | 118 | .num_pmcs = 8, |
125 | .cpu_setup = __setup_cpu_power3, | 119 | .cpu_setup = __setup_cpu_power3, |
126 | #ifdef CONFIG_OPROFILE | ||
127 | .oprofile_cpu_type = "ppc64/rs64", | 120 | .oprofile_cpu_type = "ppc64/rs64", |
128 | .oprofile_model = &op_model_rs64, | 121 | .oprofile_type = RS64, |
129 | #endif | ||
130 | }, | 122 | }, |
131 | { /* I-star */ | 123 | { /* I-star */ |
132 | .pvr_mask = 0xffff0000, | 124 | .pvr_mask = 0xffff0000, |
@@ -138,10 +130,8 @@ struct cpu_spec cpu_specs[] = { | |||
138 | .dcache_bsize = 128, | 130 | .dcache_bsize = 128, |
139 | .num_pmcs = 8, | 131 | .num_pmcs = 8, |
140 | .cpu_setup = __setup_cpu_power3, | 132 | .cpu_setup = __setup_cpu_power3, |
141 | #ifdef CONFIG_OPROFILE | ||
142 | .oprofile_cpu_type = "ppc64/rs64", | 133 | .oprofile_cpu_type = "ppc64/rs64", |
143 | .oprofile_model = &op_model_rs64, | 134 | .oprofile_type = RS64, |
144 | #endif | ||
145 | }, | 135 | }, |
146 | { /* S-star */ | 136 | { /* S-star */ |
147 | .pvr_mask = 0xffff0000, | 137 | .pvr_mask = 0xffff0000, |
@@ -153,10 +143,8 @@ struct cpu_spec cpu_specs[] = { | |||
153 | .dcache_bsize = 128, | 143 | .dcache_bsize = 128, |
154 | .num_pmcs = 8, | 144 | .num_pmcs = 8, |
155 | .cpu_setup = __setup_cpu_power3, | 145 | .cpu_setup = __setup_cpu_power3, |
156 | #ifdef CONFIG_OPROFILE | ||
157 | .oprofile_cpu_type = "ppc64/rs64", | 146 | .oprofile_cpu_type = "ppc64/rs64", |
158 | .oprofile_model = &op_model_rs64, | 147 | .oprofile_type = RS64, |
159 | #endif | ||
160 | }, | 148 | }, |
161 | { /* Power4 */ | 149 | { /* Power4 */ |
162 | .pvr_mask = 0xffff0000, | 150 | .pvr_mask = 0xffff0000, |
@@ -168,10 +156,8 @@ struct cpu_spec cpu_specs[] = { | |||
168 | .dcache_bsize = 128, | 156 | .dcache_bsize = 128, |
169 | .num_pmcs = 8, | 157 | .num_pmcs = 8, |
170 | .cpu_setup = __setup_cpu_power4, | 158 | .cpu_setup = __setup_cpu_power4, |
171 | #ifdef CONFIG_OPROFILE | ||
172 | .oprofile_cpu_type = "ppc64/power4", | 159 | .oprofile_cpu_type = "ppc64/power4", |
173 | .oprofile_model = &op_model_rs64, | 160 | .oprofile_type = POWER4, |
174 | #endif | ||
175 | }, | 161 | }, |
176 | { /* Power4+ */ | 162 | { /* Power4+ */ |
177 | .pvr_mask = 0xffff0000, | 163 | .pvr_mask = 0xffff0000, |
@@ -183,10 +169,8 @@ struct cpu_spec cpu_specs[] = { | |||
183 | .dcache_bsize = 128, | 169 | .dcache_bsize = 128, |
184 | .num_pmcs = 8, | 170 | .num_pmcs = 8, |
185 | .cpu_setup = __setup_cpu_power4, | 171 | .cpu_setup = __setup_cpu_power4, |
186 | #ifdef CONFIG_OPROFILE | ||
187 | .oprofile_cpu_type = "ppc64/power4", | 172 | .oprofile_cpu_type = "ppc64/power4", |
188 | .oprofile_model = &op_model_power4, | 173 | .oprofile_type = POWER4, |
189 | #endif | ||
190 | }, | 174 | }, |
191 | { /* PPC970 */ | 175 | { /* PPC970 */ |
192 | .pvr_mask = 0xffff0000, | 176 | .pvr_mask = 0xffff0000, |
@@ -199,10 +183,8 @@ struct cpu_spec cpu_specs[] = { | |||
199 | .dcache_bsize = 128, | 183 | .dcache_bsize = 128, |
200 | .num_pmcs = 8, | 184 | .num_pmcs = 8, |
201 | .cpu_setup = __setup_cpu_ppc970, | 185 | .cpu_setup = __setup_cpu_ppc970, |
202 | #ifdef CONFIG_OPROFILE | ||
203 | .oprofile_cpu_type = "ppc64/970", | 186 | .oprofile_cpu_type = "ppc64/970", |
204 | .oprofile_model = &op_model_power4, | 187 | .oprofile_type = POWER4, |
205 | #endif | ||
206 | }, | 188 | }, |
207 | #endif /* CONFIG_PPC64 */ | 189 | #endif /* CONFIG_PPC64 */ |
208 | #if defined(CONFIG_PPC64) || defined(CONFIG_POWER4) | 190 | #if defined(CONFIG_PPC64) || defined(CONFIG_POWER4) |
@@ -221,10 +203,8 @@ struct cpu_spec cpu_specs[] = { | |||
221 | .dcache_bsize = 128, | 203 | .dcache_bsize = 128, |
222 | .num_pmcs = 8, | 204 | .num_pmcs = 8, |
223 | .cpu_setup = __setup_cpu_ppc970, | 205 | .cpu_setup = __setup_cpu_ppc970, |
224 | #ifdef CONFIG_OPROFILE | ||
225 | .oprofile_cpu_type = "ppc64/970", | 206 | .oprofile_cpu_type = "ppc64/970", |
226 | .oprofile_model = &op_model_power4, | 207 | .oprofile_type = POWER4, |
227 | #endif | ||
228 | }, | 208 | }, |
229 | #endif /* defined(CONFIG_PPC64) || defined(CONFIG_POWER4) */ | 209 | #endif /* defined(CONFIG_PPC64) || defined(CONFIG_POWER4) */ |
230 | #ifdef CONFIG_PPC64 | 210 | #ifdef CONFIG_PPC64 |
@@ -238,10 +218,8 @@ struct cpu_spec cpu_specs[] = { | |||
238 | .icache_bsize = 128, | 218 | .icache_bsize = 128, |
239 | .dcache_bsize = 128, | 219 | .dcache_bsize = 128, |
240 | .cpu_setup = __setup_cpu_ppc970, | 220 | .cpu_setup = __setup_cpu_ppc970, |
241 | #ifdef CONFIG_OPROFILE | ||
242 | .oprofile_cpu_type = "ppc64/970", | 221 | .oprofile_cpu_type = "ppc64/970", |
243 | .oprofile_model = &op_model_power4, | 222 | .oprofile_type = POWER4, |
244 | #endif | ||
245 | }, | 223 | }, |
246 | { /* Power5 GR */ | 224 | { /* Power5 GR */ |
247 | .pvr_mask = 0xffff0000, | 225 | .pvr_mask = 0xffff0000, |
@@ -253,10 +231,8 @@ struct cpu_spec cpu_specs[] = { | |||
253 | .dcache_bsize = 128, | 231 | .dcache_bsize = 128, |
254 | .num_pmcs = 6, | 232 | .num_pmcs = 6, |
255 | .cpu_setup = __setup_cpu_power4, | 233 | .cpu_setup = __setup_cpu_power4, |
256 | #ifdef CONFIG_OPROFILE | ||
257 | .oprofile_cpu_type = "ppc64/power5", | 234 | .oprofile_cpu_type = "ppc64/power5", |
258 | .oprofile_model = &op_model_power4, | 235 | .oprofile_type = POWER4, |
259 | #endif | ||
260 | }, | 236 | }, |
261 | { /* Power5 GS */ | 237 | { /* Power5 GS */ |
262 | .pvr_mask = 0xffff0000, | 238 | .pvr_mask = 0xffff0000, |
@@ -268,10 +244,8 @@ struct cpu_spec cpu_specs[] = { | |||
268 | .dcache_bsize = 128, | 244 | .dcache_bsize = 128, |
269 | .num_pmcs = 6, | 245 | .num_pmcs = 6, |
270 | .cpu_setup = __setup_cpu_power4, | 246 | .cpu_setup = __setup_cpu_power4, |
271 | #ifdef CONFIG_OPROFILE | ||
272 | .oprofile_cpu_type = "ppc64/power5", | 247 | .oprofile_cpu_type = "ppc64/power5", |
273 | .oprofile_model = &op_model_power4, | 248 | .oprofile_type = POWER4, |
274 | #endif | ||
275 | }, | 249 | }, |
276 | { /* Cell Broadband Engine */ | 250 | { /* Cell Broadband Engine */ |
277 | .pvr_mask = 0xffff0000, | 251 | .pvr_mask = 0xffff0000, |
@@ -546,10 +520,8 @@ struct cpu_spec cpu_specs[] = { | |||
546 | .dcache_bsize = 32, | 520 | .dcache_bsize = 32, |
547 | .num_pmcs = 6, | 521 | .num_pmcs = 6, |
548 | .cpu_setup = __setup_cpu_745x, | 522 | .cpu_setup = __setup_cpu_745x, |
549 | #ifdef CONFIG_OPROFILE | ||
550 | .oprofile_cpu_type = "ppc/7450", | 523 | .oprofile_cpu_type = "ppc/7450", |
551 | .oprofile_model = &op_model_7450, | 524 | .oprofile_type = G4, |
552 | #endif | ||
553 | }, | 525 | }, |
554 | { /* 7450 2.1 */ | 526 | { /* 7450 2.1 */ |
555 | .pvr_mask = 0xffffffff, | 527 | .pvr_mask = 0xffffffff, |
@@ -561,10 +533,8 @@ struct cpu_spec cpu_specs[] = { | |||
561 | .dcache_bsize = 32, | 533 | .dcache_bsize = 32, |
562 | .num_pmcs = 6, | 534 | .num_pmcs = 6, |
563 | .cpu_setup = __setup_cpu_745x, | 535 | .cpu_setup = __setup_cpu_745x, |
564 | #ifdef CONFIG_OPROFILE | ||
565 | .oprofile_cpu_type = "ppc/7450", | 536 | .oprofile_cpu_type = "ppc/7450", |
566 | .oprofile_model = &op_model_7450, | 537 | .oprofile_type = G4, |
567 | #endif | ||
568 | }, | 538 | }, |
569 | { /* 7450 2.3 and newer */ | 539 | { /* 7450 2.3 and newer */ |
570 | .pvr_mask = 0xffff0000, | 540 | .pvr_mask = 0xffff0000, |
@@ -576,10 +546,8 @@ struct cpu_spec cpu_specs[] = { | |||
576 | .dcache_bsize = 32, | 546 | .dcache_bsize = 32, |
577 | .num_pmcs = 6, | 547 | .num_pmcs = 6, |
578 | .cpu_setup = __setup_cpu_745x, | 548 | .cpu_setup = __setup_cpu_745x, |
579 | #ifdef CONFIG_OPROFILE | ||
580 | .oprofile_cpu_type = "ppc/7450", | 549 | .oprofile_cpu_type = "ppc/7450", |
581 | .oprofile_model = &op_model_7450, | 550 | .oprofile_type = G4, |
582 | #endif | ||
583 | }, | 551 | }, |
584 | { /* 7455 rev 1.x */ | 552 | { /* 7455 rev 1.x */ |
585 | .pvr_mask = 0xffffff00, | 553 | .pvr_mask = 0xffffff00, |
@@ -591,10 +559,8 @@ struct cpu_spec cpu_specs[] = { | |||
591 | .dcache_bsize = 32, | 559 | .dcache_bsize = 32, |
592 | .num_pmcs = 6, | 560 | .num_pmcs = 6, |
593 | .cpu_setup = __setup_cpu_745x, | 561 | .cpu_setup = __setup_cpu_745x, |
594 | #ifdef CONFIG_OPROFILE | ||
595 | .oprofile_cpu_type = "ppc/7450", | 562 | .oprofile_cpu_type = "ppc/7450", |
596 | .oprofile_model = &op_model_7450, | 563 | .oprofile_type = G4, |
597 | #endif | ||
598 | }, | 564 | }, |
599 | { /* 7455 rev 2.0 */ | 565 | { /* 7455 rev 2.0 */ |
600 | .pvr_mask = 0xffffffff, | 566 | .pvr_mask = 0xffffffff, |
@@ -606,10 +572,8 @@ struct cpu_spec cpu_specs[] = { | |||
606 | .dcache_bsize = 32, | 572 | .dcache_bsize = 32, |
607 | .num_pmcs = 6, | 573 | .num_pmcs = 6, |
608 | .cpu_setup = __setup_cpu_745x, | 574 | .cpu_setup = __setup_cpu_745x, |
609 | #ifdef CONFIG_OPROFILE | ||
610 | .oprofile_cpu_type = "ppc/7450", | 575 | .oprofile_cpu_type = "ppc/7450", |
611 | .oprofile_model = &op_model_7450, | 576 | .oprofile_type = G4, |
612 | #endif | ||
613 | }, | 577 | }, |
614 | { /* 7455 others */ | 578 | { /* 7455 others */ |
615 | .pvr_mask = 0xffff0000, | 579 | .pvr_mask = 0xffff0000, |
@@ -621,10 +585,8 @@ struct cpu_spec cpu_specs[] = { | |||
621 | .dcache_bsize = 32, | 585 | .dcache_bsize = 32, |
622 | .num_pmcs = 6, | 586 | .num_pmcs = 6, |
623 | .cpu_setup = __setup_cpu_745x, | 587 | .cpu_setup = __setup_cpu_745x, |
624 | #ifdef CONFIG_OPROFILE | ||
625 | .oprofile_cpu_type = "ppc/7450", | 588 | .oprofile_cpu_type = "ppc/7450", |
626 | .oprofile_model = &op_model_7450, | 589 | .oprofile_type = G4, |
627 | #endif | ||
628 | }, | 590 | }, |
629 | { /* 7447/7457 Rev 1.0 */ | 591 | { /* 7447/7457 Rev 1.0 */ |
630 | .pvr_mask = 0xffffffff, | 592 | .pvr_mask = 0xffffffff, |
@@ -636,10 +598,8 @@ struct cpu_spec cpu_specs[] = { | |||
636 | .dcache_bsize = 32, | 598 | .dcache_bsize = 32, |
637 | .num_pmcs = 6, | 599 | .num_pmcs = 6, |
638 | .cpu_setup = __setup_cpu_745x, | 600 | .cpu_setup = __setup_cpu_745x, |
639 | #ifdef CONFIG_OPROFILE | ||
640 | .oprofile_cpu_type = "ppc/7450", | 601 | .oprofile_cpu_type = "ppc/7450", |
641 | .oprofile_model = &op_model_7450, | 602 | .oprofile_type = G4, |
642 | #endif | ||
643 | }, | 603 | }, |
644 | { /* 7447/7457 Rev 1.1 */ | 604 | { /* 7447/7457 Rev 1.1 */ |
645 | .pvr_mask = 0xffffffff, | 605 | .pvr_mask = 0xffffffff, |
@@ -651,10 +611,8 @@ struct cpu_spec cpu_specs[] = { | |||
651 | .dcache_bsize = 32, | 611 | .dcache_bsize = 32, |
652 | .num_pmcs = 6, | 612 | .num_pmcs = 6, |
653 | .cpu_setup = __setup_cpu_745x, | 613 | .cpu_setup = __setup_cpu_745x, |
654 | #ifdef CONFIG_OPROFILE | ||
655 | .oprofile_cpu_type = "ppc/7450", | 614 | .oprofile_cpu_type = "ppc/7450", |
656 | .oprofile_model = &op_model_7450, | 615 | .oprofile_type = G4, |
657 | #endif | ||
658 | }, | 616 | }, |
659 | { /* 7447/7457 Rev 1.2 and later */ | 617 | { /* 7447/7457 Rev 1.2 and later */ |
660 | .pvr_mask = 0xffff0000, | 618 | .pvr_mask = 0xffff0000, |
@@ -666,10 +624,8 @@ struct cpu_spec cpu_specs[] = { | |||
666 | .dcache_bsize = 32, | 624 | .dcache_bsize = 32, |
667 | .num_pmcs = 6, | 625 | .num_pmcs = 6, |
668 | .cpu_setup = __setup_cpu_745x, | 626 | .cpu_setup = __setup_cpu_745x, |
669 | #ifdef CONFIG_OPROFILE | ||
670 | .oprofile_cpu_type = "ppc/7450", | 627 | .oprofile_cpu_type = "ppc/7450", |
671 | .oprofile_model = &op_model_7450, | 628 | .oprofile_type = G4, |
672 | #endif | ||
673 | }, | 629 | }, |
674 | { /* 7447A */ | 630 | { /* 7447A */ |
675 | .pvr_mask = 0xffff0000, | 631 | .pvr_mask = 0xffff0000, |
@@ -681,10 +637,8 @@ struct cpu_spec cpu_specs[] = { | |||
681 | .dcache_bsize = 32, | 637 | .dcache_bsize = 32, |
682 | .num_pmcs = 6, | 638 | .num_pmcs = 6, |
683 | .cpu_setup = __setup_cpu_745x, | 639 | .cpu_setup = __setup_cpu_745x, |
684 | #ifdef CONFIG_OPROFILE | ||
685 | .oprofile_cpu_type = "ppc/7450", | 640 | .oprofile_cpu_type = "ppc/7450", |
686 | .oprofile_model = &op_model_7450, | 641 | .oprofile_type = G4, |
687 | #endif | ||
688 | }, | 642 | }, |
689 | { /* 7448 */ | 643 | { /* 7448 */ |
690 | .pvr_mask = 0xffff0000, | 644 | .pvr_mask = 0xffff0000, |
@@ -696,10 +650,8 @@ struct cpu_spec cpu_specs[] = { | |||
696 | .dcache_bsize = 32, | 650 | .dcache_bsize = 32, |
697 | .num_pmcs = 6, | 651 | .num_pmcs = 6, |
698 | .cpu_setup = __setup_cpu_745x, | 652 | .cpu_setup = __setup_cpu_745x, |
699 | #ifdef CONFIG_OPROFILE | ||
700 | .oprofile_cpu_type = "ppc/7450", | 653 | .oprofile_cpu_type = "ppc/7450", |
701 | .oprofile_model = &op_model_7450, | 654 | .oprofile_type = G4, |
702 | #endif | ||
703 | }, | 655 | }, |
704 | { /* 82xx (8240, 8245, 8260 are all 603e cores) */ | 656 | { /* 82xx (8240, 8245, 8260 are all 603e cores) */ |
705 | .pvr_mask = 0x7fff0000, | 657 | .pvr_mask = 0x7fff0000, |
@@ -1023,10 +975,8 @@ struct cpu_spec cpu_specs[] = { | |||
1023 | .icache_bsize = 32, | 975 | .icache_bsize = 32, |
1024 | .dcache_bsize = 32, | 976 | .dcache_bsize = 32, |
1025 | .num_pmcs = 4, | 977 | .num_pmcs = 4, |
1026 | #ifdef CONFIG_OPROFILE | ||
1027 | .oprofile_cpu_type = "ppc/e500", | 978 | .oprofile_cpu_type = "ppc/e500", |
1028 | .oprofile_model = &op_model_fsl_booke, | 979 | .oprofile_type = BOOKE, |
1029 | #endif | ||
1030 | }, | 980 | }, |
1031 | { /* e500v2 */ | 981 | { /* e500v2 */ |
1032 | .pvr_mask = 0xffff0000, | 982 | .pvr_mask = 0xffff0000, |
@@ -1040,10 +990,8 @@ struct cpu_spec cpu_specs[] = { | |||
1040 | .icache_bsize = 32, | 990 | .icache_bsize = 32, |
1041 | .dcache_bsize = 32, | 991 | .dcache_bsize = 32, |
1042 | .num_pmcs = 4, | 992 | .num_pmcs = 4, |
1043 | #ifdef CONFIG_OPROFILE | ||
1044 | .oprofile_cpu_type = "ppc/e500", | 993 | .oprofile_cpu_type = "ppc/e500", |
1045 | .oprofile_model = &op_model_fsl_booke, | 994 | .oprofile_type = BOOKE, |
1046 | #endif | ||
1047 | }, | 995 | }, |
1048 | #endif | 996 | #endif |
1049 | #if !CLASSIC_PPC | 997 | #if !CLASSIC_PPC |
diff --git a/arch/powerpc/oprofile/common.c b/arch/powerpc/oprofile/common.c index a370778b68dd..71615eb70b2b 100644 --- a/arch/powerpc/oprofile/common.c +++ b/arch/powerpc/oprofile/common.c | |||
@@ -135,9 +135,31 @@ static int op_powerpc_create_files(struct super_block *sb, struct dentry *root) | |||
135 | 135 | ||
136 | int __init oprofile_arch_init(struct oprofile_operations *ops) | 136 | int __init oprofile_arch_init(struct oprofile_operations *ops) |
137 | { | 137 | { |
138 | if (!cur_cpu_spec->oprofile_model || !cur_cpu_spec->oprofile_cpu_type) | 138 | if (!cur_cpu_spec->oprofile_cpu_type) |
139 | return -ENODEV; | 139 | return -ENODEV; |
140 | model = cur_cpu_spec->oprofile_model; | 140 | |
141 | switch (cur_cpu_spec->oprofile_type) { | ||
142 | #ifdef CONFIG_PPC64 | ||
143 | case RS64: | ||
144 | model = &op_model_rs64; | ||
145 | break; | ||
146 | case POWER4: | ||
147 | model = &op_model_power4; | ||
148 | break; | ||
149 | #else | ||
150 | case G4: | ||
151 | model = &op_model_7450; | ||
152 | break; | ||
153 | #endif | ||
154 | #ifdef CONFIG_FSL_BOOKE | ||
155 | case BOOKE: | ||
156 | model = &op_model_fsl_booke; | ||
157 | break; | ||
158 | #endif | ||
159 | default: | ||
160 | return -ENODEV; | ||
161 | } | ||
162 | |||
141 | model->num_counters = cur_cpu_spec->num_pmcs; | 163 | model->num_counters = cur_cpu_spec->num_pmcs; |
142 | 164 | ||
143 | ops->cpu_type = cur_cpu_spec->oprofile_cpu_type; | 165 | ops->cpu_type = cur_cpu_spec->oprofile_cpu_type; |
diff --git a/include/asm-powerpc/cputable.h b/include/asm-powerpc/cputable.h index d8798f31b360..ef6ead34a773 100644 --- a/include/asm-powerpc/cputable.h +++ b/include/asm-powerpc/cputable.h | |||
@@ -27,10 +27,17 @@ | |||
27 | * via the mkdefs mechanism. | 27 | * via the mkdefs mechanism. |
28 | */ | 28 | */ |
29 | struct cpu_spec; | 29 | struct cpu_spec; |
30 | struct op_powerpc_model; | ||
31 | 30 | ||
32 | typedef void (*cpu_setup_t)(unsigned long offset, struct cpu_spec* spec); | 31 | typedef void (*cpu_setup_t)(unsigned long offset, struct cpu_spec* spec); |
33 | 32 | ||
33 | enum powerpc_oprofile_type { | ||
34 | INVALID = 0, | ||
35 | RS64 = 1, | ||
36 | POWER4 = 2, | ||
37 | G4 = 3, | ||
38 | BOOKE = 4, | ||
39 | }; | ||
40 | |||
34 | struct cpu_spec { | 41 | struct cpu_spec { |
35 | /* CPU is matched via (PVR & pvr_mask) == pvr_value */ | 42 | /* CPU is matched via (PVR & pvr_mask) == pvr_value */ |
36 | unsigned int pvr_mask; | 43 | unsigned int pvr_mask; |
@@ -56,7 +63,7 @@ struct cpu_spec { | |||
56 | char *oprofile_cpu_type; | 63 | char *oprofile_cpu_type; |
57 | 64 | ||
58 | /* Processor specific oprofile operations */ | 65 | /* Processor specific oprofile operations */ |
59 | struct op_powerpc_model *oprofile_model; | 66 | enum powerpc_oprofile_type oprofile_type; |
60 | }; | 67 | }; |
61 | 68 | ||
62 | extern struct cpu_spec *cur_cpu_spec; | 69 | extern struct cpu_spec *cur_cpu_spec; |