aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ppc64
diff options
context:
space:
mode:
authorStephen Rothwell <sfr@canb.auug.org.au>2005-10-12 01:55:09 -0400
committerStephen Rothwell <sfr@canb.auug.org.au>2005-10-12 19:49:45 -0400
commit4920960f577edcb0a5ef03823a53911cca5875e1 (patch)
treec37bb1a8b02f54e3a5012bac7f726208e6fc488e /arch/ppc64
parent7e130edf712ac054aecf643f9d3d0142a9679e6a (diff)
powerpc: consolidate cputable.c
Also simplify arch/ppc64/kernel/Makefile Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Diffstat (limited to 'arch/ppc64')
-rw-r--r--arch/ppc64/kernel/Makefile85
-rw-r--r--arch/ppc64/kernel/cputable.c260
2 files changed, 24 insertions, 321 deletions
diff --git a/arch/ppc64/kernel/Makefile b/arch/ppc64/kernel/Makefile
index 5569ea7e6830..834aef034b77 100644
--- a/arch/ppc64/kernel/Makefile
+++ b/arch/ppc64/kernel/Makefile
@@ -7,13 +7,17 @@ ifneq ($(CONFIG_PPC_MERGE),y)
7EXTRA_CFLAGS += -mno-minimal-toc 7EXTRA_CFLAGS += -mno-minimal-toc
8extra-y := head.o vmlinux.lds 8extra-y := head.o vmlinux.lds
9 9
10obj-y := setup.o entry.o irq.o idle.o dma.o \ 10obj-y := setup.o entry.o misc.o prom.o
11 time.o signal.o syscalls.o misc.o ptrace.o \ 11
12endif
13
14obj-y += irq.o idle.o dma.o \
15 time.o signal.o syscalls.o ptrace.o \
12 align.o bitops.o pacaData.o \ 16 align.o bitops.o pacaData.o \
13 udbg.o binfmt_elf32.o sys_ppc32.o ioctl32.o \ 17 udbg.o binfmt_elf32.o sys_ppc32.o ioctl32.o \
14 ptrace32.o signal32.o rtc.o \ 18 ptrace32.o signal32.o rtc.o \
15 cputable.o cpu_setup_power4.o \ 19 cpu_setup_power4.o \
16 iommu.o sysfs.o vdso.o pmc.o firmware.o prom.o 20 iommu.o sysfs.o vdso.o pmc.o firmware.o
17obj-y += vdso32/ vdso64/ 21obj-y += vdso32/ vdso64/
18 22
19obj-$(CONFIG_PPC_OF) += of_device.o 23obj-$(CONFIG_PPC_OF) += of_device.o
@@ -22,7 +26,10 @@ pci-obj-$(CONFIG_PPC_MULTIPLATFORM) += pci_dn.o pci_direct_iommu.o
22 26
23obj-$(CONFIG_PCI) += pci.o pci_iommu.o iomap.o $(pci-obj-y) 27obj-$(CONFIG_PCI) += pci.o pci_iommu.o iomap.o $(pci-obj-y)
24 28
25obj-$(CONFIG_PPC_MULTIPLATFORM) += nvram.o i8259.o prom_init.o 29obj-$(CONFIG_PPC_MULTIPLATFORM) += nvram.o i8259.o
30ifneq ($(CONFIG_PPC_MERGE),y)
31obj-$(CONFIG_PPC_MULTIPLATFORM) += prom_init.o
32endif
26 33
27obj-$(CONFIG_PPC_PSERIES) += rtasd.o ras.o udbg_16550.o 34obj-$(CONFIG_PPC_PSERIES) += rtasd.o ras.o udbg_16550.o
28 35
@@ -34,22 +41,29 @@ obj-$(CONFIG_EEH) += eeh.o
34obj-$(CONFIG_PROC_FS) += proc_ppc64.o 41obj-$(CONFIG_PROC_FS) += proc_ppc64.o
35obj-$(CONFIG_RTAS_FLASH) += rtas_flash.o 42obj-$(CONFIG_RTAS_FLASH) += rtas_flash.o
36obj-$(CONFIG_SMP) += smp.o 43obj-$(CONFIG_SMP) += smp.o
37obj-$(CONFIG_MODULES) += module.o ppc_ksyms.o 44obj-$(CONFIG_MODULES) += module.o
45ifneq ($(CONFIG_PPC_MERGE),y)
46obj-$(CONFIG_MODULES) += ppc_ksyms.o
47endif
38obj-$(CONFIG_PPC_RTAS) += rtas.o rtas_pci.o 48obj-$(CONFIG_PPC_RTAS) += rtas.o rtas_pci.o
39obj-$(CONFIG_RTAS_PROC) += rtas-proc.o 49obj-$(CONFIG_RTAS_PROC) += rtas-proc.o
40obj-$(CONFIG_SCANLOG) += scanlog.o 50obj-$(CONFIG_SCANLOG) += scanlog.o
41obj-$(CONFIG_LPARCFG) += lparcfg.o 51obj-$(CONFIG_LPARCFG) += lparcfg.o
42obj-$(CONFIG_HVC_CONSOLE) += hvconsole.o 52obj-$(CONFIG_HVC_CONSOLE) += hvconsole.o
53ifneq ($(CONFIG_PPC_MERGE),y)
43obj-$(CONFIG_BOOTX_TEXT) += btext.o 54obj-$(CONFIG_BOOTX_TEXT) += btext.o
55endif
44obj-$(CONFIG_HVCS) += hvcserver.o 56obj-$(CONFIG_HVCS) += hvcserver.o
45 57
46obj-$(CONFIG_IBMVIO) += vio.o $(vio-obj-y) 58obj-$(CONFIG_IBMVIO) += vio.o
47obj-$(CONFIG_XICS) += xics.o 59obj-$(CONFIG_XICS) += xics.o
60ifneq ($(CONFIG_PPC_MERGE),y)
48obj-$(CONFIG_MPIC) += mpic.o 61obj-$(CONFIG_MPIC) += mpic.o
49 62
50obj-$(CONFIG_PPC_PMAC) += pmac_setup.o pmac_feature.o pmac_pci.o \ 63obj-$(CONFIG_PPC_PMAC) += pmac_setup.o pmac_feature.o pmac_pci.o \
51 pmac_time.o pmac_nvram.o pmac_low_i2c.o \ 64 pmac_time.o pmac_nvram.o pmac_low_i2c.o \
52 udbg_scc.o 65 udbg_scc.o
66endif
53 67
54obj-$(CONFIG_PPC_MAPLE) += maple_setup.o maple_pci.o maple_time.o \ 68obj-$(CONFIG_PPC_MAPLE) += maple_setup.o maple_pci.o maple_time.o \
55 udbg_16550.o 69 udbg_16550.o
@@ -57,7 +71,9 @@ obj-$(CONFIG_PPC_MAPLE) += maple_setup.o maple_pci.o maple_time.o \
57obj-$(CONFIG_U3_DART) += u3_iommu.o 71obj-$(CONFIG_U3_DART) += u3_iommu.o
58 72
59ifdef CONFIG_SMP 73ifdef CONFIG_SMP
74ifneq ($(CONFIG_PPC_MERGE),y)
60obj-$(CONFIG_PPC_PMAC) += pmac_smp.o smp-tbsync.o 75obj-$(CONFIG_PPC_PMAC) += pmac_smp.o smp-tbsync.o
76endif
61obj-$(CONFIG_PPC_MAPLE) += smp-tbsync.o 77obj-$(CONFIG_PPC_MAPLE) += smp-tbsync.o
62endif 78endif
63 79
@@ -65,62 +81,9 @@ obj-$(CONFIG_KPROBES) += kprobes.o
65 81
66CFLAGS_ioctl32.o += -Ifs/ 82CFLAGS_ioctl32.o += -Ifs/
67 83
84ifneq ($(CONFIG_PPC_MERGE),y)
68ifeq ($(CONFIG_PPC_ISERIES),y) 85ifeq ($(CONFIG_PPC_ISERIES),y)
69arch/ppc64/kernel/head.o: arch/powerpc/kernel/lparmap.s 86arch/ppc64/kernel/head.o: arch/powerpc/kernel/lparmap.s
70AFLAGS_head.o += -Iarch/powerpc/kernel 87AFLAGS_head.o += -Iarch/powerpc/kernel
71endif 88endif
72
73else
74
75# Things still needed from here by the merged ppc code
76
77obj-y := irq.o idle.o dma.o \
78 time.o signal.o syscalls.o ptrace.o \
79 align.o bitops.o pacaData.o \
80 udbg.o binfmt_elf32.o sys_ppc32.o ioctl32.o \
81 ptrace32.o signal32.o rtc.o \
82 cputable.o cpu_setup_power4.o \
83 iommu.o sysfs.o vdso.o pmc.o firmware.o
84obj-y += vdso32/ vdso64/
85
86pci-obj-$(CONFIG_PPC_MULTIPLATFORM) += pci_dn.o pci_direct_iommu.o
87
88obj-$(CONFIG_PCI) += pci.o pci_iommu.o iomap.o $(pci-obj-y)
89
90obj-$(CONFIG_PPC_MULTIPLATFORM) += nvram.o i8259.o
91
92obj-$(CONFIG_PPC_PSERIES) += rtasd.o ras.o udbg_16550.o
93
94obj-$(CONFIG_PPC_BPA) += bpa_setup.o bpa_iommu.o bpa_nvram.o \
95 bpa_iic.o spider-pic.o
96
97obj-$(CONFIG_KEXEC) += machine_kexec.o
98obj-$(CONFIG_EEH) += eeh.o
99obj-$(CONFIG_PROC_FS) += proc_ppc64.o
100obj-$(CONFIG_RTAS_FLASH) += rtas_flash.o
101obj-$(CONFIG_SMP) += smp.o
102obj-$(CONFIG_MODULES) += module.o
103obj-$(CONFIG_PPC_RTAS) += rtas.o rtas_pci.o
104obj-$(CONFIG_RTAS_PROC) += rtas-proc.o
105obj-$(CONFIG_SCANLOG) += scanlog.o
106obj-$(CONFIG_LPARCFG) += lparcfg.o
107obj-$(CONFIG_HVC_CONSOLE) += hvconsole.o
108obj-$(CONFIG_HVCS) += hvcserver.o
109
110obj-$(CONFIG_IBMVIO) += vio.o
111obj-$(CONFIG_XICS) += xics.o
112
113obj-$(CONFIG_PPC_MAPLE) += maple_setup.o maple_pci.o maple_time.o \
114 udbg_16550.o
115
116obj-$(CONFIG_U3_DART) += u3_iommu.o
117
118ifdef CONFIG_SMP
119obj-$(CONFIG_PPC_MAPLE) += smp-tbsync.o
120endif
121
122obj-$(CONFIG_KPROBES) += kprobes.o
123
124CFLAGS_ioctl32.o += -Ifs/
125
126endif 89endif
diff --git a/arch/ppc64/kernel/cputable.c b/arch/ppc64/kernel/cputable.c
deleted file mode 100644
index 5134c53d536d..000000000000
--- a/arch/ppc64/kernel/cputable.c
+++ /dev/null
@@ -1,260 +0,0 @@
1/*
2 * arch/ppc64/kernel/cputable.c
3 *
4 * Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org)
5 *
6 * Modifications for ppc64:
7 * Copyright (C) 2003 Dave Engebretsen <engebret@us.ibm.com>
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License
11 * as published by the Free Software Foundation; either version
12 * 2 of the License, or (at your option) any later version.
13 */
14
15#include <linux/config.h>
16#include <linux/string.h>
17#include <linux/sched.h>
18#include <linux/threads.h>
19#include <linux/init.h>
20#include <linux/module.h>
21
22#include <asm/oprofile_impl.h>
23#include <asm/cputable.h>
24
25struct cpu_spec* cur_cpu_spec = NULL;
26EXPORT_SYMBOL(cur_cpu_spec);
27
28/* NOTE:
29 * Unlike ppc32, ppc64 will only call this once for the boot CPU, it's
30 * the responsibility of the appropriate CPU save/restore functions to
31 * eventually copy these settings over. Those save/restore aren't yet
32 * part of the cputable though. That has to be fixed for both ppc32
33 * and ppc64
34 */
35extern void __setup_cpu_power3(unsigned long offset, struct cpu_spec* spec);
36extern void __setup_cpu_power4(unsigned long offset, struct cpu_spec* spec);
37extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec);
38extern void __setup_cpu_be(unsigned long offset, struct cpu_spec* spec);
39
40struct cpu_spec cpu_specs[] = {
41 { /* Power3 */
42 .pvr_mask = 0xffff0000,
43 .pvr_value = 0x00400000,
44 .cpu_name = "POWER3 (630)",
45 .cpu_features = CPU_FTRS_POWER3,
46 .cpu_user_features = COMMON_USER_PPC64,
47 .icache_bsize = 128,
48 .dcache_bsize = 128,
49 .num_pmcs = 8,
50 .cpu_setup = __setup_cpu_power3,
51#ifdef CONFIG_OPROFILE
52 .oprofile_cpu_type = "ppc64/power3",
53 .oprofile_model = &op_model_rs64,
54#endif
55 },
56 { /* Power3+ */
57 .pvr_mask = 0xffff0000,
58 .pvr_value = 0x00410000,
59 .cpu_name = "POWER3 (630+)",
60 .cpu_features = CPU_FTRS_POWER3,
61 .cpu_user_features = COMMON_USER_PPC64,
62 .icache_bsize = 128,
63 .dcache_bsize = 128,
64 .num_pmcs = 8,
65 .cpu_setup = __setup_cpu_power3,
66#ifdef CONFIG_OPROFILE
67 .oprofile_cpu_type = "ppc64/power3",
68 .oprofile_model = &op_model_rs64,
69#endif
70 },
71 { /* Northstar */
72 .pvr_mask = 0xffff0000,
73 .pvr_value = 0x00330000,
74 .cpu_name = "RS64-II (northstar)",
75 .cpu_features = CPU_FTRS_RS64,
76 .cpu_user_features = COMMON_USER_PPC64,
77 .icache_bsize = 128,
78 .dcache_bsize = 128,
79 .num_pmcs = 8,
80 .cpu_setup = __setup_cpu_power3,
81#ifdef CONFIG_OPROFILE
82 .oprofile_cpu_type = "ppc64/rs64",
83 .oprofile_model = &op_model_rs64,
84#endif
85 },
86 { /* Pulsar */
87 .pvr_mask = 0xffff0000,
88 .pvr_value = 0x00340000,
89 .cpu_name = "RS64-III (pulsar)",
90 .cpu_features = CPU_FTRS_RS64,
91 .cpu_user_features = COMMON_USER_PPC64,
92 .icache_bsize = 128,
93 .dcache_bsize = 128,
94 .num_pmcs = 8,
95 .cpu_setup = __setup_cpu_power3,
96#ifdef CONFIG_OPROFILE
97 .oprofile_cpu_type = "ppc64/rs64",
98 .oprofile_model = &op_model_rs64,
99#endif
100 },
101 { /* I-star */
102 .pvr_mask = 0xffff0000,
103 .pvr_value = 0x00360000,
104 .cpu_name = "RS64-III (icestar)",
105 .cpu_features = CPU_FTRS_RS64,
106 .cpu_user_features = COMMON_USER_PPC64,
107 .icache_bsize = 128,
108 .dcache_bsize = 128,
109 .num_pmcs = 8,
110 .cpu_setup = __setup_cpu_power3,
111#ifdef CONFIG_OPROFILE
112 .oprofile_cpu_type = "ppc64/rs64",
113 .oprofile_model = &op_model_rs64,
114#endif
115 },
116 { /* S-star */
117 .pvr_mask = 0xffff0000,
118 .pvr_value = 0x00370000,
119 .cpu_name = "RS64-IV (sstar)",
120 .cpu_features = CPU_FTRS_RS64,
121 .cpu_user_features = COMMON_USER_PPC64,
122 .icache_bsize = 128,
123 .dcache_bsize = 128,
124 .num_pmcs = 8,
125 .cpu_setup = __setup_cpu_power3,
126#ifdef CONFIG_OPROFILE
127 .oprofile_cpu_type = "ppc64/rs64",
128 .oprofile_model = &op_model_rs64,
129#endif
130 },
131 { /* Power4 */
132 .pvr_mask = 0xffff0000,
133 .pvr_value = 0x00350000,
134 .cpu_name = "POWER4 (gp)",
135 .cpu_features = CPU_FTRS_POWER4,
136 .cpu_user_features = COMMON_USER_PPC64,
137 .icache_bsize = 128,
138 .dcache_bsize = 128,
139 .num_pmcs = 8,
140 .cpu_setup = __setup_cpu_power4,
141#ifdef CONFIG_OPROFILE
142 .oprofile_cpu_type = "ppc64/power4",
143 .oprofile_model = &op_model_rs64,
144#endif
145 },
146 { /* Power4+ */
147 .pvr_mask = 0xffff0000,
148 .pvr_value = 0x00380000,
149 .cpu_name = "POWER4+ (gq)",
150 .cpu_features = CPU_FTRS_POWER4,
151 .cpu_user_features = COMMON_USER_PPC64,
152 .icache_bsize = 128,
153 .dcache_bsize = 128,
154 .num_pmcs = 8,
155 .cpu_setup = __setup_cpu_power4,
156#ifdef CONFIG_OPROFILE
157 .oprofile_cpu_type = "ppc64/power4",
158 .oprofile_model = &op_model_power4,
159#endif
160 },
161 { /* PPC970 */
162 .pvr_mask = 0xffff0000,
163 .pvr_value = 0x00390000,
164 .cpu_name = "PPC970",
165 .cpu_features = CPU_FTRS_PPC970,
166 .cpu_user_features = COMMON_USER_PPC64 |
167 PPC_FEATURE_HAS_ALTIVEC_COMP,
168 .icache_bsize = 128,
169 .dcache_bsize = 128,
170 .num_pmcs = 8,
171 .cpu_setup = __setup_cpu_ppc970,
172#ifdef CONFIG_OPROFILE
173 .oprofile_cpu_type = "ppc64/970",
174 .oprofile_model = &op_model_power4,
175#endif
176 },
177 { /* PPC970FX */
178 .pvr_mask = 0xffff0000,
179 .pvr_value = 0x003c0000,
180 .cpu_name = "PPC970FX",
181 .cpu_features = CPU_FTRS_PPC970,
182 .cpu_user_features = COMMON_USER_PPC64 |
183 PPC_FEATURE_HAS_ALTIVEC_COMP,
184 .icache_bsize = 128,
185 .dcache_bsize = 128,
186 .num_pmcs = 8,
187 .cpu_setup = __setup_cpu_ppc970,
188#ifdef CONFIG_OPROFILE
189 .oprofile_cpu_type = "ppc64/970",
190 .oprofile_model = &op_model_power4,
191#endif
192 },
193 { /* PPC970MP */
194 .pvr_mask = 0xffff0000,
195 .pvr_value = 0x00440000,
196 .cpu_name = "PPC970MP",
197 .cpu_features = CPU_FTRS_PPC970,
198 .cpu_user_features = COMMON_USER_PPC64 |
199 PPC_FEATURE_HAS_ALTIVEC_COMP,
200 .icache_bsize = 128,
201 .dcache_bsize = 128,
202 .cpu_setup = __setup_cpu_ppc970,
203#ifdef CONFIG_OPROFILE
204 .oprofile_cpu_type = "ppc64/970",
205 .oprofile_model = &op_model_power4,
206#endif
207 },
208 { /* Power5 */
209 .pvr_mask = 0xffff0000,
210 .pvr_value = 0x003a0000,
211 .cpu_name = "POWER5 (gr)",
212 .cpu_features = CPU_FTRS_POWER5,
213 .cpu_user_features = COMMON_USER_PPC64,
214 .icache_bsize = 128,
215 .dcache_bsize = 128,
216 .num_pmcs = 6,
217 .cpu_setup = __setup_cpu_power4,
218#ifdef CONFIG_OPROFILE
219 .oprofile_cpu_type = "ppc64/power5",
220 .oprofile_model = &op_model_power4,
221#endif
222 },
223 { /* Power5 */
224 .pvr_mask = 0xffff0000,
225 .pvr_value = 0x003b0000,
226 .cpu_name = "POWER5 (gs)",
227 .cpu_features = CPU_FTRS_POWER5,
228 .cpu_user_features = COMMON_USER_PPC64,
229 .icache_bsize = 128,
230 .dcache_bsize = 128,
231 .num_pmcs = 6,
232 .cpu_setup = __setup_cpu_power4,
233#ifdef CONFIG_OPROFILE
234 .oprofile_cpu_type = "ppc64/power5",
235 .oprofile_model = &op_model_power4,
236#endif
237 },
238 { /* BE DD1.x */
239 .pvr_mask = 0xffff0000,
240 .pvr_value = 0x00700000,
241 .cpu_name = "Cell Broadband Engine",
242 .cpu_features = CPU_FTRS_CELL,
243 .cpu_user_features = COMMON_USER_PPC64 |
244 PPC_FEATURE_HAS_ALTIVEC_COMP,
245 .icache_bsize = 128,
246 .dcache_bsize = 128,
247 .cpu_setup = __setup_cpu_be,
248 },
249 { /* default match */
250 .pvr_mask = 0x00000000,
251 .pvr_value = 0x00000000,
252 .cpu_name = "POWER4 (compatible)",
253 .cpu_features = CPU_FTRS_COMPATIBLE,
254 .cpu_user_features = COMMON_USER_PPC64,
255 .icache_bsize = 128,
256 .dcache_bsize = 128,
257 .num_pmcs = 6,
258 .cpu_setup = __setup_cpu_power4,
259 }
260};