diff options
Diffstat (limited to 'arch/powerpc/kernel/cputable.c')
| -rw-r--r-- | arch/powerpc/kernel/cputable.c | 66 | 
1 files changed, 43 insertions, 23 deletions
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c index b9602ee06de..34d2722b945 100644 --- a/arch/powerpc/kernel/cputable.c +++ b/arch/powerpc/kernel/cputable.c @@ -62,10 +62,12 @@ extern void __setup_cpu_745x(unsigned long offset, struct cpu_spec* spec);  extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec);  extern void __setup_cpu_ppc970MP(unsigned long offset, struct cpu_spec* spec);  extern void __setup_cpu_pa6t(unsigned long offset, struct cpu_spec* spec); +extern void __setup_cpu_a2(unsigned long offset, struct cpu_spec* spec);  extern void __restore_cpu_pa6t(void);  extern void __restore_cpu_ppc970(void);  extern void __setup_cpu_power7(unsigned long offset, struct cpu_spec* spec);  extern void __restore_cpu_power7(void); +extern void __restore_cpu_a2(void);  #endif /* CONFIG_PPC64 */  #if defined(CONFIG_E500)  extern void __setup_cpu_e5500(unsigned long offset, struct cpu_spec* spec); @@ -199,7 +201,7 @@ static struct cpu_spec __initdata cpu_specs[] = {  		.cpu_name		= "POWER4 (gp)",  		.cpu_features		= CPU_FTRS_POWER4,  		.cpu_user_features	= COMMON_USER_POWER4, -		.mmu_features		= MMU_FTR_HPTE_TABLE, +		.mmu_features		= MMU_FTRS_POWER4,  		.icache_bsize		= 128,  		.dcache_bsize		= 128,  		.num_pmcs		= 8, @@ -214,7 +216,7 @@ static struct cpu_spec __initdata cpu_specs[] = {  		.cpu_name		= "POWER4+ (gq)",  		.cpu_features		= CPU_FTRS_POWER4,  		.cpu_user_features	= COMMON_USER_POWER4, -		.mmu_features		= MMU_FTR_HPTE_TABLE, +		.mmu_features		= MMU_FTRS_POWER4,  		.icache_bsize		= 128,  		.dcache_bsize		= 128,  		.num_pmcs		= 8, @@ -230,7 +232,7 @@ static struct cpu_spec __initdata cpu_specs[] = {  		.cpu_features		= CPU_FTRS_PPC970,  		.cpu_user_features	= COMMON_USER_POWER4 |  			PPC_FEATURE_HAS_ALTIVEC_COMP, -		.mmu_features		= MMU_FTR_HPTE_TABLE, +		.mmu_features		= MMU_FTRS_PPC970,  		.icache_bsize		= 128,  		.dcache_bsize		= 128,  		.num_pmcs		= 8, @@ -248,7 +250,7 @@ static struct cpu_spec __initdata cpu_specs[] = {  		.cpu_features		= CPU_FTRS_PPC970,  		.cpu_user_features	= COMMON_USER_POWER4 |  			PPC_FEATURE_HAS_ALTIVEC_COMP, -		.mmu_features		= MMU_FTR_HPTE_TABLE, +		.mmu_features		= MMU_FTRS_PPC970,  		.icache_bsize		= 128,  		.dcache_bsize		= 128,  		.num_pmcs		= 8, @@ -284,7 +286,7 @@ static struct cpu_spec __initdata cpu_specs[] = {  		.cpu_features		= CPU_FTRS_PPC970,  		.cpu_user_features	= COMMON_USER_POWER4 |  			PPC_FEATURE_HAS_ALTIVEC_COMP, -		.mmu_features		= MMU_FTR_HPTE_TABLE, +		.mmu_features		= MMU_FTRS_PPC970,  		.icache_bsize		= 128,  		.dcache_bsize		= 128,  		.num_pmcs		= 8, @@ -302,7 +304,7 @@ static struct cpu_spec __initdata cpu_specs[] = {  		.cpu_features		= CPU_FTRS_PPC970,  		.cpu_user_features	= COMMON_USER_POWER4 |  			PPC_FEATURE_HAS_ALTIVEC_COMP, -		.mmu_features		= MMU_FTR_HPTE_TABLE, +		.mmu_features		= MMU_FTRS_PPC970,  		.icache_bsize		= 128,  		.dcache_bsize		= 128,  		.num_pmcs		= 8, @@ -318,7 +320,7 @@ static struct cpu_spec __initdata cpu_specs[] = {  		.cpu_name		= "POWER5 (gr)",  		.cpu_features		= CPU_FTRS_POWER5,  		.cpu_user_features	= COMMON_USER_POWER5, -		.mmu_features		= MMU_FTR_HPTE_TABLE, +		.mmu_features		= MMU_FTRS_POWER5,  		.icache_bsize		= 128,  		.dcache_bsize		= 128,  		.num_pmcs		= 6, @@ -338,7 +340,7 @@ static struct cpu_spec __initdata cpu_specs[] = {  		.cpu_name		= "POWER5+ (gs)",  		.cpu_features		= CPU_FTRS_POWER5,  		.cpu_user_features	= COMMON_USER_POWER5_PLUS, -		.mmu_features		= MMU_FTR_HPTE_TABLE, +		.mmu_features		= MMU_FTRS_POWER5,  		.icache_bsize		= 128,  		.dcache_bsize		= 128,  		.num_pmcs		= 6, @@ -354,7 +356,7 @@ static struct cpu_spec __initdata cpu_specs[] = {  		.cpu_name		= "POWER5+ (gs)",  		.cpu_features		= CPU_FTRS_POWER5,  		.cpu_user_features	= COMMON_USER_POWER5_PLUS, -		.mmu_features		= MMU_FTR_HPTE_TABLE, +		.mmu_features		= MMU_FTRS_POWER5,  		.icache_bsize		= 128,  		.dcache_bsize		= 128,  		.num_pmcs		= 6, @@ -371,7 +373,7 @@ static struct cpu_spec __initdata cpu_specs[] = {  		.cpu_name		= "POWER5+",  		.cpu_features		= CPU_FTRS_POWER5,  		.cpu_user_features	= COMMON_USER_POWER5_PLUS, -		.mmu_features		= MMU_FTR_HPTE_TABLE, +		.mmu_features		= MMU_FTRS_POWER5,  		.icache_bsize		= 128,  		.dcache_bsize		= 128,  		.oprofile_cpu_type	= "ppc64/ibm-compat-v1", @@ -385,7 +387,7 @@ static struct cpu_spec __initdata cpu_specs[] = {  		.cpu_features		= CPU_FTRS_POWER6,  		.cpu_user_features	= COMMON_USER_POWER6 |  			PPC_FEATURE_POWER6_EXT, -		.mmu_features		= MMU_FTR_HPTE_TABLE, +		.mmu_features		= MMU_FTRS_POWER6,  		.icache_bsize		= 128,  		.dcache_bsize		= 128,  		.num_pmcs		= 6, @@ -404,7 +406,7 @@ static struct cpu_spec __initdata cpu_specs[] = {  		.cpu_name		= "POWER6 (architected)",  		.cpu_features		= CPU_FTRS_POWER6,  		.cpu_user_features	= COMMON_USER_POWER6, -		.mmu_features		= MMU_FTR_HPTE_TABLE, +		.mmu_features		= MMU_FTRS_POWER6,  		.icache_bsize		= 128,  		.dcache_bsize		= 128,  		.oprofile_cpu_type	= "ppc64/ibm-compat-v1", @@ -417,12 +419,13 @@ static struct cpu_spec __initdata cpu_specs[] = {  		.cpu_name		= "POWER7 (architected)",  		.cpu_features		= CPU_FTRS_POWER7,  		.cpu_user_features	= COMMON_USER_POWER7, -		.mmu_features		= MMU_FTR_HPTE_TABLE | -			MMU_FTR_TLBIE_206, +		.mmu_features		= MMU_FTRS_POWER7,  		.icache_bsize		= 128,  		.dcache_bsize		= 128,  		.oprofile_type		= PPC_OPROFILE_POWER4,  		.oprofile_cpu_type	= "ppc64/ibm-compat-v1", +		.cpu_setup		= __setup_cpu_power7, +		.cpu_restore		= __restore_cpu_power7,  		.platform		= "power7",  	},  	{	/* Power7 */ @@ -431,14 +434,15 @@ static struct cpu_spec __initdata cpu_specs[] = {  		.cpu_name		= "POWER7 (raw)",  		.cpu_features		= CPU_FTRS_POWER7,  		.cpu_user_features	= COMMON_USER_POWER7, -		.mmu_features		= MMU_FTR_HPTE_TABLE | -			MMU_FTR_TLBIE_206, +		.mmu_features		= MMU_FTRS_POWER7,  		.icache_bsize		= 128,  		.dcache_bsize		= 128,  		.num_pmcs		= 6,  		.pmc_type		= PPC_PMC_IBM,  		.oprofile_cpu_type	= "ppc64/power7",  		.oprofile_type		= PPC_OPROFILE_POWER4, +		.cpu_setup		= __setup_cpu_power7, +		.cpu_restore		= __restore_cpu_power7,  		.platform		= "power7",  	},  	{	/* Power7+ */ @@ -447,14 +451,15 @@ static struct cpu_spec __initdata cpu_specs[] = {  		.cpu_name		= "POWER7+ (raw)",  		.cpu_features		= CPU_FTRS_POWER7,  		.cpu_user_features	= COMMON_USER_POWER7, -		.mmu_features		= MMU_FTR_HPTE_TABLE | -			MMU_FTR_TLBIE_206, +		.mmu_features		= MMU_FTRS_POWER7,  		.icache_bsize		= 128,  		.dcache_bsize		= 128,  		.num_pmcs		= 6,  		.pmc_type		= PPC_PMC_IBM,  		.oprofile_cpu_type	= "ppc64/power7",  		.oprofile_type		= PPC_OPROFILE_POWER4, +		.cpu_setup		= __setup_cpu_power7, +		.cpu_restore		= __restore_cpu_power7,  		.platform		= "power7+",  	},  	{	/* Cell Broadband Engine */ @@ -465,7 +470,7 @@ static struct cpu_spec __initdata cpu_specs[] = {  		.cpu_user_features	= COMMON_USER_PPC64 |  			PPC_FEATURE_CELL | PPC_FEATURE_HAS_ALTIVEC_COMP |  			PPC_FEATURE_SMT, -		.mmu_features		= MMU_FTR_HPTE_TABLE, +		.mmu_features		= MMU_FTRS_CELL,  		.icache_bsize		= 128,  		.dcache_bsize		= 128,  		.num_pmcs		= 4, @@ -480,7 +485,7 @@ static struct cpu_spec __initdata cpu_specs[] = {  		.cpu_name		= "PA6T",  		.cpu_features		= CPU_FTRS_PA6T,  		.cpu_user_features	= COMMON_USER_PA6T, -		.mmu_features		= MMU_FTR_HPTE_TABLE, +		.mmu_features		= MMU_FTRS_PA6T,  		.icache_bsize		= 64,  		.dcache_bsize		= 64,  		.num_pmcs		= 6, @@ -497,7 +502,7 @@ static struct cpu_spec __initdata cpu_specs[] = {  		.cpu_name		= "POWER4 (compatible)",  		.cpu_features		= CPU_FTRS_COMPATIBLE,  		.cpu_user_features	= COMMON_USER_PPC64, -		.mmu_features		= MMU_FTR_HPTE_TABLE, +		.mmu_features		= MMU_FTRS_DEFAULT_HPTE_ARCH_V2,  		.icache_bsize		= 128,  		.dcache_bsize		= 128,  		.num_pmcs		= 6, @@ -2005,7 +2010,22 @@ static struct cpu_spec __initdata cpu_specs[] = {  #endif /* CONFIG_PPC32 */  #endif /* CONFIG_E500 */ -#ifdef CONFIG_PPC_BOOK3E_64 +#ifdef CONFIG_PPC_A2 +	{	/* Standard A2 (>= DD2) + FPU core */ +		.pvr_mask		= 0xffff0000, +		.pvr_value		= 0x00480000, +		.cpu_name		= "A2 (>= DD2)", +		.cpu_features		= CPU_FTRS_A2, +		.cpu_user_features	= COMMON_USER_PPC64, +		.mmu_features		= MMU_FTRS_A2, +		.icache_bsize		= 64, +		.dcache_bsize		= 64, +		.num_pmcs		= 0, +		.cpu_setup		= __setup_cpu_a2, +		.cpu_restore		= __restore_cpu_a2, +		.machine_check		= machine_check_generic, +		.platform		= "ppca2", +	},  	{	/* This is a default entry to get going, to be replaced by  		 * a real one at some stage  		 */ @@ -2026,7 +2046,7 @@ static struct cpu_spec __initdata cpu_specs[] = {  		.machine_check		= machine_check_generic,  		.platform		= "power6",  	}, -#endif +#endif /* CONFIG_PPC_A2 */  };  static struct cpu_spec the_cpu_spec;  |