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>
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-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
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 ,
. 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 ,
. 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 ,
. 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 ,
. 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 ,
. 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 ,
. 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 ,
. 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 ,
. 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 ,
. 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 ,
. 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 ,
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
} ,
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 ,
. 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 ,
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-04-29 03:51:06 +04:00
{ /* Power6 */
. pvr_mask = 0xffff0000 ,
. pvr_value = 0x003e0000 ,
. cpu_name = " POWER6 " ,
. 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 ,
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 ,
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 ,
. 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 ,
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 " ,
. cpu_features = CPU_FTRS_E300 ,
. cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU ,
. 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 8 xx 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 " ,
. cpu_features = CPU_FTR_SPLIT_ID_CACHE |
CPU_FTR_USE_TB ,
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
} ;