diff options
Diffstat (limited to 'arch/powerpc/kernel/cputable.c')
-rw-r--r-- | arch/powerpc/kernel/cputable.c | 62 |
1 files changed, 58 insertions, 4 deletions
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c index 4a24a2fc4574..0b9c9135922e 100644 --- a/arch/powerpc/kernel/cputable.c +++ b/arch/powerpc/kernel/cputable.c | |||
@@ -89,11 +89,15 @@ extern void __restore_cpu_power7(void); | |||
89 | #define COMMON_USER_PA6T (COMMON_USER_PPC64 | PPC_FEATURE_PA6T |\ | 89 | #define COMMON_USER_PA6T (COMMON_USER_PPC64 | PPC_FEATURE_PA6T |\ |
90 | PPC_FEATURE_TRUE_LE | \ | 90 | PPC_FEATURE_TRUE_LE | \ |
91 | PPC_FEATURE_HAS_ALTIVEC_COMP) | 91 | PPC_FEATURE_HAS_ALTIVEC_COMP) |
92 | #ifdef CONFIG_PPC_BOOK3E_64 | ||
93 | #define COMMON_USER_BOOKE (COMMON_USER_PPC64 | PPC_FEATURE_BOOKE) | ||
94 | #else | ||
92 | #define COMMON_USER_BOOKE (PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \ | 95 | #define COMMON_USER_BOOKE (PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \ |
93 | PPC_FEATURE_BOOKE) | 96 | PPC_FEATURE_BOOKE) |
97 | #endif | ||
94 | 98 | ||
95 | static struct cpu_spec __initdata cpu_specs[] = { | 99 | static struct cpu_spec __initdata cpu_specs[] = { |
96 | #ifdef CONFIG_PPC64 | 100 | #ifdef CONFIG_PPC_BOOK3S_64 |
97 | { /* Power3 */ | 101 | { /* Power3 */ |
98 | .pvr_mask = 0xffff0000, | 102 | .pvr_mask = 0xffff0000, |
99 | .pvr_value = 0x00400000, | 103 | .pvr_value = 0x00400000, |
@@ -508,7 +512,8 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
508 | .machine_check = machine_check_generic, | 512 | .machine_check = machine_check_generic, |
509 | .platform = "power4", | 513 | .platform = "power4", |
510 | } | 514 | } |
511 | #endif /* CONFIG_PPC64 */ | 515 | #endif /* CONFIG_PPC_BOOK3S_64 */ |
516 | |||
512 | #ifdef CONFIG_PPC32 | 517 | #ifdef CONFIG_PPC32 |
513 | #if CLASSIC_PPC | 518 | #if CLASSIC_PPC |
514 | { /* 601 */ | 519 | { /* 601 */ |
@@ -1630,7 +1635,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1630 | .platform = "ppc440", | 1635 | .platform = "ppc440", |
1631 | }, | 1636 | }, |
1632 | { /* 460EX */ | 1637 | { /* 460EX */ |
1633 | .pvr_mask = 0xffff0002, | 1638 | .pvr_mask = 0xffff0006, |
1634 | .pvr_value = 0x13020002, | 1639 | .pvr_value = 0x13020002, |
1635 | .cpu_name = "460EX", | 1640 | .cpu_name = "460EX", |
1636 | .cpu_features = CPU_FTRS_440x6, | 1641 | .cpu_features = CPU_FTRS_440x6, |
@@ -1642,8 +1647,21 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1642 | .machine_check = machine_check_440A, | 1647 | .machine_check = machine_check_440A, |
1643 | .platform = "ppc440", | 1648 | .platform = "ppc440", |
1644 | }, | 1649 | }, |
1650 | { /* 460EX Rev B */ | ||
1651 | .pvr_mask = 0xffff0007, | ||
1652 | .pvr_value = 0x13020004, | ||
1653 | .cpu_name = "460EX Rev. B", | ||
1654 | .cpu_features = CPU_FTRS_440x6, | ||
1655 | .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, | ||
1656 | .mmu_features = MMU_FTR_TYPE_44x, | ||
1657 | .icache_bsize = 32, | ||
1658 | .dcache_bsize = 32, | ||
1659 | .cpu_setup = __setup_cpu_460ex, | ||
1660 | .machine_check = machine_check_440A, | ||
1661 | .platform = "ppc440", | ||
1662 | }, | ||
1645 | { /* 460GT */ | 1663 | { /* 460GT */ |
1646 | .pvr_mask = 0xffff0002, | 1664 | .pvr_mask = 0xffff0006, |
1647 | .pvr_value = 0x13020000, | 1665 | .pvr_value = 0x13020000, |
1648 | .cpu_name = "460GT", | 1666 | .cpu_name = "460GT", |
1649 | .cpu_features = CPU_FTRS_440x6, | 1667 | .cpu_features = CPU_FTRS_440x6, |
@@ -1655,6 +1673,19 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1655 | .machine_check = machine_check_440A, | 1673 | .machine_check = machine_check_440A, |
1656 | .platform = "ppc440", | 1674 | .platform = "ppc440", |
1657 | }, | 1675 | }, |
1676 | { /* 460GT Rev B */ | ||
1677 | .pvr_mask = 0xffff0007, | ||
1678 | .pvr_value = 0x13020005, | ||
1679 | .cpu_name = "460GT Rev. B", | ||
1680 | .cpu_features = CPU_FTRS_440x6, | ||
1681 | .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, | ||
1682 | .mmu_features = MMU_FTR_TYPE_44x, | ||
1683 | .icache_bsize = 32, | ||
1684 | .dcache_bsize = 32, | ||
1685 | .cpu_setup = __setup_cpu_460gt, | ||
1686 | .machine_check = machine_check_440A, | ||
1687 | .platform = "ppc440", | ||
1688 | }, | ||
1658 | { /* 460SX */ | 1689 | { /* 460SX */ |
1659 | .pvr_mask = 0xffffff00, | 1690 | .pvr_mask = 0xffffff00, |
1660 | .pvr_value = 0x13541800, | 1691 | .pvr_value = 0x13541800, |
@@ -1797,6 +1828,29 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1797 | } | 1828 | } |
1798 | #endif /* CONFIG_E500 */ | 1829 | #endif /* CONFIG_E500 */ |
1799 | #endif /* CONFIG_PPC32 */ | 1830 | #endif /* CONFIG_PPC32 */ |
1831 | |||
1832 | #ifdef CONFIG_PPC_BOOK3E_64 | ||
1833 | { /* This is a default entry to get going, to be replaced by | ||
1834 | * a real one at some stage | ||
1835 | */ | ||
1836 | #define CPU_FTRS_BASE_BOOK3E (CPU_FTR_USE_TB | \ | ||
1837 | CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_SMT | \ | ||
1838 | CPU_FTR_NODSISRALIGN | CPU_FTR_NOEXECUTE) | ||
1839 | .pvr_mask = 0x00000000, | ||
1840 | .pvr_value = 0x00000000, | ||
1841 | .cpu_name = "Book3E", | ||
1842 | .cpu_features = CPU_FTRS_BASE_BOOK3E, | ||
1843 | .cpu_user_features = COMMON_USER_PPC64, | ||
1844 | .mmu_features = MMU_FTR_TYPE_3E | MMU_FTR_USE_TLBILX | | ||
1845 | MMU_FTR_USE_TLBIVAX_BCAST | | ||
1846 | MMU_FTR_LOCK_BCAST_INVAL, | ||
1847 | .icache_bsize = 64, | ||
1848 | .dcache_bsize = 64, | ||
1849 | .num_pmcs = 0, | ||
1850 | .machine_check = machine_check_generic, | ||
1851 | .platform = "power6", | ||
1852 | }, | ||
1853 | #endif | ||
1800 | }; | 1854 | }; |
1801 | 1855 | ||
1802 | static struct cpu_spec the_cpu_spec; | 1856 | static struct cpu_spec the_cpu_spec; |