Commit d0a70ac3 authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] ppc64: cputable update, from Dave Engebretsen

From: Anton Blanchard <anton@samba.org>

Sync 2.4 & 2.6 cputable code.  Adds 970 and Power5 processor support
plus new firmware features.
parent 89d483cb
...@@ -30,8 +30,10 @@ extern void __setup_cpu_power4(unsigned long offset, struct cpu_spec* spec); ...@@ -30,8 +30,10 @@ extern void __setup_cpu_power4(unsigned long offset, struct cpu_spec* spec);
*/ */
#ifdef CONFIG_ALTIVEC #ifdef CONFIG_ALTIVEC
#define CPU_FTR_ALTIVEC_COMP CPU_FTR_ALTIVEC #define CPU_FTR_ALTIVEC_COMP CPU_FTR_ALTIVEC
#define PPC_FEATURE_HAS_ALTIVEC_COMP PPC_FEATURE_HAS_ALTIVEC
#else #else
#define CPU_FTR_ALTIVEC_COMP 0 #define CPU_FTR_ALTIVEC_COMP 0
#define PPC_FEATURE_HAS_ALTIVEC_COMP 0
#endif #endif
struct cpu_spec cpu_specs[] = { struct cpu_spec cpu_specs[] = {
...@@ -107,6 +109,24 @@ struct cpu_spec cpu_specs[] = { ...@@ -107,6 +109,24 @@ struct cpu_spec cpu_specs[] = {
__setup_cpu_power4, __setup_cpu_power4,
COMMON_PPC64_FW COMMON_PPC64_FW
}, },
{ /* PPC970 */
0xffff0000, 0x00390000, "PPC970",
CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE |
CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_ALTIVEC_COMP,
COMMON_USER_PPC64 | PPC_FEATURE_HAS_ALTIVEC_COMP,
128, 128,
__setup_cpu_power4,
COMMON_PPC64_FW
},
{ /* Power5 */
0xffff0000, 0x003a0000, "Power5",
CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE |
CPU_FTR_PPCAS_ARCH_V2,
COMMON_USER_PPC64,
128, 128,
__setup_cpu_power4,
COMMON_PPC64_FW
},
{ /* default match */ { /* default match */
0x00000000, 0x00000000, "(Power4-Compatible)", 0x00000000, 0x00000000, "(Power4-Compatible)",
CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE | CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE |
...@@ -130,4 +150,13 @@ firmware_feature_t firmware_features_table[FIRMWARE_MAX_FEATURES] = { ...@@ -130,4 +150,13 @@ firmware_feature_t firmware_features_table[FIRMWARE_MAX_FEATURES] = {
{FW_FEATURE_DUMP, "hcall-dump"}, {FW_FEATURE_DUMP, "hcall-dump"},
{FW_FEATURE_INTERRUPT, "hcall-interrupt"}, {FW_FEATURE_INTERRUPT, "hcall-interrupt"},
{FW_FEATURE_MIGRATE, "hcall-migrate"}, {FW_FEATURE_MIGRATE, "hcall-migrate"},
{FW_FEATURE_PERFMON, "hcall-perfmon"},
{FW_FEATURE_CRQ, "hcall-crq"},
{FW_FEATURE_VIO, "hcall-vio"},
{FW_FEATURE_RDMA, "hcall-rdma"},
{FW_FEATURE_LLAN, "hcall-lLAN"},
{FW_FEATURE_BULK, "hcall-bulk"},
{FW_FEATURE_XDABR, "hcall-xdabr"},
{FW_FEATURE_MULTITCE, "hcall-multi-tce"},
{FW_FEATURE_SPLPAR, "hcall-splpar"},
}; };
...@@ -74,10 +74,20 @@ extern struct cpu_spec *cur_cpu_spec; ...@@ -74,10 +74,20 @@ extern struct cpu_spec *cur_cpu_spec;
#define FW_FEATURE_COPY (1UL<<4) #define FW_FEATURE_COPY (1UL<<4)
#define FW_FEATURE_ASR (1UL<<5) #define FW_FEATURE_ASR (1UL<<5)
#define FW_FEATURE_DEBUG (1UL<<6) #define FW_FEATURE_DEBUG (1UL<<6)
#define FW_FEATURE_PERF (1UL<<7) #define FW_FEATURE_TERM (1UL<<7)
#define FW_FEATURE_DUMP (1UL<<8) #define FW_FEATURE_PERF (1UL<<8)
#define FW_FEATURE_INTERRUPT (1UL<<9) #define FW_FEATURE_DUMP (1UL<<9)
#define FW_FEATURE_MIGRATE (1UL<<10) #define FW_FEATURE_INTERRUPT (1UL<<10)
#define FW_FEATURE_MIGRATE (1UL<<11)
#define FW_FEATURE_PERFMON (1UL<<12)
#define FW_FEATURE_CRQ (1UL<<13)
#define FW_FEATURE_VIO (1UL<<14)
#define FW_FEATURE_RDMA (1UL<<15)
#define FW_FEATURE_LLAN (1UL<<16)
#define FW_FEATURE_BULK (1UL<<17)
#define FW_FEATURE_XDABR (1UL<<18)
#define FW_FEATURE_MULTITCE (1UL<<19)
#define FW_FEATURE_SPLPAR (1UL<<20)
typedef struct { typedef struct {
unsigned long val; unsigned long val;
...@@ -144,11 +154,24 @@ extern firmware_feature_t firmware_features_table[]; ...@@ -144,11 +154,24 @@ extern firmware_feature_t firmware_features_table[];
.llong 99b; \ .llong 99b; \
.previous .previous
#define END_FTR_SECTION_IFSET(msk) END_FTR_SECTION((msk), (msk)) #else
#define END_FTR_SECTION_IFCLR(msk) END_FTR_SECTION((msk), 0)
#define BEGIN_FTR_SECTION "98:\n"
#define END_FTR_SECTION(msk, val) \
"99:\n" \
" .section __ftr_fixup,\"a\";\n" \
" .align 3;\n" \
" .llong "#msk";\n" \
" .llong "#val";\n" \
" .llong 98b;\n" \
" .llong 99b;\n" \
" .previous\n"
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
#define END_FTR_SECTION_IFSET(msk) END_FTR_SECTION((msk), (msk))
#define END_FTR_SECTION_IFCLR(msk) END_FTR_SECTION((msk), 0)
#endif /* __ASM_PPC_CPUTABLE_H */ #endif /* __ASM_PPC_CPUTABLE_H */
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment