Commit 4920960f authored by Stephen Rothwell's avatar Stephen Rothwell

powerpc: consolidate cputable.c

Also simplify arch/ppc64/kernel/Makefile
Signed-off-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
parent 7e130edf
...@@ -10,7 +10,7 @@ CFLAGS_prom_init.o += -fPIC ...@@ -10,7 +10,7 @@ CFLAGS_prom_init.o += -fPIC
CFLAGS_btext.o += -fPIC CFLAGS_btext.o += -fPIC
endif endif
obj-y := semaphore.o obj-y := semaphore.o cputable.o
obj-$(CONFIG_ALTIVEC) += vecemu.o vector.o obj-$(CONFIG_ALTIVEC) += vecemu.o vector.o
obj-$(CONFIG_POWER4) += idle_power4.o obj-$(CONFIG_POWER4) += idle_power4.o
......
/* /*
* arch/ppc/kernel/cputable.c
*
* Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org) * Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org)
* *
* Modifications for ppc64:
* Copyright (C) 2003 Dave Engebretsen <engebret@us.ibm.com>
*
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version * as published by the Free Software Foundation; either version
...@@ -20,7 +21,22 @@ ...@@ -20,7 +21,22 @@
#include <asm/cputable.h> #include <asm/cputable.h>
struct cpu_spec* cur_cpu_spec = NULL; struct cpu_spec* cur_cpu_spec = NULL;
#ifdef CONFIG_PPC64
EXPORT_SYMBOL(cur_cpu_spec);
#endif
/* NOTE:
* Unlike ppc32, ppc64 will only call this once for the boot CPU, it's
* the responsibility of the appropriate CPU save/restore functions to
* eventually copy these settings over. Those save/restore aren't yet
* part of the cputable though. That has to be fixed for both ppc32
* and ppc64
*/
#ifdef CONFIG_PPC64
extern void __setup_cpu_power3(unsigned long offset, struct cpu_spec* spec);
extern void __setup_cpu_power4(unsigned long offset, struct cpu_spec* spec);
extern void __setup_cpu_be(unsigned long offset, struct cpu_spec* spec);
#else
extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec); extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec);
extern void __setup_cpu_604(unsigned long offset, struct cpu_spec* spec); extern void __setup_cpu_604(unsigned long offset, struct cpu_spec* spec);
extern void __setup_cpu_750(unsigned long offset, struct cpu_spec* spec); extern void __setup_cpu_750(unsigned long offset, struct cpu_spec* spec);
...@@ -29,17 +45,16 @@ extern void __setup_cpu_750fx(unsigned long offset, struct cpu_spec* spec); ...@@ -29,17 +45,16 @@ extern void __setup_cpu_750fx(unsigned long offset, struct cpu_spec* spec);
extern void __setup_cpu_7400(unsigned long offset, struct cpu_spec* spec); extern void __setup_cpu_7400(unsigned long offset, struct cpu_spec* spec);
extern void __setup_cpu_7410(unsigned long offset, struct cpu_spec* spec); extern void __setup_cpu_7410(unsigned long offset, struct cpu_spec* spec);
extern void __setup_cpu_745x(unsigned long offset, struct cpu_spec* spec); extern void __setup_cpu_745x(unsigned long offset, struct cpu_spec* spec);
#endif /* CONFIG_PPC32 */
extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec); extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec);
#define CLASSIC_PPC (!defined(CONFIG_8xx) && !defined(CONFIG_4xx) && \
!defined(CONFIG_POWER3) && !defined(CONFIG_POWER4) && \
!defined(CONFIG_BOOKE))
/* This table only contains "desktop" CPUs, it need to be filled with embedded /* This table only contains "desktop" CPUs, it need to be filled with embedded
* ones as well... * ones as well...
*/ */
#define COMMON_PPC (PPC_FEATURE_32 | PPC_FEATURE_HAS_FPU | \ #define COMMON_USER (PPC_FEATURE_32 | PPC_FEATURE_HAS_FPU | \
PPC_FEATURE_HAS_MMU) PPC_FEATURE_HAS_MMU)
#define COMMON_USER_PPC64 (COMMON_USER | PPC_FEATURE_64)
/* We only set the spe features if the kernel was compiled with /* We only set the spe features if the kernel was compiled with
* spe support * spe support
...@@ -51,13 +66,243 @@ extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec); ...@@ -51,13 +66,243 @@ extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec);
#endif #endif
struct cpu_spec cpu_specs[] = { struct cpu_spec cpu_specs[] = {
#ifdef CONFIG_PPC64
{ /* Power3 */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00400000,
.cpu_name = "POWER3 (630)",
.cpu_features = CPU_FTRS_POWER3,
.cpu_user_features = COMMON_USER_PPC64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
.cpu_setup = __setup_cpu_power3,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/power3",
.oprofile_model = &op_model_rs64,
#endif
},
{ /* Power3+ */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00410000,
.cpu_name = "POWER3 (630+)",
.cpu_features = CPU_FTRS_POWER3,
.cpu_user_features = COMMON_USER_PPC64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
.cpu_setup = __setup_cpu_power3,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/power3",
.oprofile_model = &op_model_rs64,
#endif
},
{ /* Northstar */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00330000,
.cpu_name = "RS64-II (northstar)",
.cpu_features = CPU_FTRS_RS64,
.cpu_user_features = COMMON_USER_PPC64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
.cpu_setup = __setup_cpu_power3,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/rs64",
.oprofile_model = &op_model_rs64,
#endif
},
{ /* Pulsar */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00340000,
.cpu_name = "RS64-III (pulsar)",
.cpu_features = CPU_FTRS_RS64,
.cpu_user_features = COMMON_USER_PPC64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
.cpu_setup = __setup_cpu_power3,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/rs64",
.oprofile_model = &op_model_rs64,
#endif
},
{ /* I-star */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00360000,
.cpu_name = "RS64-III (icestar)",
.cpu_features = CPU_FTRS_RS64,
.cpu_user_features = COMMON_USER_PPC64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
.cpu_setup = __setup_cpu_power3,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/rs64",
.oprofile_model = &op_model_rs64,
#endif
},
{ /* S-star */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00370000,
.cpu_name = "RS64-IV (sstar)",
.cpu_features = CPU_FTRS_RS64,
.cpu_user_features = COMMON_USER_PPC64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
.cpu_setup = __setup_cpu_power3,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/rs64",
.oprofile_model = &op_model_rs64,
#endif
},
{ /* Power4 */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00350000,
.cpu_name = "POWER4 (gp)",
.cpu_features = CPU_FTRS_POWER4,
.cpu_user_features = COMMON_USER_PPC64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
.cpu_setup = __setup_cpu_power4,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/power4",
.oprofile_model = &op_model_rs64,
#endif
},
{ /* Power4+ */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00380000,
.cpu_name = "POWER4+ (gq)",
.cpu_features = CPU_FTRS_POWER4,
.cpu_user_features = COMMON_USER_PPC64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
.cpu_setup = __setup_cpu_power4,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/power4",
.oprofile_model = &op_model_power4,
#endif
},
{ /* PPC970 */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00390000,
.cpu_name = "PPC970",
.cpu_features = CPU_FTRS_PPC970,
.cpu_user_features = COMMON_USER_PPC64 |
PPC_FEATURE_HAS_ALTIVEC_COMP,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
.cpu_setup = __setup_cpu_ppc970,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/970",
.oprofile_model = &op_model_power4,
#endif
},
#endif /* CONFIG_PPC64 */
#if defined(CONFIG_PPC64) || defined(CONFIG_POWER4)
{ /* PPC970FX */
.pvr_mask = 0xffff0000,
.pvr_value = 0x003c0000,
.cpu_name = "PPC970FX",
#ifdef CONFIG_PPC32
.cpu_features = CPU_FTRS_970_32,
#else
.cpu_features = CPU_FTRS_PPC970,
#endif
.cpu_user_features = COMMON_USER_PPC64 |
PPC_FEATURE_HAS_ALTIVEC_COMP,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
.cpu_setup = __setup_cpu_ppc970,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/970",
.oprofile_model = &op_model_power4,
#endif
},
#endif /* defined(CONFIG_PPC64) || defined(CONFIG_POWER4) */
#ifdef CONFIG_PPC64
{ /* PPC970MP */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00440000,
.cpu_name = "PPC970MP",
.cpu_features = CPU_FTRS_PPC970,
.cpu_user_features = COMMON_USER_PPC64 |
PPC_FEATURE_HAS_ALTIVEC_COMP,
.icache_bsize = 128,
.dcache_bsize = 128,
.cpu_setup = __setup_cpu_ppc970,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/970",
.oprofile_model = &op_model_power4,
#endif
},
{ /* Power5 */
.pvr_mask = 0xffff0000,
.pvr_value = 0x003a0000,
.cpu_name = "POWER5 (gr)",
.cpu_features = CPU_FTRS_POWER5,
.cpu_user_features = COMMON_USER_PPC64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 6,
.cpu_setup = __setup_cpu_power4,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/power5",
.oprofile_model = &op_model_power4,
#endif
},
{ /* Power5 */
.pvr_mask = 0xffff0000,
.pvr_value = 0x003b0000,
.cpu_name = "POWER5 (gs)",
.cpu_features = CPU_FTRS_POWER5,
.cpu_user_features = COMMON_USER_PPC64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 6,
.cpu_setup = __setup_cpu_power4,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/power5",
.oprofile_model = &op_model_power4,
#endif
},
{ /* BE DD1.x */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00700000,
.cpu_name = "Cell Broadband Engine",
.cpu_features = CPU_FTRS_CELL,
.cpu_user_features = COMMON_USER_PPC64 |
PPC_FEATURE_HAS_ALTIVEC_COMP,
.icache_bsize = 128,
.dcache_bsize = 128,
.cpu_setup = __setup_cpu_be,
},
{ /* default match */
.pvr_mask = 0x00000000,
.pvr_value = 0x00000000,
.cpu_name = "POWER4 (compatible)",
.cpu_features = CPU_FTRS_COMPATIBLE,
.cpu_user_features = COMMON_USER_PPC64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 6,
.cpu_setup = __setup_cpu_power4,
}
#endif /* CONFIG_PPC64 */
#ifdef CONFIG_PPC32
#if CLASSIC_PPC #if CLASSIC_PPC
{ /* 601 */ { /* 601 */
.pvr_mask = 0xffff0000, .pvr_mask = 0xffff0000,
.pvr_value = 0x00010000, .pvr_value = 0x00010000,
.cpu_name = "601", .cpu_name = "601",
.cpu_features = CPU_FTRS_PPC601, .cpu_features = CPU_FTRS_PPC601,
.cpu_user_features = COMMON_PPC | PPC_FEATURE_601_INSTR | .cpu_user_features = COMMON_USER | PPC_FEATURE_601_INSTR |
PPC_FEATURE_UNIFIED_CACHE, PPC_FEATURE_UNIFIED_CACHE,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
...@@ -67,7 +312,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -67,7 +312,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x00030000, .pvr_value = 0x00030000,
.cpu_name = "603", .cpu_name = "603",
.cpu_features = CPU_FTRS_603, .cpu_features = CPU_FTRS_603,
.cpu_user_features = COMMON_PPC, .cpu_user_features = COMMON_USER,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.cpu_setup = __setup_cpu_603 .cpu_setup = __setup_cpu_603
...@@ -77,7 +322,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -77,7 +322,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x00060000, .pvr_value = 0x00060000,
.cpu_name = "603e", .cpu_name = "603e",
.cpu_features = CPU_FTRS_603, .cpu_features = CPU_FTRS_603,
.cpu_user_features = COMMON_PPC, .cpu_user_features = COMMON_USER,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.cpu_setup = __setup_cpu_603 .cpu_setup = __setup_cpu_603
...@@ -87,7 +332,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -87,7 +332,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x00070000, .pvr_value = 0x00070000,
.cpu_name = "603ev", .cpu_name = "603ev",
.cpu_features = CPU_FTRS_603, .cpu_features = CPU_FTRS_603,
.cpu_user_features = COMMON_PPC, .cpu_user_features = COMMON_USER,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.cpu_setup = __setup_cpu_603 .cpu_setup = __setup_cpu_603
...@@ -97,7 +342,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -97,7 +342,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x00040000, .pvr_value = 0x00040000,
.cpu_name = "604", .cpu_name = "604",
.cpu_features = CPU_FTRS_604, .cpu_features = CPU_FTRS_604,
.cpu_user_features = COMMON_PPC, .cpu_user_features = COMMON_USER,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 2, .num_pmcs = 2,
...@@ -108,7 +353,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -108,7 +353,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x00090000, .pvr_value = 0x00090000,
.cpu_name = "604e", .cpu_name = "604e",
.cpu_features = CPU_FTRS_604, .cpu_features = CPU_FTRS_604,
.cpu_user_features = COMMON_PPC, .cpu_user_features = COMMON_USER,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 4, .num_pmcs = 4,
...@@ -119,7 +364,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -119,7 +364,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x00090000, .pvr_value = 0x00090000,
.cpu_name = "604r", .cpu_name = "604r",
.cpu_features = CPU_FTRS_604, .cpu_features = CPU_FTRS_604,
.cpu_user_features = COMMON_PPC, .cpu_user_features = COMMON_USER,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 4, .num_pmcs = 4,
...@@ -130,7 +375,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -130,7 +375,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x000a0000, .pvr_value = 0x000a0000,
.cpu_name = "604ev", .cpu_name = "604ev",
.cpu_features = CPU_FTRS_604, .cpu_features = CPU_FTRS_604,
.cpu_user_features = COMMON_PPC, .cpu_user_features = COMMON_USER,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 4, .num_pmcs = 4,
...@@ -141,7 +386,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -141,7 +386,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x00084202, .pvr_value = 0x00084202,
.cpu_name = "740/750", .cpu_name = "740/750",
.cpu_features = CPU_FTRS_740_NOTAU, .cpu_features = CPU_FTRS_740_NOTAU,
.cpu_user_features = COMMON_PPC, .cpu_user_features = COMMON_USER,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 4, .num_pmcs = 4,
...@@ -152,7 +397,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -152,7 +397,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x00080100, .pvr_value = 0x00080100,
.cpu_name = "750CX", .cpu_name = "750CX",
.cpu_features = CPU_FTRS_750, .cpu_features = CPU_FTRS_750,
.cpu_user_features = COMMON_PPC, .cpu_user_features = COMMON_USER,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 4, .num_pmcs = 4,
...@@ -163,7 +408,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -163,7 +408,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x00082200, .pvr_value = 0x00082200,
.cpu_name = "750CX", .cpu_name = "750CX",
.cpu_features = CPU_FTRS_750, .cpu_features = CPU_FTRS_750,
.cpu_user_features = COMMON_PPC, .cpu_user_features = COMMON_USER,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 4, .num_pmcs = 4,
...@@ -174,7 +419,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -174,7 +419,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x00082210, .pvr_value = 0x00082210,
.cpu_name = "750CXe", .cpu_name = "750CXe",
.cpu_features = CPU_FTRS_750, .cpu_features = CPU_FTRS_750,
.cpu_user_features = COMMON_PPC, .cpu_user_features = COMMON_USER,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 4, .num_pmcs = 4,
...@@ -185,7 +430,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -185,7 +430,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x00083214, .pvr_value = 0x00083214,
.cpu_name = "750CXe", .cpu_name = "750CXe",
.cpu_features = CPU_FTRS_750, .cpu_features = CPU_FTRS_750,
.cpu_user_features = COMMON_PPC, .cpu_user_features = COMMON_USER,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 4, .num_pmcs = 4,
...@@ -196,7 +441,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -196,7 +441,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x00083000, .pvr_value = 0x00083000,
.cpu_name = "745/755", .cpu_name = "745/755",
.cpu_features = CPU_FTRS_750, .cpu_features = CPU_FTRS_750,
.cpu_user_features = COMMON_PPC, .cpu_user_features = COMMON_USER,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 4, .num_pmcs = 4,
...@@ -207,7 +452,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -207,7 +452,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x70000100, .pvr_value = 0x70000100,
.cpu_name = "750FX", .cpu_name = "750FX",
.cpu_features = CPU_FTRS_750FX1, .cpu_features = CPU_FTRS_750FX1,
.cpu_user_features = COMMON_PPC, .cpu_user_features = COMMON_USER,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 4, .num_pmcs = 4,
...@@ -218,7 +463,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -218,7 +463,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x70000200, .pvr_value = 0x70000200,
.cpu_name = "750FX", .cpu_name = "750FX",
.cpu_features = CPU_FTRS_750FX2, .cpu_features = CPU_FTRS_750FX2,
.cpu_user_features = COMMON_PPC, .cpu_user_features = COMMON_USER,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 4, .num_pmcs = 4,
...@@ -229,7 +474,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -229,7 +474,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x70000000, .pvr_value = 0x70000000,
.cpu_name = "750FX", .cpu_name = "750FX",
.cpu_features = CPU_FTRS_750FX, .cpu_features = CPU_FTRS_750FX,
.cpu_user_features = COMMON_PPC, .cpu_user_features = COMMON_USER,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 4, .num_pmcs = 4,
...@@ -240,7 +485,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -240,7 +485,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x70020000, .pvr_value = 0x70020000,
.cpu_name = "750GX", .cpu_name = "750GX",
.cpu_features = CPU_FTRS_750GX, .cpu_features = CPU_FTRS_750GX,
.cpu_user_features = COMMON_PPC, .cpu_user_features = COMMON_USER,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 4, .num_pmcs = 4,
...@@ -251,7 +496,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -251,7 +496,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x00080000, .pvr_value = 0x00080000,
.cpu_name = "740/750", .cpu_name = "740/750",
.cpu_features = CPU_FTRS_740, .cpu_features = CPU_FTRS_740,
.cpu_user_features = COMMON_PPC, .cpu_user_features = COMMON_USER,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 4, .num_pmcs = 4,
...@@ -262,7 +507,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -262,7 +507,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x000c1101, .pvr_value = 0x000c1101,
.cpu_name = "7400 (1.1)", .cpu_name = "7400 (1.1)",
.cpu_features = CPU_FTRS_7400_NOTAU, .cpu_features = CPU_FTRS_7400_NOTAU,
.cpu_user_features = COMMON_PPC | PPC_FEATURE_HAS_ALTIVEC_COMP, .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 4, .num_pmcs = 4,
...@@ -273,7 +518,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -273,7 +518,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x000c0000, .pvr_value = 0x000c0000,
.cpu_name = "7400", .cpu_name = "7400",
.cpu_features = CPU_FTRS_7400, .cpu_features = CPU_FTRS_7400,
.cpu_user_features = COMMON_PPC | PPC_FEATURE_HAS_ALTIVEC_COMP, .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 4, .num_pmcs = 4,
...@@ -284,7 +529,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -284,7 +529,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x800c0000, .pvr_value = 0x800c0000,
.cpu_name = "7410", .cpu_name = "7410",
.cpu_features = CPU_FTRS_7400, .cpu_features = CPU_FTRS_7400,
.cpu_user_features = COMMON_PPC | PPC_FEATURE_HAS_ALTIVEC_COMP, .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 4, .num_pmcs = 4,
...@@ -295,7 +540,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -295,7 +540,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x80000200, .pvr_value = 0x80000200,
.cpu_name = "7450", .cpu_name = "7450",
.cpu_features = CPU_FTRS_7450_20, .cpu_features = CPU_FTRS_7450_20,
.cpu_user_features = COMMON_PPC | PPC_FEATURE_HAS_ALTIVEC_COMP, .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 6, .num_pmcs = 6,
...@@ -306,7 +551,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -306,7 +551,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x80000201, .pvr_value = 0x80000201,
.cpu_name = "7450", .cpu_name = "7450",
.cpu_features = CPU_FTRS_7450_21, .cpu_features = CPU_FTRS_7450_21,
.cpu_user_features = COMMON_PPC | PPC_FEATURE_HAS_ALTIVEC_COMP, .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 6, .num_pmcs = 6,
...@@ -317,7 +562,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -317,7 +562,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x80000000, .pvr_value = 0x80000000,
.cpu_name = "7450", .cpu_name = "7450",
.cpu_features = CPU_FTRS_7450_23, .cpu_features = CPU_FTRS_7450_23,
.cpu_user_features = COMMON_PPC | PPC_FEATURE_HAS_ALTIVEC_COMP, .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 6, .num_pmcs = 6,
...@@ -328,7 +573,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -328,7 +573,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x80010100, .pvr_value = 0x80010100,
.cpu_name = "7455", .cpu_name = "7455",
.cpu_features = CPU_FTRS_7455_1, .cpu_features = CPU_FTRS_7455_1,
.cpu_user_features = COMMON_PPC | PPC_FEATURE_HAS_ALTIVEC_COMP, .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 6, .num_pmcs = 6,
...@@ -339,7 +584,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -339,7 +584,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x80010200, .pvr_value = 0x80010200,
.cpu_name = "7455", .cpu_name = "7455",
.cpu_features = CPU_FTRS_7455_20, .cpu_features = CPU_FTRS_7455_20,
.cpu_user_features = COMMON_PPC | PPC_FEATURE_HAS_ALTIVEC_COMP, .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 6, .num_pmcs = 6,
...@@ -350,7 +595,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -350,7 +595,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x80010000, .pvr_value = 0x80010000,
.cpu_name = "7455", .cpu_name = "7455",
.cpu_features = CPU_FTRS_7455, .cpu_features = CPU_FTRS_7455,
.cpu_user_features = COMMON_PPC | PPC_FEATURE_HAS_ALTIVEC_COMP, .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 6, .num_pmcs = 6,
...@@ -361,7 +606,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -361,7 +606,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x80020100, .pvr_value = 0x80020100,
.cpu_name = "7447/7457", .cpu_name = "7447/7457",
.cpu_features = CPU_FTRS_7447_10, .cpu_features = CPU_FTRS_7447_10,
.cpu_user_features = COMMON_PPC | PPC_FEATURE_HAS_ALTIVEC_COMP, .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 6, .num_pmcs = 6,
...@@ -372,7 +617,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -372,7 +617,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x80020101, .pvr_value = 0x80020101,
.cpu_name = "7447/7457", .cpu_name = "7447/7457",
.cpu_features = CPU_FTRS_7447_10, .cpu_features = CPU_FTRS_7447_10,
.cpu_user_features = COMMON_PPC | PPC_FEATURE_HAS_ALTIVEC_COMP, .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 6, .num_pmcs = 6,
...@@ -383,7 +628,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -383,7 +628,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x80020000, .pvr_value = 0x80020000,
.cpu_name = "7447/7457", .cpu_name = "7447/7457",
.cpu_features = CPU_FTRS_7447, .cpu_features = CPU_FTRS_7447,
.cpu_user_features = COMMON_PPC | PPC_FEATURE_HAS_ALTIVEC_COMP, .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 6, .num_pmcs = 6,
...@@ -394,7 +639,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -394,7 +639,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x80030000, .pvr_value = 0x80030000,
.cpu_name = "7447A", .cpu_name = "7447A",
.cpu_features = CPU_FTRS_7447A, .cpu_features = CPU_FTRS_7447A,
.cpu_user_features = COMMON_PPC | PPC_FEATURE_HAS_ALTIVEC_COMP, .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 6, .num_pmcs = 6,
...@@ -405,7 +650,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -405,7 +650,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x80040000, .pvr_value = 0x80040000,
.cpu_name = "7448", .cpu_name = "7448",
.cpu_features = CPU_FTRS_7447A, .cpu_features = CPU_FTRS_7447A,
.cpu_user_features = COMMON_PPC | PPC_FEATURE_HAS_ALTIVEC_COMP, .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.num_pmcs = 6, .num_pmcs = 6,
...@@ -416,7 +661,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -416,7 +661,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x00810000, .pvr_value = 0x00810000,
.cpu_name = "82xx", .cpu_name = "82xx",
.cpu_features = CPU_FTRS_82XX, .cpu_features = CPU_FTRS_82XX,
.cpu_user_features = COMMON_PPC, .cpu_user_features = COMMON_USER,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.cpu_setup = __setup_cpu_603 .cpu_setup = __setup_cpu_603
...@@ -426,7 +671,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -426,7 +671,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x00820000, .pvr_value = 0x00820000,
.cpu_name = "G2_LE", .cpu_name = "G2_LE",
.cpu_features = CPU_FTRS_G2_LE, .cpu_features = CPU_FTRS_G2_LE,
.cpu_user_features = COMMON_PPC, .cpu_user_features = COMMON_USER,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.cpu_setup = __setup_cpu_603 .cpu_setup = __setup_cpu_603
...@@ -436,7 +681,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -436,7 +681,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x00830000, .pvr_value = 0x00830000,
.cpu_name = "e300", .cpu_name = "e300",
.cpu_features = CPU_FTRS_E300, .cpu_features = CPU_FTRS_E300,
.cpu_user_features = COMMON_PPC, .cpu_user_features = COMMON_USER,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
.cpu_setup = __setup_cpu_603 .cpu_setup = __setup_cpu_603
...@@ -446,66 +691,11 @@ struct cpu_spec cpu_specs[] = { ...@@ -446,66 +691,11 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x00000000, .pvr_value = 0x00000000,
.cpu_name = "(generic PPC)", .cpu_name = "(generic PPC)",
.cpu_features = CPU_FTRS_CLASSIC32, .cpu_features = CPU_FTRS_CLASSIC32,
.cpu_user_features = COMMON_PPC, .cpu_user_features = COMMON_USER,
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
}, },
#endif /* CLASSIC_PPC */ #endif /* CLASSIC_PPC */
#ifdef CONFIG_PPC64BRIDGE
{ /* Power3 */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00400000,
.cpu_name = "Power3 (630)",
.cpu_features = CPU_FTRS_POWER3_32,
.cpu_user_features = COMMON_PPC | PPC_FEATURE_64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
},
{ /* Power3+ */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00410000,
.cpu_name = "Power3 (630+)",
.cpu_features = CPU_FTRS_POWER3_32,
.cpu_user_features = COMMON_PPC | PPC_FEATURE_64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
},
{ /* I-star */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00360000,
.cpu_name = "I-star",
.cpu_features = CPU_FTRS_POWER3_32,
.cpu_user_features = COMMON_PPC | PPC_FEATURE_64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
},
{ /* S-star */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00370000,
.cpu_name = "S-star",
.cpu_features = CPU_FTRS_POWER3_32,
.cpu_user_features = COMMON_PPC | PPC_FEATURE_64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
},
#endif /* CONFIG_PPC64BRIDGE */
#ifdef CONFIG_POWER4
{ /* PPC970FX */
.pvr_mask = 0xffff0000,
.pvr_value = 0x003c0000,
.cpu_name = "PPC970FX",
.cpu_features = CPU_FTRS_970_32,
.cpu_user_features = COMMON_PPC | PPC_FEATURE_64 | PPC_FEATURE_HAS_ALTIVEC_COMP,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
.cpu_setup = __setup_cpu_ppc970
},
#endif /* CONFIG_POWER4 */
#ifdef CONFIG_8xx #ifdef CONFIG_8xx
{ /* 8xx */ { /* 8xx */
.pvr_mask = 0xffff0000, .pvr_mask = 0xffff0000,
...@@ -664,7 +854,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -664,7 +854,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x40000850, .pvr_value = 0x40000850,
.cpu_name = "440EP Rev. A", .cpu_name = "440EP Rev. A",
.cpu_features = CPU_FTRS_44X, .cpu_features = CPU_FTRS_44X,
.cpu_user_features = COMMON_PPC, /* 440EP has an FPU */ .cpu_user_features = COMMON_USER, /* 440EP has an FPU */
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
}, },
...@@ -673,7 +863,7 @@ struct cpu_spec cpu_specs[] = { ...@@ -673,7 +863,7 @@ struct cpu_spec cpu_specs[] = {
.pvr_value = 0x400008d3, .pvr_value = 0x400008d3,
.cpu_name = "440EP Rev. B", .cpu_name = "440EP Rev. B",
.cpu_features = CPU_FTRS_44X, .cpu_features = CPU_FTRS_44X,
.cpu_user_features = COMMON_PPC, /* 440EP has an FPU */ .cpu_user_features = COMMON_USER, /* 440EP has an FPU */
.icache_bsize = 32, .icache_bsize = 32,
.dcache_bsize = 32, .dcache_bsize = 32,
}, },
...@@ -803,4 +993,5 @@ struct cpu_spec cpu_specs[] = { ...@@ -803,4 +993,5 @@ struct cpu_spec cpu_specs[] = {
.dcache_bsize = 32, .dcache_bsize = 32,
} }
#endif /* !CLASSIC_PPC */ #endif /* !CLASSIC_PPC */
#endif /* CONFIG_PPC32 */
}; };
...@@ -15,7 +15,7 @@ extra-y += vmlinux.lds ...@@ -15,7 +15,7 @@ extra-y += vmlinux.lds
obj-y := entry.o traps.o irq.o idle.o time.o misc.o \ obj-y := entry.o traps.o irq.o idle.o time.o misc.o \
process.o signal.o ptrace.o align.o \ process.o signal.o ptrace.o align.o \
syscalls.o setup.o \ syscalls.o setup.o \
cputable.o ppc_htab.o perfmon.o ppc_htab.o perfmon.o
obj-$(CONFIG_6xx) += l2cr.o cpu_setup_6xx.o obj-$(CONFIG_6xx) += l2cr.o cpu_setup_6xx.o
obj-$(CONFIG_SOFTWARE_SUSPEND) += swsusp.o obj-$(CONFIG_SOFTWARE_SUSPEND) += swsusp.o
obj-$(CONFIG_POWER4) += cpu_setup_power4.o obj-$(CONFIG_POWER4) += cpu_setup_power4.o
...@@ -39,7 +39,7 @@ endif ...@@ -39,7 +39,7 @@ endif
else else
obj-y := irq.o idle.o time.o \ obj-y := irq.o idle.o time.o \
signal.o ptrace.o align.o \ signal.o ptrace.o align.o \
syscalls.o cputable.o perfmon.o syscalls.o perfmon.o
obj-$(CONFIG_6xx) += l2cr.o cpu_setup_6xx.o obj-$(CONFIG_6xx) += l2cr.o cpu_setup_6xx.o
obj-$(CONFIG_SOFTWARE_SUSPEND) += swsusp.o obj-$(CONFIG_SOFTWARE_SUSPEND) += swsusp.o
obj-$(CONFIG_MODULES) += module.o obj-$(CONFIG_MODULES) += module.o
......
...@@ -7,13 +7,17 @@ ifneq ($(CONFIG_PPC_MERGE),y) ...@@ -7,13 +7,17 @@ ifneq ($(CONFIG_PPC_MERGE),y)
EXTRA_CFLAGS += -mno-minimal-toc EXTRA_CFLAGS += -mno-minimal-toc
extra-y := head.o vmlinux.lds extra-y := head.o vmlinux.lds
obj-y := setup.o entry.o irq.o idle.o dma.o \ obj-y := setup.o entry.o misc.o prom.o
time.o signal.o syscalls.o misc.o ptrace.o \
endif
obj-y += irq.o idle.o dma.o \
time.o signal.o syscalls.o ptrace.o \
align.o bitops.o pacaData.o \ align.o bitops.o pacaData.o \
udbg.o binfmt_elf32.o sys_ppc32.o ioctl32.o \ udbg.o binfmt_elf32.o sys_ppc32.o ioctl32.o \
ptrace32.o signal32.o rtc.o \ ptrace32.o signal32.o rtc.o \
cputable.o cpu_setup_power4.o \ cpu_setup_power4.o \
iommu.o sysfs.o vdso.o pmc.o firmware.o prom.o iommu.o sysfs.o vdso.o pmc.o firmware.o
obj-y += vdso32/ vdso64/ obj-y += vdso32/ vdso64/
obj-$(CONFIG_PPC_OF) += of_device.o obj-$(CONFIG_PPC_OF) += of_device.o
...@@ -22,7 +26,10 @@ pci-obj-$(CONFIG_PPC_MULTIPLATFORM) += pci_dn.o pci_direct_iommu.o ...@@ -22,7 +26,10 @@ pci-obj-$(CONFIG_PPC_MULTIPLATFORM) += pci_dn.o pci_direct_iommu.o
obj-$(CONFIG_PCI) += pci.o pci_iommu.o iomap.o $(pci-obj-y) obj-$(CONFIG_PCI) += pci.o pci_iommu.o iomap.o $(pci-obj-y)
obj-$(CONFIG_PPC_MULTIPLATFORM) += nvram.o i8259.o prom_init.o obj-$(CONFIG_PPC_MULTIPLATFORM) += nvram.o i8259.o
ifneq ($(CONFIG_PPC_MERGE),y)
obj-$(CONFIG_PPC_MULTIPLATFORM) += prom_init.o
endif
obj-$(CONFIG_PPC_PSERIES) += rtasd.o ras.o udbg_16550.o obj-$(CONFIG_PPC_PSERIES) += rtasd.o ras.o udbg_16550.o
...@@ -34,22 +41,29 @@ obj-$(CONFIG_EEH) += eeh.o ...@@ -34,22 +41,29 @@ obj-$(CONFIG_EEH) += eeh.o
obj-$(CONFIG_PROC_FS) += proc_ppc64.o obj-$(CONFIG_PROC_FS) += proc_ppc64.o
obj-$(CONFIG_RTAS_FLASH) += rtas_flash.o obj-$(CONFIG_RTAS_FLASH) += rtas_flash.o
obj-$(CONFIG_SMP) += smp.o obj-$(CONFIG_SMP) += smp.o
obj-$(CONFIG_MODULES) += module.o ppc_ksyms.o obj-$(CONFIG_MODULES) += module.o
ifneq ($(CONFIG_PPC_MERGE),y)
obj-$(CONFIG_MODULES) += ppc_ksyms.o
endif
obj-$(CONFIG_PPC_RTAS) += rtas.o rtas_pci.o obj-$(CONFIG_PPC_RTAS) += rtas.o rtas_pci.o
obj-$(CONFIG_RTAS_PROC) += rtas-proc.o obj-$(CONFIG_RTAS_PROC) += rtas-proc.o
obj-$(CONFIG_SCANLOG) += scanlog.o obj-$(CONFIG_SCANLOG) += scanlog.o
obj-$(CONFIG_LPARCFG) += lparcfg.o obj-$(CONFIG_LPARCFG) += lparcfg.o
obj-$(CONFIG_HVC_CONSOLE) += hvconsole.o obj-$(CONFIG_HVC_CONSOLE) += hvconsole.o
ifneq ($(CONFIG_PPC_MERGE),y)
obj-$(CONFIG_BOOTX_TEXT) += btext.o obj-$(CONFIG_BOOTX_TEXT) += btext.o
endif
obj-$(CONFIG_HVCS) += hvcserver.o obj-$(CONFIG_HVCS) += hvcserver.o
obj-$(CONFIG_IBMVIO) += vio.o $(vio-obj-y) obj-$(CONFIG_IBMVIO) += vio.o
obj-$(CONFIG_XICS) += xics.o obj-$(CONFIG_XICS) += xics.o
ifneq ($(CONFIG_PPC_MERGE),y)
obj-$(CONFIG_MPIC) += mpic.o obj-$(CONFIG_MPIC) += mpic.o
obj-$(CONFIG_PPC_PMAC) += pmac_setup.o pmac_feature.o pmac_pci.o \ obj-$(CONFIG_PPC_PMAC) += pmac_setup.o pmac_feature.o pmac_pci.o \
pmac_time.o pmac_nvram.o pmac_low_i2c.o \ pmac_time.o pmac_nvram.o pmac_low_i2c.o \
udbg_scc.o udbg_scc.o
endif
obj-$(CONFIG_PPC_MAPLE) += maple_setup.o maple_pci.o maple_time.o \ obj-$(CONFIG_PPC_MAPLE) += maple_setup.o maple_pci.o maple_time.o \
udbg_16550.o udbg_16550.o
...@@ -57,7 +71,9 @@ obj-$(CONFIG_PPC_MAPLE) += maple_setup.o maple_pci.o maple_time.o \ ...@@ -57,7 +71,9 @@ obj-$(CONFIG_PPC_MAPLE) += maple_setup.o maple_pci.o maple_time.o \
obj-$(CONFIG_U3_DART) += u3_iommu.o obj-$(CONFIG_U3_DART) += u3_iommu.o
ifdef CONFIG_SMP ifdef CONFIG_SMP
ifneq ($(CONFIG_PPC_MERGE),y)
obj-$(CONFIG_PPC_PMAC) += pmac_smp.o smp-tbsync.o obj-$(CONFIG_PPC_PMAC) += pmac_smp.o smp-tbsync.o
endif
obj-$(CONFIG_PPC_MAPLE) += smp-tbsync.o obj-$(CONFIG_PPC_MAPLE) += smp-tbsync.o
endif endif
...@@ -65,62 +81,9 @@ obj-$(CONFIG_KPROBES) += kprobes.o ...@@ -65,62 +81,9 @@ obj-$(CONFIG_KPROBES) += kprobes.o
CFLAGS_ioctl32.o += -Ifs/ CFLAGS_ioctl32.o += -Ifs/
ifneq ($(CONFIG_PPC_MERGE),y)
ifeq ($(CONFIG_PPC_ISERIES),y) ifeq ($(CONFIG_PPC_ISERIES),y)
arch/ppc64/kernel/head.o: arch/powerpc/kernel/lparmap.s arch/ppc64/kernel/head.o: arch/powerpc/kernel/lparmap.s
AFLAGS_head.o += -Iarch/powerpc/kernel AFLAGS_head.o += -Iarch/powerpc/kernel
endif endif
else
# Things still needed from here by the merged ppc code
obj-y := irq.o idle.o dma.o \
time.o signal.o syscalls.o ptrace.o \
align.o bitops.o pacaData.o \
udbg.o binfmt_elf32.o sys_ppc32.o ioctl32.o \
ptrace32.o signal32.o rtc.o \
cputable.o cpu_setup_power4.o \
iommu.o sysfs.o vdso.o pmc.o firmware.o
obj-y += vdso32/ vdso64/
pci-obj-$(CONFIG_PPC_MULTIPLATFORM) += pci_dn.o pci_direct_iommu.o
obj-$(CONFIG_PCI) += pci.o pci_iommu.o iomap.o $(pci-obj-y)
obj-$(CONFIG_PPC_MULTIPLATFORM) += nvram.o i8259.o
obj-$(CONFIG_PPC_PSERIES) += rtasd.o ras.o udbg_16550.o
obj-$(CONFIG_PPC_BPA) += bpa_setup.o bpa_iommu.o bpa_nvram.o \
bpa_iic.o spider-pic.o
obj-$(CONFIG_KEXEC) += machine_kexec.o
obj-$(CONFIG_EEH) += eeh.o
obj-$(CONFIG_PROC_FS) += proc_ppc64.o
obj-$(CONFIG_RTAS_FLASH) += rtas_flash.o
obj-$(CONFIG_SMP) += smp.o
obj-$(CONFIG_MODULES) += module.o
obj-$(CONFIG_PPC_RTAS) += rtas.o rtas_pci.o
obj-$(CONFIG_RTAS_PROC) += rtas-proc.o
obj-$(CONFIG_SCANLOG) += scanlog.o
obj-$(CONFIG_LPARCFG) += lparcfg.o
obj-$(CONFIG_HVC_CONSOLE) += hvconsole.o
obj-$(CONFIG_HVCS) += hvcserver.o
obj-$(CONFIG_IBMVIO) += vio.o
obj-$(CONFIG_XICS) += xics.o
obj-$(CONFIG_PPC_MAPLE) += maple_setup.o maple_pci.o maple_time.o \
udbg_16550.o
obj-$(CONFIG_U3_DART) += u3_iommu.o
ifdef CONFIG_SMP
obj-$(CONFIG_PPC_MAPLE) += smp-tbsync.o
endif
obj-$(CONFIG_KPROBES) += kprobes.o
CFLAGS_ioctl32.o += -Ifs/
endif endif
/*
* arch/ppc64/kernel/cputable.c
*
* Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org)
*
* Modifications for ppc64:
* Copyright (C) 2003 Dave Engebretsen <engebret@us.ibm.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
#include <linux/config.h>
#include <linux/string.h>
#include <linux/sched.h>
#include <linux/threads.h>
#include <linux/init.h>
#include <linux/module.h>
#include <asm/oprofile_impl.h>
#include <asm/cputable.h>
struct cpu_spec* cur_cpu_spec = NULL;
EXPORT_SYMBOL(cur_cpu_spec);
/* NOTE:
* Unlike ppc32, ppc64 will only call this once for the boot CPU, it's
* the responsibility of the appropriate CPU save/restore functions to
* eventually copy these settings over. Those save/restore aren't yet
* part of the cputable though. That has to be fixed for both ppc32
* and ppc64
*/
extern void __setup_cpu_power3(unsigned long offset, struct cpu_spec* spec);
extern void __setup_cpu_power4(unsigned long offset, struct cpu_spec* spec);
extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec);
extern void __setup_cpu_be(unsigned long offset, struct cpu_spec* spec);
struct cpu_spec cpu_specs[] = {
{ /* Power3 */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00400000,
.cpu_name = "POWER3 (630)",
.cpu_features = CPU_FTRS_POWER3,
.cpu_user_features = COMMON_USER_PPC64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
.cpu_setup = __setup_cpu_power3,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/power3",
.oprofile_model = &op_model_rs64,
#endif
},
{ /* Power3+ */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00410000,
.cpu_name = "POWER3 (630+)",
.cpu_features = CPU_FTRS_POWER3,
.cpu_user_features = COMMON_USER_PPC64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
.cpu_setup = __setup_cpu_power3,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/power3",
.oprofile_model = &op_model_rs64,
#endif
},
{ /* Northstar */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00330000,
.cpu_name = "RS64-II (northstar)",
.cpu_features = CPU_FTRS_RS64,
.cpu_user_features = COMMON_USER_PPC64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
.cpu_setup = __setup_cpu_power3,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/rs64",
.oprofile_model = &op_model_rs64,
#endif
},
{ /* Pulsar */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00340000,
.cpu_name = "RS64-III (pulsar)",
.cpu_features = CPU_FTRS_RS64,
.cpu_user_features = COMMON_USER_PPC64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
.cpu_setup = __setup_cpu_power3,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/rs64",
.oprofile_model = &op_model_rs64,
#endif
},
{ /* I-star */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00360000,
.cpu_name = "RS64-III (icestar)",
.cpu_features = CPU_FTRS_RS64,
.cpu_user_features = COMMON_USER_PPC64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
.cpu_setup = __setup_cpu_power3,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/rs64",
.oprofile_model = &op_model_rs64,
#endif
},
{ /* S-star */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00370000,
.cpu_name = "RS64-IV (sstar)",
.cpu_features = CPU_FTRS_RS64,
.cpu_user_features = COMMON_USER_PPC64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
.cpu_setup = __setup_cpu_power3,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/rs64",
.oprofile_model = &op_model_rs64,
#endif
},
{ /* Power4 */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00350000,
.cpu_name = "POWER4 (gp)",
.cpu_features = CPU_FTRS_POWER4,
.cpu_user_features = COMMON_USER_PPC64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
.cpu_setup = __setup_cpu_power4,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/power4",
.oprofile_model = &op_model_rs64,
#endif
},
{ /* Power4+ */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00380000,
.cpu_name = "POWER4+ (gq)",
.cpu_features = CPU_FTRS_POWER4,
.cpu_user_features = COMMON_USER_PPC64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
.cpu_setup = __setup_cpu_power4,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/power4",
.oprofile_model = &op_model_power4,
#endif
},
{ /* PPC970 */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00390000,
.cpu_name = "PPC970",
.cpu_features = CPU_FTRS_PPC970,
.cpu_user_features = COMMON_USER_PPC64 |
PPC_FEATURE_HAS_ALTIVEC_COMP,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
.cpu_setup = __setup_cpu_ppc970,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/970",
.oprofile_model = &op_model_power4,
#endif
},
{ /* PPC970FX */
.pvr_mask = 0xffff0000,
.pvr_value = 0x003c0000,
.cpu_name = "PPC970FX",
.cpu_features = CPU_FTRS_PPC970,
.cpu_user_features = COMMON_USER_PPC64 |
PPC_FEATURE_HAS_ALTIVEC_COMP,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 8,
.cpu_setup = __setup_cpu_ppc970,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/970",
.oprofile_model = &op_model_power4,
#endif
},
{ /* PPC970MP */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00440000,
.cpu_name = "PPC970MP",
.cpu_features = CPU_FTRS_PPC970,
.cpu_user_features = COMMON_USER_PPC64 |
PPC_FEATURE_HAS_ALTIVEC_COMP,
.icache_bsize = 128,
.dcache_bsize = 128,
.cpu_setup = __setup_cpu_ppc970,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/970",
.oprofile_model = &op_model_power4,
#endif
},
{ /* Power5 */
.pvr_mask = 0xffff0000,
.pvr_value = 0x003a0000,
.cpu_name = "POWER5 (gr)",
.cpu_features = CPU_FTRS_POWER5,
.cpu_user_features = COMMON_USER_PPC64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 6,
.cpu_setup = __setup_cpu_power4,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/power5",
.oprofile_model = &op_model_power4,
#endif
},
{ /* Power5 */
.pvr_mask = 0xffff0000,
.pvr_value = 0x003b0000,
.cpu_name = "POWER5 (gs)",
.cpu_features = CPU_FTRS_POWER5,
.cpu_user_features = COMMON_USER_PPC64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 6,
.cpu_setup = __setup_cpu_power4,
#ifdef CONFIG_OPROFILE
.oprofile_cpu_type = "ppc64/power5",
.oprofile_model = &op_model_power4,
#endif
},
{ /* BE DD1.x */
.pvr_mask = 0xffff0000,
.pvr_value = 0x00700000,
.cpu_name = "Cell Broadband Engine",
.cpu_features = CPU_FTRS_CELL,
.cpu_user_features = COMMON_USER_PPC64 |
PPC_FEATURE_HAS_ALTIVEC_COMP,
.icache_bsize = 128,
.dcache_bsize = 128,
.cpu_setup = __setup_cpu_be,
},
{ /* default match */
.pvr_mask = 0x00000000,
.pvr_value = 0x00000000,
.cpu_name = "POWER4 (compatible)",
.cpu_features = CPU_FTRS_COMPATIBLE,
.cpu_user_features = COMMON_USER_PPC64,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 6,
.cpu_setup = __setup_cpu_power4,
}
};
...@@ -119,9 +119,6 @@ extern void do_cpu_ftr_fixups(unsigned long offset); ...@@ -119,9 +119,6 @@ extern void do_cpu_ftr_fixups(unsigned long offset);
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
#define COMMON_USER_PPC64 (PPC_FEATURE_32 | PPC_FEATURE_64 | \
PPC_FEATURE_HAS_FPU | PPC_FEATURE_HAS_MMU)
#define CPU_FTR_PPCAS_ARCH_V2_BASE (CPU_FTR_SLB | \ #define CPU_FTR_PPCAS_ARCH_V2_BASE (CPU_FTR_SLB | \
CPU_FTR_TLBIEL | CPU_FTR_NOEXECUTE | \ CPU_FTR_TLBIEL | CPU_FTR_NOEXECUTE | \
CPU_FTR_NODSISRALIGN | CPU_FTR_CTRL) CPU_FTR_NODSISRALIGN | CPU_FTR_CTRL)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment