]> git.hungrycats.org Git - linux/commitdiff
[PATCH] ppc64: cputable update, from Dave Engebretsen
authorAndrew Morton <akpm@osdl.org>
Mon, 19 Jan 2004 02:14:11 +0000 (18:14 -0800)
committerLinus Torvalds <torvalds@home.osdl.org>
Mon, 19 Jan 2004 02:14:11 +0000 (18:14 -0800)
From: Anton Blanchard <anton@samba.org>

Sync 2.4 & 2.6 cputable code.  Adds 970 and Power5 processor support
plus new firmware features.

arch/ppc64/kernel/cputable.c
include/asm-ppc64/cputable.h

index 78d7fd10f582100d335f0fec5e7e2b3273c85e75..e44ab2ed31db45420f069375911b62069ab15280 100644 (file)
@@ -30,8 +30,10 @@ extern void __setup_cpu_power4(unsigned long offset, struct cpu_spec* spec);
  */
 #ifdef CONFIG_ALTIVEC
 #define CPU_FTR_ALTIVEC_COMP   CPU_FTR_ALTIVEC
+#define PPC_FEATURE_HAS_ALTIVEC_COMP PPC_FEATURE_HAS_ALTIVEC
 #else
 #define CPU_FTR_ALTIVEC_COMP   0
+#define PPC_FEATURE_HAS_ALTIVEC_COMP    0
 #endif
 
 struct cpu_spec        cpu_specs[] = {
@@ -107,6 +109,24 @@ struct cpu_spec    cpu_specs[] = {
            __setup_cpu_power4,
            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 */
            0x00000000, 0x00000000, "(Power4-Compatible)",
            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] = {
     {FW_FEATURE_DUMP,          "hcall-dump"},
     {FW_FEATURE_INTERRUPT,     "hcall-interrupt"},
     {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"},
 };
index c885ff50bc86e086ef2d90b34103983a07f7adc5..15206be6a46ecb34608a1d0b40296db51508afac 100644 (file)
@@ -74,10 +74,20 @@ extern struct cpu_spec              *cur_cpu_spec;
 #define FW_FEATURE_COPY                (1UL<<4)        
 #define FW_FEATURE_ASR         (1UL<<5)        
 #define FW_FEATURE_DEBUG       (1UL<<6)        
-#define FW_FEATURE_PERF                (1UL<<7)        
-#define FW_FEATURE_DUMP                (1UL<<8)        
-#define FW_FEATURE_INTERRUPT   (1UL<<9)        
-#define FW_FEATURE_MIGRATE     (1UL<<10)       
+#define FW_FEATURE_TERM                (1UL<<7)        
+#define FW_FEATURE_PERF                (1UL<<8)        
+#define FW_FEATURE_DUMP                (1UL<<9)        
+#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 {
     unsigned long val;
@@ -144,11 +154,24 @@ extern firmware_feature_t firmware_features_table[];
        .llong 99b;                             \
        .previous
 
-#define END_FTR_SECTION_IFSET(msk)     END_FTR_SECTION((msk), (msk))
-#define END_FTR_SECTION_IFCLR(msk)     END_FTR_SECTION((msk), 0)
+#else
+
+#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__ */
 
+#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 /* __KERNEL__ */