[SPARC64]: Add HWCAP_SPARC_BLKINIT elf capability flag for Niagara.
[sfrench/cifs-2.6.git] / include / asm-sparc64 / elf.h
index 69539a8ab833d4645eaab4ccd2536357af2540d9..303d85e2f82ee003b1a6866b766ebb1731975d0d 100644 (file)
@@ -10,6 +10,7 @@
 #ifdef __KERNEL__
 #include <asm/processor.h>
 #include <asm/uaccess.h>
 #ifdef __KERNEL__
 #include <asm/processor.h>
 #include <asm/uaccess.h>
+#include <asm/spitfire.h>
 #endif
 
 /*
 #endif
 
 /*
@@ -68,6 +69,7 @@
 #define HWCAP_SPARC_MULDIV      8
 #define HWCAP_SPARC_V9         16
 #define HWCAP_SPARC_ULTRA3     32
 #define HWCAP_SPARC_MULDIV      8
 #define HWCAP_SPARC_V9         16
 #define HWCAP_SPARC_ULTRA3     32
+#define HWCAP_SPARC_BLKINIT    64
 
 /*
  * These are used to set parameters in the core dumps.
 
 /*
  * These are used to set parameters in the core dumps.
@@ -145,11 +147,21 @@ typedef struct {
    instruction set this cpu supports.  */
 
 /* On Ultra, we support all of the v8 capabilities. */
    instruction set this cpu supports.  */
 
 /* On Ultra, we support all of the v8 capabilities. */
-#define ELF_HWCAP      ((HWCAP_SPARC_FLUSH | HWCAP_SPARC_STBAR | \
-                         HWCAP_SPARC_SWAP | HWCAP_SPARC_MULDIV | \
-                         HWCAP_SPARC_V9) | \
-                        ((tlb_type == cheetah || tlb_type == cheetah_plus) ? \
-                         HWCAP_SPARC_ULTRA3 : 0))
+static inline unsigned int sparc64_elf_hwcap(void)
+{
+       unsigned int cap = (HWCAP_SPARC_FLUSH | HWCAP_SPARC_STBAR |
+                           HWCAP_SPARC_SWAP | HWCAP_SPARC_MULDIV |
+                           HWCAP_SPARC_V9);
+
+       if (tlb_type == cheetah || tlb_type == cheetah_plus)
+               cap |= HWCAP_SPARC_ULTRA3;
+       else if (tlb_type == hypervisor)
+               cap |= HWCAP_SPARC_BLKINIT;
+
+       return cap;
+}
+
+#define ELF_HWCAP      sparc64_elf_hwcap();
 
 /* This yields a string that ld.so will use to load implementation
    specific libraries for optimization.  This is more specific in
 
 /* This yields a string that ld.so will use to load implementation
    specific libraries for optimization.  This is more specific in