[POWERPC] Support nested cpu feature sections
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 20 Oct 2006 01:47:16 +0000 (11:47 +1000)
committerPaul Mackerras <paulus@samba.org>
Wed, 25 Oct 2006 01:54:02 +0000 (11:54 +1000)
This patch adds some macros that can be used with an explicit label in
order to nest cpu features. This should be used very careful but is
necessary for the upcoming cell TB fixup.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Acked-by: Olof Johansson <olof@lixom.net>
Signed-off-by: Paul Mackerras <paulus@samba.org>
include/asm-powerpc/cputable.h

index 4d22218739e0804667bfc9e1a3bc9491def0439a..65faf322ace06140313f8777f9fa7bd3332c9854 100644 (file)
@@ -434,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__ */