[POWERPC] Support nested cpu feature sections
[sfrench/cifs-2.6.git] / include / asm-powerpc / cputable.h
index 12707ab9dc98db6bcc6bf75556dd925e9a56818e..65faf322ace06140313f8777f9fa7bd3332c9854 100644 (file)
@@ -89,8 +89,11 @@ struct cpu_spec {
 
 extern struct cpu_spec         *cur_cpu_spec;
 
-extern void identify_cpu(unsigned long offset, unsigned long cpu);
-extern void do_cpu_ftr_fixups(unsigned long offset);
+extern unsigned int __start___ftr_fixup, __stop___ftr_fixup;
+
+extern struct cpu_spec *identify_cpu(unsigned long offset);
+extern void do_feature_fixups(unsigned long offset, unsigned long value,
+                             void *fixup_start, void *fixup_end);
 
 #endif /* __ASSEMBLY__ */
 
@@ -431,30 +434,34 @@ static inline int cpu_has_feature(unsigned long feature)
 
 #ifdef __ASSEMBLY__
 
-#define BEGIN_FTR_SECTION              98:
+#define BEGIN_FTR_SECTION_NESTED(label)        label:
+#define BEGIN_FTR_SECTION              BEGIN_FTR_SECTION_NESTED(98)
 
 #ifndef __powerpc64__
-#define END_FTR_SECTION(msk, val)              \
+#define END_FTR_SECTION_NESTED(msk, val, label) \
 99:                                            \
        .section __ftr_fixup,"a";               \
        .align 2;                               \
        .long msk;                              \
        .long val;                              \
-       .long 98b;                              \
+       .long label##b;                         \
        .long 99b;                              \
        .previous
 #else /* __powerpc64__ */
-#define END_FTR_SECTION(msk, val)              \
+#define END_FTR_SECTION_NESTED(msk, val, label) \
 99:                                            \
        .section __ftr_fixup,"a";               \
        .align 3;                               \
        .llong msk;                             \
        .llong val;                             \
-       .llong 98b;                             \
+       .llong label##b;                                \
        .llong 99b;                             \
        .previous
 #endif /* __powerpc64__ */
 
+#define END_FTR_SECTION(msk, val)              \
+       END_FTR_SECTION_NESTED(msk, val, 98)
+
 #define END_FTR_SECTION_IFSET(msk)     END_FTR_SECTION((msk), (msk))
 #define END_FTR_SECTION_IFCLR(msk)     END_FTR_SECTION((msk), 0)
 #endif /* __ASSEMBLY__ */