2005-04-17 02:20:36 +04:00
|
|
|
/*
|
|
|
|
* Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org)
|
|
|
|
*
|
2005-10-12 09:55:09 +04:00
|
|
|
* Modifications for ppc64:
|
|
|
|
* Copyright (C) 2003 Dave Engebretsen <engebret@us.ibm.com>
|
|
|
|
*
|
2005-04-17 02:20:36 +04:00
|
|
|
* 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/string.h>
|
|
|
|
#include <linux/sched.h>
|
|
|
|
#include <linux/threads.h>
|
|
|
|
#include <linux/init.h>
|
2005-09-28 00:13:12 +04:00
|
|
|
#include <linux/module.h>
|
|
|
|
|
|
|
|
#include <asm/oprofile_impl.h>
|
2005-04-17 02:20:36 +04:00
|
|
|
#include <asm/cputable.h>
|
2006-10-24 10:42:40 +04:00
|
|
|
#include <asm/prom.h> /* for PTRRELOC on ARCH=ppc */
|
2005-04-17 02:20:36 +04:00
|
|
|
|
2005-09-28 00:13:12 +04:00
|
|
|
struct cpu_spec* cur_cpu_spec = NULL;
|
2005-10-12 09:55:09 +04:00
|
|
|
EXPORT_SYMBOL(cur_cpu_spec);
|
2005-04-17 02:20:36 +04:00
|
|
|
|
2005-10-12 09:55:09 +04:00
|
|
|
/* 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
|
|
|
|
*/
|
2006-05-19 08:24:18 +04:00
|
|
|
#ifdef CONFIG_PPC32
|
2005-09-28 00:13:12 +04:00
|
|
|
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_750(unsigned long offset, struct cpu_spec* spec);
|
|
|
|
extern void __setup_cpu_750cx(unsigned long offset, struct cpu_spec* spec);
|
|
|
|
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_7410(unsigned long offset, struct cpu_spec* spec);
|
|
|
|
extern void __setup_cpu_745x(unsigned long offset, struct cpu_spec* spec);
|
2005-10-12 09:55:09 +04:00
|
|
|
#endif /* CONFIG_PPC32 */
|
2006-08-11 09:07:08 +04:00
|
|
|
#ifdef CONFIG_PPC64
|
2005-09-28 00:13:12 +04:00
|
|
|
extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec);
|
2006-10-05 08:41:41 +04:00
|
|
|
extern void __setup_cpu_ppc970MP(unsigned long offset, struct cpu_spec* spec);
|
2006-08-11 09:07:08 +04:00
|
|
|
extern void __restore_cpu_ppc970(void);
|
|
|
|
#endif /* CONFIG_PPC64 */
|
2005-04-17 02:20:36 +04:00
|
|
|
|
|
|
|
/* This table only contains "desktop" CPUs, it need to be filled with embedded
|
|
|
|
* ones as well...
|
|
|
|
*/
|
2005-10-12 09:55:09 +04:00
|
|
|
#define COMMON_USER (PPC_FEATURE_32 | PPC_FEATURE_HAS_FPU | \
|
|
|
|
PPC_FEATURE_HAS_MMU)
|
|
|
|
#define COMMON_USER_PPC64 (COMMON_USER | PPC_FEATURE_64)
|
2005-11-10 06:29:18 +03:00
|
|
|
#define COMMON_USER_POWER4 (COMMON_USER_PPC64 | PPC_FEATURE_POWER4)
|
2006-03-01 07:07:07 +03:00
|
|
|
#define COMMON_USER_POWER5 (COMMON_USER_PPC64 | PPC_FEATURE_POWER5 |\
|
|
|
|
PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
|
|
|
|
#define COMMON_USER_POWER5_PLUS (COMMON_USER_PPC64 | PPC_FEATURE_POWER5_PLUS|\
|
|
|
|
PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
|
2006-04-29 03:51:06 +04:00
|
|
|
#define COMMON_USER_POWER6 (COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_05 |\
|
2006-06-07 10:14:40 +04:00
|
|
|
PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \
|
|
|
|
PPC_FEATURE_TRUE_LE)
|
2006-09-06 23:35:57 +04:00
|
|
|
#define COMMON_USER_PA6T (COMMON_USER_PPC64 | PPC_FEATURE_PA6T |\
|
|
|
|
PPC_FEATURE_TRUE_LE | \
|
|
|
|
PPC_FEATURE_HAS_ALTIVEC_COMP)
|
2006-01-14 02:11:39 +03:00
|
|
|
#define COMMON_USER_BOOKE (PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \
|
|
|
|
PPC_FEATURE_BOOKE)
|
2005-04-17 02:20:36 +04:00
|
|
|
|
|
|
|
/* We only set the spe features if the kernel was compiled with
|
|
|
|
* spe support
|
|
|
|
*/
|
|
|
|
#ifdef CONFIG_SPE
|
2005-10-12 09:55:09 +04:00
|
|
|
#define PPC_FEATURE_SPE_COMP PPC_FEATURE_HAS_SPE
|
2005-04-17 02:20:36 +04:00
|
|
|
#else
|
2005-10-12 09:55:09 +04:00
|
|
|
#define PPC_FEATURE_SPE_COMP 0
|
2005-04-17 02:20:36 +04:00
|
|
|
#endif
|
|
|
|
|
2006-10-24 10:42:40 +04:00
|
|
|
static struct cpu_spec cpu_specs[] = {
|
2005-10-12 09:55:09 +04:00
|
|
|
#ifdef CONFIG_PPC64
|
|
|
|
{ /* Power3 */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x00400000,
|
|
|
|
.cpu_name = "POWER3 (630)",
|
|
|
|
.cpu_features = CPU_FTRS_POWER3,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER_PPC64|PPC_FEATURE_PPC_LE,
|
2005-10-12 09:55:09 +04:00
|
|
|
.icache_bsize = 128,
|
|
|
|
.dcache_bsize = 128,
|
|
|
|
.num_pmcs = 8,
|
2007-01-29 06:23:54 +03:00
|
|
|
.pmc_type = PPC_PMC_IBM,
|
2005-10-12 09:55:09 +04:00
|
|
|
.oprofile_cpu_type = "ppc64/power3",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_RS64,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "power3",
|
2005-10-12 09:55:09 +04:00
|
|
|
},
|
|
|
|
{ /* Power3+ */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x00410000,
|
|
|
|
.cpu_name = "POWER3 (630+)",
|
|
|
|
.cpu_features = CPU_FTRS_POWER3,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER_PPC64|PPC_FEATURE_PPC_LE,
|
2005-10-12 09:55:09 +04:00
|
|
|
.icache_bsize = 128,
|
|
|
|
.dcache_bsize = 128,
|
|
|
|
.num_pmcs = 8,
|
2007-01-29 06:23:54 +03:00
|
|
|
.pmc_type = PPC_PMC_IBM,
|
2005-10-12 09:55:09 +04:00
|
|
|
.oprofile_cpu_type = "ppc64/power3",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_RS64,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "power3",
|
2005-10-12 09:55:09 +04:00
|
|
|
},
|
|
|
|
{ /* 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,
|
2007-01-29 06:23:54 +03:00
|
|
|
.pmc_type = PPC_PMC_IBM,
|
2005-10-12 09:55:09 +04:00
|
|
|
.oprofile_cpu_type = "ppc64/rs64",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_RS64,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "rs64",
|
2005-10-12 09:55:09 +04:00
|
|
|
},
|
|
|
|
{ /* 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,
|
2007-01-29 06:23:54 +03:00
|
|
|
.pmc_type = PPC_PMC_IBM,
|
2005-10-12 09:55:09 +04:00
|
|
|
.oprofile_cpu_type = "ppc64/rs64",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_RS64,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "rs64",
|
2005-10-12 09:55:09 +04:00
|
|
|
},
|
|
|
|
{ /* 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,
|
2007-01-29 06:23:54 +03:00
|
|
|
.pmc_type = PPC_PMC_IBM,
|
2005-10-12 09:55:09 +04:00
|
|
|
.oprofile_cpu_type = "ppc64/rs64",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_RS64,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "rs64",
|
2005-10-12 09:55:09 +04:00
|
|
|
},
|
|
|
|
{ /* 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,
|
2007-01-29 06:23:54 +03:00
|
|
|
.pmc_type = PPC_PMC_IBM,
|
2005-10-12 09:55:09 +04:00
|
|
|
.oprofile_cpu_type = "ppc64/rs64",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_RS64,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "rs64",
|
2005-10-12 09:55:09 +04:00
|
|
|
},
|
|
|
|
{ /* Power4 */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x00350000,
|
|
|
|
.cpu_name = "POWER4 (gp)",
|
|
|
|
.cpu_features = CPU_FTRS_POWER4,
|
2005-11-10 06:29:18 +03:00
|
|
|
.cpu_user_features = COMMON_USER_POWER4,
|
2005-10-12 09:55:09 +04:00
|
|
|
.icache_bsize = 128,
|
|
|
|
.dcache_bsize = 128,
|
|
|
|
.num_pmcs = 8,
|
2007-01-29 06:23:54 +03:00
|
|
|
.pmc_type = PPC_PMC_IBM,
|
2005-10-12 09:55:09 +04:00
|
|
|
.oprofile_cpu_type = "ppc64/power4",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_POWER4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "power4",
|
2005-10-12 09:55:09 +04:00
|
|
|
},
|
|
|
|
{ /* Power4+ */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x00380000,
|
|
|
|
.cpu_name = "POWER4+ (gq)",
|
|
|
|
.cpu_features = CPU_FTRS_POWER4,
|
2005-11-10 06:29:18 +03:00
|
|
|
.cpu_user_features = COMMON_USER_POWER4,
|
2005-10-12 09:55:09 +04:00
|
|
|
.icache_bsize = 128,
|
|
|
|
.dcache_bsize = 128,
|
|
|
|
.num_pmcs = 8,
|
2007-01-29 06:23:54 +03:00
|
|
|
.pmc_type = PPC_PMC_IBM,
|
2005-10-12 09:55:09 +04:00
|
|
|
.oprofile_cpu_type = "ppc64/power4",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_POWER4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "power4",
|
2005-10-12 09:55:09 +04:00
|
|
|
},
|
|
|
|
{ /* PPC970 */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x00390000,
|
|
|
|
.cpu_name = "PPC970",
|
|
|
|
.cpu_features = CPU_FTRS_PPC970,
|
2005-11-10 06:29:18 +03:00
|
|
|
.cpu_user_features = COMMON_USER_POWER4 |
|
2005-10-12 09:55:09 +04:00
|
|
|
PPC_FEATURE_HAS_ALTIVEC_COMP,
|
|
|
|
.icache_bsize = 128,
|
|
|
|
.dcache_bsize = 128,
|
|
|
|
.num_pmcs = 8,
|
2007-01-29 06:23:54 +03:00
|
|
|
.pmc_type = PPC_PMC_IBM,
|
2005-10-12 09:55:09 +04:00
|
|
|
.cpu_setup = __setup_cpu_ppc970,
|
2006-08-11 09:07:08 +04:00
|
|
|
.cpu_restore = __restore_cpu_ppc970,
|
2005-10-12 09:55:09 +04:00
|
|
|
.oprofile_cpu_type = "ppc64/970",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_POWER4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc970",
|
2005-10-12 09:55:09 +04:00
|
|
|
},
|
|
|
|
{ /* PPC970FX */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x003c0000,
|
|
|
|
.cpu_name = "PPC970FX",
|
|
|
|
.cpu_features = CPU_FTRS_PPC970,
|
2005-11-10 06:29:18 +03:00
|
|
|
.cpu_user_features = COMMON_USER_POWER4 |
|
2005-10-12 09:55:09 +04:00
|
|
|
PPC_FEATURE_HAS_ALTIVEC_COMP,
|
|
|
|
.icache_bsize = 128,
|
|
|
|
.dcache_bsize = 128,
|
|
|
|
.num_pmcs = 8,
|
2007-01-29 06:23:54 +03:00
|
|
|
.pmc_type = PPC_PMC_IBM,
|
2005-10-12 09:55:09 +04:00
|
|
|
.cpu_setup = __setup_cpu_ppc970,
|
2006-08-11 09:07:08 +04:00
|
|
|
.cpu_restore = __restore_cpu_ppc970,
|
2005-10-12 09:55:09 +04:00
|
|
|
.oprofile_cpu_type = "ppc64/970",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_POWER4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc970",
|
2005-10-12 09:55:09 +04:00
|
|
|
},
|
|
|
|
{ /* PPC970MP */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x00440000,
|
|
|
|
.cpu_name = "PPC970MP",
|
|
|
|
.cpu_features = CPU_FTRS_PPC970,
|
2005-11-10 06:29:18 +03:00
|
|
|
.cpu_user_features = COMMON_USER_POWER4 |
|
2005-10-12 09:55:09 +04:00
|
|
|
PPC_FEATURE_HAS_ALTIVEC_COMP,
|
|
|
|
.icache_bsize = 128,
|
|
|
|
.dcache_bsize = 128,
|
2006-05-04 23:44:26 +04:00
|
|
|
.num_pmcs = 8,
|
2006-10-05 08:41:41 +04:00
|
|
|
.cpu_setup = __setup_cpu_ppc970MP,
|
2006-08-11 09:07:08 +04:00
|
|
|
.cpu_restore = __restore_cpu_ppc970,
|
2006-11-21 23:41:54 +03:00
|
|
|
.oprofile_cpu_type = "ppc64/970MP",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_POWER4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc970",
|
2005-10-12 09:55:09 +04:00
|
|
|
},
|
2006-10-18 19:47:22 +04:00
|
|
|
{ /* PPC970GX */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x00450000,
|
|
|
|
.cpu_name = "PPC970GX",
|
|
|
|
.cpu_features = CPU_FTRS_PPC970,
|
|
|
|
.cpu_user_features = COMMON_USER_POWER4 |
|
|
|
|
PPC_FEATURE_HAS_ALTIVEC_COMP,
|
|
|
|
.icache_bsize = 128,
|
|
|
|
.dcache_bsize = 128,
|
|
|
|
.num_pmcs = 8,
|
2007-01-29 06:23:54 +03:00
|
|
|
.pmc_type = PPC_PMC_IBM,
|
2006-10-18 19:47:22 +04:00
|
|
|
.cpu_setup = __setup_cpu_ppc970,
|
|
|
|
.oprofile_cpu_type = "ppc64/970",
|
|
|
|
.oprofile_type = PPC_OPROFILE_POWER4,
|
|
|
|
.platform = "ppc970",
|
|
|
|
},
|
2005-11-07 03:06:55 +03:00
|
|
|
{ /* Power5 GR */
|
2005-10-12 09:55:09 +04:00
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x003a0000,
|
|
|
|
.cpu_name = "POWER5 (gr)",
|
|
|
|
.cpu_features = CPU_FTRS_POWER5,
|
2005-11-10 06:29:18 +03:00
|
|
|
.cpu_user_features = COMMON_USER_POWER5,
|
2005-10-12 09:55:09 +04:00
|
|
|
.icache_bsize = 128,
|
|
|
|
.dcache_bsize = 128,
|
|
|
|
.num_pmcs = 6,
|
2007-01-29 06:23:54 +03:00
|
|
|
.pmc_type = PPC_PMC_IBM,
|
2005-10-12 09:55:09 +04:00
|
|
|
.oprofile_cpu_type = "ppc64/power5",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_POWER4,
|
2006-06-08 08:42:34 +04:00
|
|
|
/* SIHV / SIPR bits are implemented on POWER4+ (GQ)
|
|
|
|
* and above but only works on POWER5 and above
|
|
|
|
*/
|
|
|
|
.oprofile_mmcra_sihv = MMCRA_SIHV,
|
|
|
|
.oprofile_mmcra_sipr = MMCRA_SIPR,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "power5",
|
2005-10-12 09:55:09 +04:00
|
|
|
},
|
2005-11-07 03:06:55 +03:00
|
|
|
{ /* Power5 GS */
|
2005-10-12 09:55:09 +04:00
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x003b0000,
|
2006-01-09 07:42:30 +03:00
|
|
|
.cpu_name = "POWER5+ (gs)",
|
2005-10-12 09:55:09 +04:00
|
|
|
.cpu_features = CPU_FTRS_POWER5,
|
2005-11-10 06:29:18 +03:00
|
|
|
.cpu_user_features = COMMON_USER_POWER5_PLUS,
|
2005-10-12 09:55:09 +04:00
|
|
|
.icache_bsize = 128,
|
|
|
|
.dcache_bsize = 128,
|
|
|
|
.num_pmcs = 6,
|
2007-01-29 06:23:54 +03:00
|
|
|
.pmc_type = PPC_PMC_IBM,
|
2006-01-09 07:42:30 +03:00
|
|
|
.oprofile_cpu_type = "ppc64/power5+",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_POWER4,
|
2006-06-08 08:42:34 +04:00
|
|
|
.oprofile_mmcra_sihv = MMCRA_SIHV,
|
|
|
|
.oprofile_mmcra_sipr = MMCRA_SIPR,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "power5+",
|
2005-10-12 09:55:09 +04:00
|
|
|
},
|
2006-11-10 12:38:53 +03:00
|
|
|
{ /* POWER6 in P5+ mode; 2.04-compliant processor */
|
|
|
|
.pvr_mask = 0xffffffff,
|
|
|
|
.pvr_value = 0x0f000001,
|
|
|
|
.cpu_name = "POWER5+",
|
|
|
|
.cpu_features = CPU_FTRS_POWER5,
|
|
|
|
.cpu_user_features = COMMON_USER_POWER5_PLUS,
|
|
|
|
.icache_bsize = 128,
|
|
|
|
.dcache_bsize = 128,
|
|
|
|
.num_pmcs = 6,
|
|
|
|
.oprofile_cpu_type = "ppc64/power6",
|
|
|
|
.oprofile_type = PPC_OPROFILE_POWER4,
|
|
|
|
.oprofile_mmcra_sihv = POWER6_MMCRA_SIHV,
|
|
|
|
.oprofile_mmcra_sipr = POWER6_MMCRA_SIPR,
|
|
|
|
.oprofile_mmcra_clear = POWER6_MMCRA_THRM |
|
|
|
|
POWER6_MMCRA_OTHER,
|
|
|
|
.platform = "power5+",
|
|
|
|
},
|
2006-04-29 03:51:06 +04:00
|
|
|
{ /* Power6 */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x003e0000,
|
2006-11-10 12:38:53 +03:00
|
|
|
.cpu_name = "POWER6 (raw)",
|
|
|
|
.cpu_features = CPU_FTRS_POWER6,
|
|
|
|
.cpu_user_features = COMMON_USER_POWER6 |
|
|
|
|
PPC_FEATURE_POWER6_EXT,
|
|
|
|
.icache_bsize = 128,
|
|
|
|
.dcache_bsize = 128,
|
|
|
|
.num_pmcs = 6,
|
|
|
|
.oprofile_cpu_type = "ppc64/power6",
|
|
|
|
.oprofile_type = PPC_OPROFILE_POWER4,
|
|
|
|
.oprofile_mmcra_sihv = POWER6_MMCRA_SIHV,
|
|
|
|
.oprofile_mmcra_sipr = POWER6_MMCRA_SIPR,
|
|
|
|
.oprofile_mmcra_clear = POWER6_MMCRA_THRM |
|
|
|
|
POWER6_MMCRA_OTHER,
|
|
|
|
.platform = "power6x",
|
|
|
|
},
|
|
|
|
{ /* 2.05-compliant processor, i.e. Power6 "architected" mode */
|
|
|
|
.pvr_mask = 0xffffffff,
|
|
|
|
.pvr_value = 0x0f000002,
|
|
|
|
.cpu_name = "POWER6 (architected)",
|
2006-04-29 03:51:06 +04:00
|
|
|
.cpu_features = CPU_FTRS_POWER6,
|
|
|
|
.cpu_user_features = COMMON_USER_POWER6,
|
|
|
|
.icache_bsize = 128,
|
|
|
|
.dcache_bsize = 128,
|
2006-10-13 06:13:12 +04:00
|
|
|
.num_pmcs = 6,
|
2007-01-29 06:23:54 +03:00
|
|
|
.pmc_type = PPC_PMC_IBM,
|
2006-04-29 03:51:06 +04:00
|
|
|
.oprofile_cpu_type = "ppc64/power6",
|
|
|
|
.oprofile_type = PPC_OPROFILE_POWER4,
|
2006-06-08 08:42:34 +04:00
|
|
|
.oprofile_mmcra_sihv = POWER6_MMCRA_SIHV,
|
|
|
|
.oprofile_mmcra_sipr = POWER6_MMCRA_SIPR,
|
|
|
|
.oprofile_mmcra_clear = POWER6_MMCRA_THRM |
|
|
|
|
POWER6_MMCRA_OTHER,
|
2006-04-29 03:51:06 +04:00
|
|
|
.platform = "power6",
|
|
|
|
},
|
2006-01-04 22:55:53 +03:00
|
|
|
{ /* Cell Broadband Engine */
|
2005-10-12 09:55:09 +04:00
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x00700000,
|
|
|
|
.cpu_name = "Cell Broadband Engine",
|
|
|
|
.cpu_features = CPU_FTRS_CELL,
|
|
|
|
.cpu_user_features = COMMON_USER_PPC64 |
|
2006-03-01 07:07:07 +03:00
|
|
|
PPC_FEATURE_CELL | PPC_FEATURE_HAS_ALTIVEC_COMP |
|
|
|
|
PPC_FEATURE_SMT,
|
2005-10-12 09:55:09 +04:00
|
|
|
.icache_bsize = 128,
|
|
|
|
.dcache_bsize = 128,
|
[POWERPC] cell: Add oprofile support
Add PPU event-based and cycle-based profiling support to Oprofile for Cell.
Oprofile is expected to collect data on all CPUs simultaneously.
However, there is one set of performance counters per node. There are
two hardware threads or virtual CPUs on each node. Hence, OProfile must
multiplex in time the performance counter collection on the two virtual
CPUs.
The multiplexing of the performance counters is done by a virtual
counter routine. Initially, the counters are configured to collect data
on the even CPUs in the system, one CPU per node. In order to capture
the PC for the virtual CPU when the performance counter interrupt occurs
(the specified number of events between samples has occurred), the even
processors are configured to handle the performance counter interrupts
for their node. The virtual counter routine is called via a kernel
timer after the virtual sample time. The routine stops the counters,
saves the current counts, loads the last counts for the other virtual
CPU on the node, sets interrupts to be handled by the other virtual CPU
and restarts the counters, the virtual timer routine is scheduled to run
again. The virtual sample time is kept relatively small to make sure
sampling occurs on both CPUs on the node with a relatively small
granularity. Whenever the counters overflow, the performance counter
interrupt is called to collect the PC for the CPU where data is being
collected.
The oprofile driver relies on a firmware RTAS call to setup the debug bus
to route the desired signals to the performance counter hardware to be
counted. The RTAS call must set the routing registers appropriately in
each of the islands to pass the signals down the debug bus as well as
routing the signals from a particular island onto the bus. There is a
second firmware RTAS call to reset the debug bus to the non pass thru
state when the counters are not in use.
Signed-off-by: Carl Love <carll@us.ibm.com>
Signed-off-by: Maynard Johnson <mpjohn@us.ibm.com>
Signed-off-by: Arnd Bergmann <arnd.bergmann@de.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2006-11-20 20:45:16 +03:00
|
|
|
.num_pmcs = 4,
|
2007-01-29 06:23:54 +03:00
|
|
|
.pmc_type = PPC_PMC_IBM,
|
[POWERPC] cell: Add oprofile support
Add PPU event-based and cycle-based profiling support to Oprofile for Cell.
Oprofile is expected to collect data on all CPUs simultaneously.
However, there is one set of performance counters per node. There are
two hardware threads or virtual CPUs on each node. Hence, OProfile must
multiplex in time the performance counter collection on the two virtual
CPUs.
The multiplexing of the performance counters is done by a virtual
counter routine. Initially, the counters are configured to collect data
on the even CPUs in the system, one CPU per node. In order to capture
the PC for the virtual CPU when the performance counter interrupt occurs
(the specified number of events between samples has occurred), the even
processors are configured to handle the performance counter interrupts
for their node. The virtual counter routine is called via a kernel
timer after the virtual sample time. The routine stops the counters,
saves the current counts, loads the last counts for the other virtual
CPU on the node, sets interrupts to be handled by the other virtual CPU
and restarts the counters, the virtual timer routine is scheduled to run
again. The virtual sample time is kept relatively small to make sure
sampling occurs on both CPUs on the node with a relatively small
granularity. Whenever the counters overflow, the performance counter
interrupt is called to collect the PC for the CPU where data is being
collected.
The oprofile driver relies on a firmware RTAS call to setup the debug bus
to route the desired signals to the performance counter hardware to be
counted. The RTAS call must set the routing registers appropriately in
each of the islands to pass the signals down the debug bus as well as
routing the signals from a particular island onto the bus. There is a
second firmware RTAS call to reset the debug bus to the non pass thru
state when the counters are not in use.
Signed-off-by: Carl Love <carll@us.ibm.com>
Signed-off-by: Maynard Johnson <mpjohn@us.ibm.com>
Signed-off-by: Arnd Bergmann <arnd.bergmann@de.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2006-11-20 20:45:16 +03:00
|
|
|
.oprofile_cpu_type = "ppc64/cell-be",
|
|
|
|
.oprofile_type = PPC_OPROFILE_CELL,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc-cell-be",
|
2005-10-12 09:55:09 +04:00
|
|
|
},
|
2006-09-06 23:35:57 +04:00
|
|
|
{ /* PA Semi PA6T */
|
|
|
|
.pvr_mask = 0x7fff0000,
|
|
|
|
.pvr_value = 0x00900000,
|
|
|
|
.cpu_name = "PA6T",
|
|
|
|
.cpu_features = CPU_FTRS_PA6T,
|
|
|
|
.cpu_user_features = COMMON_USER_PA6T,
|
|
|
|
.icache_bsize = 64,
|
|
|
|
.dcache_bsize = 64,
|
|
|
|
.num_pmcs = 6,
|
2007-01-29 06:23:54 +03:00
|
|
|
.pmc_type = PPC_PMC_PA6T,
|
2006-09-06 23:35:57 +04:00
|
|
|
.platform = "pa6t",
|
|
|
|
},
|
2005-10-12 09:55:09 +04:00
|
|
|
{ /* 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,
|
2007-01-29 06:23:54 +03:00
|
|
|
.pmc_type = PPC_PMC_IBM,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "power4",
|
2005-10-12 09:55:09 +04:00
|
|
|
}
|
|
|
|
#endif /* CONFIG_PPC64 */
|
|
|
|
#ifdef CONFIG_PPC32
|
2005-04-17 02:20:36 +04:00
|
|
|
#if CLASSIC_PPC
|
2005-10-12 09:55:09 +04:00
|
|
|
{ /* 601 */
|
2005-04-17 02:20:36 +04:00
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x00010000,
|
|
|
|
.cpu_name = "601",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_PPC601,
|
2005-10-12 09:55:09 +04:00
|
|
|
.cpu_user_features = COMMON_USER | PPC_FEATURE_601_INSTR |
|
2005-10-12 08:22:50 +04:00
|
|
|
PPC_FEATURE_UNIFIED_CACHE | PPC_FEATURE_NO_TB,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc601",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 603 */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x00030000,
|
|
|
|
.cpu_name = "603",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_603,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_setup = __setup_cpu_603,
|
|
|
|
.platform = "ppc603",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 603e */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x00060000,
|
|
|
|
.cpu_name = "603e",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_603,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_setup = __setup_cpu_603,
|
|
|
|
.platform = "ppc603",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 603ev */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x00070000,
|
|
|
|
.cpu_name = "603ev",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_603,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_setup = __setup_cpu_603,
|
|
|
|
.platform = "ppc603",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 604 */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x00040000,
|
|
|
|
.cpu_name = "604",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_604,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 2,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_setup = __setup_cpu_604,
|
|
|
|
.platform = "ppc604",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 604e */
|
|
|
|
.pvr_mask = 0xfffff000,
|
|
|
|
.pvr_value = 0x00090000,
|
|
|
|
.cpu_name = "604e",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_604,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_setup = __setup_cpu_604,
|
|
|
|
.platform = "ppc604",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 604r */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x00090000,
|
|
|
|
.cpu_name = "604r",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_604,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_setup = __setup_cpu_604,
|
|
|
|
.platform = "ppc604",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 604ev */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x000a0000,
|
|
|
|
.cpu_name = "604ev",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_604,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_setup = __setup_cpu_604,
|
|
|
|
.platform = "ppc604",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 740/750 (0x4202, don't support TAU ?) */
|
|
|
|
.pvr_mask = 0xffffffff,
|
|
|
|
.pvr_value = 0x00084202,
|
|
|
|
.cpu_name = "740/750",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_740_NOTAU,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_setup = __setup_cpu_750,
|
|
|
|
.platform = "ppc750",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 750CX (80100 and 8010x?) */
|
|
|
|
.pvr_mask = 0xfffffff0,
|
|
|
|
.pvr_value = 0x00080100,
|
|
|
|
.cpu_name = "750CX",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_750,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_setup = __setup_cpu_750cx,
|
|
|
|
.platform = "ppc750",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 750CX (82201 and 82202) */
|
|
|
|
.pvr_mask = 0xfffffff0,
|
|
|
|
.pvr_value = 0x00082200,
|
|
|
|
.cpu_name = "750CX",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_750,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_setup = __setup_cpu_750cx,
|
|
|
|
.platform = "ppc750",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 750CXe (82214) */
|
|
|
|
.pvr_mask = 0xfffffff0,
|
|
|
|
.pvr_value = 0x00082210,
|
|
|
|
.cpu_name = "750CXe",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_750,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_setup = __setup_cpu_750cx,
|
|
|
|
.platform = "ppc750",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
2005-09-04 02:55:52 +04:00
|
|
|
{ /* 750CXe "Gekko" (83214) */
|
|
|
|
.pvr_mask = 0xffffffff,
|
|
|
|
.pvr_value = 0x00083214,
|
|
|
|
.cpu_name = "750CXe",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_750,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
|
2005-09-04 02:55:52 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_setup = __setup_cpu_750cx,
|
|
|
|
.platform = "ppc750",
|
2005-09-04 02:55:52 +04:00
|
|
|
},
|
2005-09-04 02:55:51 +04:00
|
|
|
{ /* 745/755 */
|
|
|
|
.pvr_mask = 0xfffff000,
|
|
|
|
.pvr_value = 0x00083000,
|
|
|
|
.cpu_name = "745/755",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_750,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
|
2005-09-04 02:55:51 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_setup = __setup_cpu_750,
|
|
|
|
.platform = "ppc750",
|
2005-09-04 02:55:51 +04:00
|
|
|
},
|
2005-04-17 02:20:36 +04:00
|
|
|
{ /* 750FX rev 1.x */
|
|
|
|
.pvr_mask = 0xffffff00,
|
|
|
|
.pvr_value = 0x70000100,
|
|
|
|
.cpu_name = "750FX",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_750FX1,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_setup = __setup_cpu_750,
|
|
|
|
.platform = "ppc750",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 750FX rev 2.0 must disable HID0[DPM] */
|
|
|
|
.pvr_mask = 0xffffffff,
|
|
|
|
.pvr_value = 0x70000200,
|
|
|
|
.cpu_name = "750FX",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_750FX2,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_setup = __setup_cpu_750,
|
|
|
|
.platform = "ppc750",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 750FX (All revs except 2.0) */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x70000000,
|
|
|
|
.cpu_name = "750FX",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_750FX,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_setup = __setup_cpu_750fx,
|
|
|
|
.platform = "ppc750",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 750GX */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x70020000,
|
|
|
|
.cpu_name = "750GX",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_750GX,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_setup = __setup_cpu_750fx,
|
|
|
|
.platform = "ppc750",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 740/750 (L2CR bit need fixup for 740) */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x00080000,
|
|
|
|
.cpu_name = "740/750",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_740,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_setup = __setup_cpu_750,
|
|
|
|
.platform = "ppc750",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 7400 rev 1.1 ? (no TAU) */
|
|
|
|
.pvr_mask = 0xffffffff,
|
|
|
|
.pvr_value = 0x000c1101,
|
|
|
|
.cpu_name = "7400 (1.1)",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_7400_NOTAU,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER |
|
|
|
|
PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_setup = __setup_cpu_7400,
|
|
|
|
.platform = "ppc7400",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 7400 */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x000c0000,
|
|
|
|
.cpu_name = "7400",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_7400,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER |
|
|
|
|
PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_setup = __setup_cpu_7400,
|
|
|
|
.platform = "ppc7400",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 7410 */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x800c0000,
|
|
|
|
.cpu_name = "7410",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_7400,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER |
|
|
|
|
PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_setup = __setup_cpu_7410,
|
|
|
|
.platform = "ppc7400",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 7450 2.0 - no doze/nap */
|
|
|
|
.pvr_mask = 0xffffffff,
|
|
|
|
.pvr_value = 0x80000200,
|
|
|
|
.cpu_name = "7450",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_7450_20,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER |
|
|
|
|
PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 6,
|
2005-12-16 05:02:04 +03:00
|
|
|
.cpu_setup = __setup_cpu_745x,
|
|
|
|
.oprofile_cpu_type = "ppc/7450",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_G4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc7450",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 7450 2.1 */
|
|
|
|
.pvr_mask = 0xffffffff,
|
|
|
|
.pvr_value = 0x80000201,
|
|
|
|
.cpu_name = "7450",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_7450_21,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER |
|
|
|
|
PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 6,
|
2005-12-16 05:02:04 +03:00
|
|
|
.cpu_setup = __setup_cpu_745x,
|
|
|
|
.oprofile_cpu_type = "ppc/7450",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_G4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc7450",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 7450 2.3 and newer */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x80000000,
|
|
|
|
.cpu_name = "7450",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_7450_23,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER |
|
|
|
|
PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 6,
|
2005-12-16 05:02:04 +03:00
|
|
|
.cpu_setup = __setup_cpu_745x,
|
|
|
|
.oprofile_cpu_type = "ppc/7450",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_G4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc7450",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 7455 rev 1.x */
|
|
|
|
.pvr_mask = 0xffffff00,
|
|
|
|
.pvr_value = 0x80010100,
|
|
|
|
.cpu_name = "7455",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_7455_1,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER |
|
|
|
|
PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 6,
|
2005-12-16 05:02:04 +03:00
|
|
|
.cpu_setup = __setup_cpu_745x,
|
|
|
|
.oprofile_cpu_type = "ppc/7450",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_G4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc7450",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 7455 rev 2.0 */
|
|
|
|
.pvr_mask = 0xffffffff,
|
|
|
|
.pvr_value = 0x80010200,
|
|
|
|
.cpu_name = "7455",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_7455_20,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER |
|
|
|
|
PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 6,
|
2005-12-16 05:02:04 +03:00
|
|
|
.cpu_setup = __setup_cpu_745x,
|
|
|
|
.oprofile_cpu_type = "ppc/7450",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_G4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc7450",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 7455 others */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x80010000,
|
|
|
|
.cpu_name = "7455",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_7455,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER |
|
|
|
|
PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 6,
|
2005-12-16 05:02:04 +03:00
|
|
|
.cpu_setup = __setup_cpu_745x,
|
|
|
|
.oprofile_cpu_type = "ppc/7450",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_G4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc7450",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 7447/7457 Rev 1.0 */
|
|
|
|
.pvr_mask = 0xffffffff,
|
|
|
|
.pvr_value = 0x80020100,
|
|
|
|
.cpu_name = "7447/7457",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_7447_10,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER |
|
|
|
|
PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 6,
|
2005-12-16 05:02:04 +03:00
|
|
|
.cpu_setup = __setup_cpu_745x,
|
|
|
|
.oprofile_cpu_type = "ppc/7450",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_G4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc7450",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 7447/7457 Rev 1.1 */
|
|
|
|
.pvr_mask = 0xffffffff,
|
|
|
|
.pvr_value = 0x80020101,
|
|
|
|
.cpu_name = "7447/7457",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_7447_10,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER |
|
|
|
|
PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 6,
|
2005-12-16 05:02:04 +03:00
|
|
|
.cpu_setup = __setup_cpu_745x,
|
|
|
|
.oprofile_cpu_type = "ppc/7450",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_G4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc7450",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 7447/7457 Rev 1.2 and later */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x80020000,
|
|
|
|
.cpu_name = "7447/7457",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_7447,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 6,
|
2005-12-16 05:02:04 +03:00
|
|
|
.cpu_setup = __setup_cpu_745x,
|
|
|
|
.oprofile_cpu_type = "ppc/7450",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_G4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc7450",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 7447A */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x80030000,
|
|
|
|
.cpu_name = "7447A",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_7447A,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER |
|
|
|
|
PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
|
2005-09-04 02:55:55 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 6,
|
2005-12-16 05:02:04 +03:00
|
|
|
.cpu_setup = __setup_cpu_745x,
|
|
|
|
.oprofile_cpu_type = "ppc/7450",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_G4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc7450",
|
2005-09-04 02:55:55 +04:00
|
|
|
},
|
|
|
|
{ /* 7448 */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x80040000,
|
|
|
|
.cpu_name = "7448",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_7447A,
|
2006-06-07 10:14:40 +04:00
|
|
|
.cpu_user_features = COMMON_USER |
|
|
|
|
PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 6,
|
2005-12-16 05:02:04 +03:00
|
|
|
.cpu_setup = __setup_cpu_745x,
|
|
|
|
.oprofile_cpu_type = "ppc/7450",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_G4,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc7450",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 82xx (8240, 8245, 8260 are all 603e cores) */
|
|
|
|
.pvr_mask = 0x7fff0000,
|
|
|
|
.pvr_value = 0x00810000,
|
|
|
|
.cpu_name = "82xx",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_82XX,
|
2005-10-12 09:55:09 +04:00
|
|
|
.cpu_user_features = COMMON_USER,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_setup = __setup_cpu_603,
|
|
|
|
.platform = "ppc603",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* All G2_LE (603e core, plus some) have the same pvr */
|
|
|
|
.pvr_mask = 0x7fff0000,
|
|
|
|
.pvr_value = 0x00820000,
|
|
|
|
.cpu_name = "G2_LE",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_G2_LE,
|
2005-10-12 09:55:09 +04:00
|
|
|
.cpu_user_features = COMMON_USER,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_setup = __setup_cpu_603,
|
|
|
|
.platform = "ppc603",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
2006-10-03 05:10:24 +04:00
|
|
|
{ /* e300c1 (a 603e core, plus some) on 83xx */
|
2005-04-17 02:20:36 +04:00
|
|
|
.pvr_mask = 0x7fff0000,
|
|
|
|
.pvr_value = 0x00830000,
|
2006-10-03 05:10:24 +04:00
|
|
|
.cpu_name = "e300c1",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_E300,
|
2005-10-12 09:55:09 +04:00
|
|
|
.cpu_user_features = COMMON_USER,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_setup = __setup_cpu_603,
|
|
|
|
.platform = "ppc603",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
2006-10-03 05:10:24 +04:00
|
|
|
{ /* e300c2 (an e300c1 core, plus some, minus FPU) on 83xx */
|
|
|
|
.pvr_mask = 0x7fff0000,
|
|
|
|
.pvr_value = 0x00840000,
|
|
|
|
.cpu_name = "e300c2",
|
2006-12-08 11:43:30 +03:00
|
|
|
.cpu_features = CPU_FTRS_E300C2,
|
2006-10-03 05:10:24 +04:00
|
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
|
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.cpu_setup = __setup_cpu_603,
|
|
|
|
.platform = "ppc603",
|
|
|
|
},
|
2006-12-01 21:57:05 +03:00
|
|
|
{ /* e300c3 on 83xx */
|
|
|
|
.pvr_mask = 0x7fff0000,
|
|
|
|
.pvr_value = 0x00850000,
|
|
|
|
.cpu_name = "e300c3",
|
|
|
|
.cpu_features = CPU_FTRS_E300,
|
|
|
|
.cpu_user_features = COMMON_USER,
|
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.cpu_setup = __setup_cpu_603,
|
|
|
|
.platform = "ppc603",
|
|
|
|
},
|
2005-04-17 02:20:36 +04:00
|
|
|
{ /* default match, we assume split I/D cache & TB (non-601)... */
|
|
|
|
.pvr_mask = 0x00000000,
|
|
|
|
.pvr_value = 0x00000000,
|
|
|
|
.cpu_name = "(generic PPC)",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_CLASSIC32,
|
2005-10-12 09:55:09 +04:00
|
|
|
.cpu_user_features = COMMON_USER,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc603",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
#endif /* CLASSIC_PPC */
|
|
|
|
#ifdef CONFIG_8xx
|
|
|
|
{ /* 8xx */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x00500000,
|
|
|
|
.cpu_name = "8xx",
|
|
|
|
/* CPU_FTR_MAYBE_CAN_DOZE is possible,
|
|
|
|
* if the 8xx code is there.... */
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_8XX,
|
2005-04-17 02:20:36 +04:00
|
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
|
|
|
|
.icache_bsize = 16,
|
|
|
|
.dcache_bsize = 16,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc823",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
#endif /* CONFIG_8xx */
|
|
|
|
#ifdef CONFIG_40x
|
|
|
|
{ /* 403GC */
|
|
|
|
.pvr_mask = 0xffffff00,
|
|
|
|
.pvr_value = 0x00200200,
|
|
|
|
.cpu_name = "403GC",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_40X,
|
2005-04-17 02:20:36 +04:00
|
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
|
|
|
|
.icache_bsize = 16,
|
|
|
|
.dcache_bsize = 16,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc403",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 403GCX */
|
|
|
|
.pvr_mask = 0xffffff00,
|
|
|
|
.pvr_value = 0x00201400,
|
|
|
|
.cpu_name = "403GCX",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_40X,
|
2005-10-12 08:22:50 +04:00
|
|
|
.cpu_user_features = PPC_FEATURE_32 |
|
|
|
|
PPC_FEATURE_HAS_MMU | PPC_FEATURE_NO_TB,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 16,
|
|
|
|
.dcache_bsize = 16,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc403",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 403G ?? */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x00200000,
|
|
|
|
.cpu_name = "403G ??",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_40X,
|
2005-04-17 02:20:36 +04:00
|
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
|
|
|
|
.icache_bsize = 16,
|
|
|
|
.dcache_bsize = 16,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc403",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 405GP */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x40110000,
|
|
|
|
.cpu_name = "405GP",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_40X,
|
2005-04-17 02:20:36 +04:00
|
|
|
.cpu_user_features = PPC_FEATURE_32 |
|
|
|
|
PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
|
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc405",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* STB 03xxx */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x40130000,
|
|
|
|
.cpu_name = "STB03xxx",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_40X,
|
2005-04-17 02:20:36 +04:00
|
|
|
.cpu_user_features = PPC_FEATURE_32 |
|
|
|
|
PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
|
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc405",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* STB 04xxx */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x41810000,
|
|
|
|
.cpu_name = "STB04xxx",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_40X,
|
2005-04-17 02:20:36 +04:00
|
|
|
.cpu_user_features = PPC_FEATURE_32 |
|
|
|
|
PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
|
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc405",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* NP405L */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x41610000,
|
|
|
|
.cpu_name = "NP405L",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_40X,
|
2005-04-17 02:20:36 +04:00
|
|
|
.cpu_user_features = PPC_FEATURE_32 |
|
|
|
|
PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
|
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc405",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* NP4GS3 */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x40B10000,
|
|
|
|
.cpu_name = "NP4GS3",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_40X,
|
2005-04-17 02:20:36 +04:00
|
|
|
.cpu_user_features = PPC_FEATURE_32 |
|
|
|
|
PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
|
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc405",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* NP405H */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x41410000,
|
|
|
|
.cpu_name = "NP405H",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_40X,
|
2005-04-17 02:20:36 +04:00
|
|
|
.cpu_user_features = PPC_FEATURE_32 |
|
|
|
|
PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
|
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc405",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 405GPr */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x50910000,
|
|
|
|
.cpu_name = "405GPr",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_40X,
|
2005-04-17 02:20:36 +04:00
|
|
|
.cpu_user_features = PPC_FEATURE_32 |
|
|
|
|
PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
|
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc405",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* STBx25xx */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x51510000,
|
|
|
|
.cpu_name = "STBx25xx",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_40X,
|
2005-04-17 02:20:36 +04:00
|
|
|
.cpu_user_features = PPC_FEATURE_32 |
|
|
|
|
PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
|
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc405",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 405LP */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x41F10000,
|
|
|
|
.cpu_name = "405LP",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_40X,
|
2005-04-17 02:20:36 +04:00
|
|
|
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
|
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc405",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* Xilinx Virtex-II Pro */
|
2006-01-19 11:13:20 +03:00
|
|
|
.pvr_mask = 0xfffff000,
|
2005-04-17 02:20:36 +04:00
|
|
|
.pvr_value = 0x20010000,
|
|
|
|
.cpu_name = "Virtex-II Pro",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_40X,
|
2005-04-17 02:20:36 +04:00
|
|
|
.cpu_user_features = PPC_FEATURE_32 |
|
|
|
|
PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
|
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc405",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
2006-01-19 11:13:20 +03:00
|
|
|
{ /* Xilinx Virtex-4 FX */
|
|
|
|
.pvr_mask = 0xfffff000,
|
|
|
|
.pvr_value = 0x20011000,
|
|
|
|
.cpu_name = "Virtex-4 FX",
|
|
|
|
.cpu_features = CPU_FTRS_40X,
|
|
|
|
.cpu_user_features = PPC_FEATURE_32 |
|
|
|
|
PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
|
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-09-14 23:18:38 +04:00
|
|
|
.platform = "ppc405",
|
2006-01-19 11:13:20 +03:00
|
|
|
},
|
2005-06-08 00:22:09 +04:00
|
|
|
{ /* 405EP */
|
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x51210000,
|
|
|
|
.cpu_name = "405EP",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_40X,
|
2005-06-08 00:22:09 +04:00
|
|
|
.cpu_user_features = PPC_FEATURE_32 |
|
|
|
|
PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
|
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc405",
|
2005-06-08 00:22:09 +04:00
|
|
|
},
|
2005-04-17 02:20:36 +04:00
|
|
|
|
|
|
|
#endif /* CONFIG_40x */
|
|
|
|
#ifdef CONFIG_44x
|
2005-08-01 09:34:52 +04:00
|
|
|
{
|
|
|
|
.pvr_mask = 0xf0000fff,
|
|
|
|
.pvr_value = 0x40000850,
|
|
|
|
.cpu_name = "440EP Rev. A",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_44X,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
|
2005-08-01 09:34:52 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc440",
|
2005-08-01 09:34:52 +04:00
|
|
|
},
|
|
|
|
{
|
|
|
|
.pvr_mask = 0xf0000fff,
|
|
|
|
.pvr_value = 0x400008d3,
|
|
|
|
.cpu_name = "440EP Rev. B",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_44X,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
|
2005-08-01 09:34:52 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc440",
|
2005-08-01 09:34:52 +04:00
|
|
|
},
|
2005-10-12 09:55:09 +04:00
|
|
|
{ /* 440GP Rev. B */
|
2005-04-17 02:20:36 +04:00
|
|
|
.pvr_mask = 0xf0000fff,
|
|
|
|
.pvr_value = 0x40000440,
|
|
|
|
.cpu_name = "440GP Rev. B",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_44X,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_user_features = COMMON_USER_BOOKE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc440gp",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
2005-10-12 09:55:09 +04:00
|
|
|
{ /* 440GP Rev. C */
|
2005-04-17 02:20:36 +04:00
|
|
|
.pvr_mask = 0xf0000fff,
|
|
|
|
.pvr_value = 0x40000481,
|
|
|
|
.cpu_name = "440GP Rev. C",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_44X,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_user_features = COMMON_USER_BOOKE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc440gp",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 440GX Rev. A */
|
|
|
|
.pvr_mask = 0xf0000fff,
|
|
|
|
.pvr_value = 0x50000850,
|
|
|
|
.cpu_name = "440GX Rev. A",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_44X,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_user_features = COMMON_USER_BOOKE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc440",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 440GX Rev. B */
|
|
|
|
.pvr_mask = 0xf0000fff,
|
|
|
|
.pvr_value = 0x50000851,
|
|
|
|
.cpu_name = "440GX Rev. B",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_44X,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_user_features = COMMON_USER_BOOKE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc440",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
|
|
|
{ /* 440GX Rev. C */
|
|
|
|
.pvr_mask = 0xf0000fff,
|
|
|
|
.pvr_value = 0x50000892,
|
|
|
|
.cpu_name = "440GX Rev. C",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_44X,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_user_features = COMMON_USER_BOOKE,
|
2005-04-17 02:20:36 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc440",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
2005-09-04 02:55:40 +04:00
|
|
|
{ /* 440GX Rev. F */
|
|
|
|
.pvr_mask = 0xf0000fff,
|
|
|
|
.pvr_value = 0x50000894,
|
|
|
|
.cpu_name = "440GX Rev. F",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_44X,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_user_features = COMMON_USER_BOOKE,
|
2005-09-04 02:55:40 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc440",
|
2005-09-04 02:55:40 +04:00
|
|
|
},
|
2005-09-04 02:55:42 +04:00
|
|
|
{ /* 440SP Rev. A */
|
|
|
|
.pvr_mask = 0xff000fff,
|
|
|
|
.pvr_value = 0x53000891,
|
|
|
|
.cpu_name = "440SP Rev. A",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_44X,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_user_features = COMMON_USER_BOOKE,
|
2005-09-04 02:55:42 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc440",
|
2005-09-04 02:55:42 +04:00
|
|
|
},
|
2005-11-07 11:58:13 +03:00
|
|
|
{ /* 440SPe Rev. A */
|
|
|
|
.pvr_mask = 0xff000fff,
|
|
|
|
.pvr_value = 0x53000890,
|
|
|
|
.cpu_name = "440SPe Rev. A",
|
2006-12-08 11:34:38 +03:00
|
|
|
.cpu_features = CPU_FTRS_44X,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_user_features = COMMON_USER_BOOKE,
|
2005-11-07 11:58:13 +03:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc440",
|
2005-11-07 11:58:13 +03:00
|
|
|
},
|
2005-04-17 02:20:36 +04:00
|
|
|
#endif /* CONFIG_44x */
|
2005-06-26 01:54:37 +04:00
|
|
|
#ifdef CONFIG_FSL_BOOKE
|
2005-10-12 09:55:09 +04:00
|
|
|
{ /* e200z5 */
|
2005-06-26 01:54:37 +04:00
|
|
|
.pvr_mask = 0xfff00000,
|
|
|
|
.pvr_value = 0x81000000,
|
|
|
|
.cpu_name = "e200z5",
|
|
|
|
/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_E200,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_user_features = COMMON_USER_BOOKE |
|
|
|
|
PPC_FEATURE_HAS_EFP_SINGLE |
|
2005-06-26 01:54:37 +04:00
|
|
|
PPC_FEATURE_UNIFIED_CACHE,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc5554",
|
2005-06-26 01:54:37 +04:00
|
|
|
},
|
2005-10-12 09:55:09 +04:00
|
|
|
{ /* e200z6 */
|
2005-06-26 01:54:37 +04:00
|
|
|
.pvr_mask = 0xfff00000,
|
|
|
|
.pvr_value = 0x81100000,
|
|
|
|
.cpu_name = "e200z6",
|
|
|
|
/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_E200,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_user_features = COMMON_USER_BOOKE |
|
|
|
|
PPC_FEATURE_SPE_COMP |
|
2005-06-26 01:54:37 +04:00
|
|
|
PPC_FEATURE_HAS_EFP_SINGLE |
|
|
|
|
PPC_FEATURE_UNIFIED_CACHE,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc5554",
|
2005-06-26 01:54:37 +04:00
|
|
|
},
|
2005-10-12 09:55:09 +04:00
|
|
|
{ /* e500 */
|
2005-04-17 02:20:36 +04:00
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x80200000,
|
|
|
|
.cpu_name = "e500",
|
|
|
|
/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_E500,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_user_features = COMMON_USER_BOOKE |
|
|
|
|
PPC_FEATURE_SPE_COMP |
|
2005-04-17 02:20:36 +04:00
|
|
|
PPC_FEATURE_HAS_EFP_SINGLE,
|
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 4,
|
2005-12-16 05:02:04 +03:00
|
|
|
.oprofile_cpu_type = "ppc/e500",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_BOOKE,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc8540",
|
2005-04-17 02:20:36 +04:00
|
|
|
},
|
2005-10-12 09:55:09 +04:00
|
|
|
{ /* e500v2 */
|
2005-06-22 04:15:18 +04:00
|
|
|
.pvr_mask = 0xffff0000,
|
|
|
|
.pvr_value = 0x80210000,
|
|
|
|
.cpu_name = "e500v2",
|
|
|
|
/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_E500_2,
|
2006-01-14 02:11:39 +03:00
|
|
|
.cpu_user_features = COMMON_USER_BOOKE |
|
|
|
|
PPC_FEATURE_SPE_COMP |
|
|
|
|
PPC_FEATURE_HAS_EFP_SINGLE |
|
|
|
|
PPC_FEATURE_HAS_EFP_DOUBLE,
|
2005-06-22 04:15:18 +04:00
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
|
|
|
.num_pmcs = 4,
|
2005-12-16 05:02:04 +03:00
|
|
|
.oprofile_cpu_type = "ppc/e500",
|
2006-01-13 15:35:49 +03:00
|
|
|
.oprofile_type = PPC_OPROFILE_BOOKE,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "ppc8548",
|
2005-06-22 04:15:18 +04:00
|
|
|
},
|
2005-04-17 02:20:36 +04:00
|
|
|
#endif
|
|
|
|
#if !CLASSIC_PPC
|
|
|
|
{ /* default match */
|
|
|
|
.pvr_mask = 0x00000000,
|
|
|
|
.pvr_value = 0x00000000,
|
|
|
|
.cpu_name = "(generic PPC)",
|
2005-09-23 23:08:58 +04:00
|
|
|
.cpu_features = CPU_FTRS_GENERIC_32,
|
2005-04-17 02:20:36 +04:00
|
|
|
.cpu_user_features = PPC_FEATURE_32,
|
|
|
|
.icache_bsize = 32,
|
|
|
|
.dcache_bsize = 32,
|
2006-01-14 02:11:39 +03:00
|
|
|
.platform = "powerpc",
|
2005-04-17 02:20:36 +04:00
|
|
|
}
|
|
|
|
#endif /* !CLASSIC_PPC */
|
2005-10-12 09:55:09 +04:00
|
|
|
#endif /* CONFIG_PPC32 */
|
2005-04-17 02:20:36 +04:00
|
|
|
};
|
2006-10-24 10:42:40 +04:00
|
|
|
|
2006-11-10 12:38:53 +03:00
|
|
|
struct cpu_spec *identify_cpu(unsigned long offset, unsigned int pvr)
|
2006-10-24 10:42:40 +04:00
|
|
|
{
|
|
|
|
struct cpu_spec *s = cpu_specs;
|
|
|
|
struct cpu_spec **cur = &cur_cpu_spec;
|
|
|
|
int i;
|
|
|
|
|
|
|
|
s = PTRRELOC(s);
|
|
|
|
cur = PTRRELOC(cur);
|
|
|
|
|
|
|
|
for (i = 0; i < ARRAY_SIZE(cpu_specs); i++,s++)
|
|
|
|
if ((pvr & s->pvr_mask) == s->pvr_value) {
|
|
|
|
*cur = cpu_specs + i;
|
|
|
|
#ifdef CONFIG_PPC64
|
|
|
|
/* ppc64 expects identify_cpu to also call setup_cpu
|
|
|
|
* for that processor. I will consolidate that at a
|
|
|
|
* later time, for now, just use our friend #ifdef.
|
|
|
|
* we also don't need to PTRRELOC the function pointer
|
|
|
|
* on ppc64 as we are running at 0 in real mode.
|
|
|
|
*/
|
|
|
|
if (s->cpu_setup) {
|
|
|
|
s->cpu_setup(offset, s);
|
|
|
|
}
|
|
|
|
#endif /* CONFIG_PPC64 */
|
|
|
|
return s;
|
|
|
|
}
|
|
|
|
BUG();
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2006-10-20 05:47:18 +04:00
|
|
|
void do_feature_fixups(unsigned long value, void *fixup_start, void *fixup_end)
|
2006-10-24 10:42:40 +04:00
|
|
|
{
|
|
|
|
struct fixup_entry {
|
|
|
|
unsigned long mask;
|
|
|
|
unsigned long value;
|
2006-10-20 05:47:18 +04:00
|
|
|
long start_off;
|
|
|
|
long end_off;
|
2006-10-24 10:42:40 +04:00
|
|
|
} *fcur, *fend;
|
|
|
|
|
|
|
|
fcur = fixup_start;
|
|
|
|
fend = fixup_end;
|
|
|
|
|
|
|
|
for (; fcur < fend; fcur++) {
|
|
|
|
unsigned int *pstart, *pend, *p;
|
|
|
|
|
|
|
|
if ((value & fcur->mask) == fcur->value)
|
|
|
|
continue;
|
|
|
|
|
|
|
|
/* These PTRRELOCs will disappear once the new scheme for
|
|
|
|
* modules and vdso is implemented
|
|
|
|
*/
|
2006-10-20 05:47:18 +04:00
|
|
|
pstart = ((unsigned int *)fcur) + (fcur->start_off / 4);
|
|
|
|
pend = ((unsigned int *)fcur) + (fcur->end_off / 4);
|
2006-10-24 10:42:40 +04:00
|
|
|
|
|
|
|
for (p = pstart; p < pend; p++) {
|
|
|
|
*p = 0x60000000u;
|
|
|
|
asm volatile ("dcbst 0, %0" : : "r" (p));
|
|
|
|
}
|
|
|
|
asm volatile ("sync" : : : "memory");
|
|
|
|
for (p = pstart; p < pend; p++)
|
|
|
|
asm volatile ("icbi 0,%0" : : "r" (p));
|
|
|
|
asm volatile ("sync; isync" : : : "memory");
|
|
|
|
}
|
|
|
|
}
|