*/
#define HWCAP_SPARC_CRYPTO 0x04000000 /* CRYPTO insns available */
#define HWCAP_SPARC_ADI 0x08000000 /* ADI available */
+#define HWCAP_SPARC_VIS3B 0x10000000 /* VIS3B insns available */
+#define HWCAP_SPARC_PAUSE_NSEC 0x20000000 /* Time based pause available */
+#define HWCAP_SPARC_MWAIT 0x40000000 /* MWAIT insn available */
+#define HWCAP_SPARC_SPARC5 0x80000000 /* SPARC5 insns available */
+
+/* Virtual Address Masking available */
+#define HWCAP_SPARC_VAMASK 0x0000000100000000UL
#define CORE_DUMP_USE_REGSET
/* These strings are as they appear in the machine description
* 'hwcap-list' property for cpu nodes.
+ * Note: Virtual address masking (vamask) appears in the machine
+ * description cpu node as va-mask-nz-mask and va-mask-z-mask
+ * properties.
*/
"mul32", "div32", "fsmuld", "v8plus", "popc", "vis", "vis2",
"ASIBlkInit", "fmaf", "vis3", "hpc", "random", "trans", "fjfmau",
"ima", "cspare", "pause", "cbcond", NULL /*reserved for crypto */,
- "adp",
+ "adp", "vis3b", "pause-nsec", "mwait", "sparc5", "vamask"
};
static const char *crypto_hwcaps[] = {
"aes", "des", "kasumi", "camellia", "md5", "sha1", "sha256",
- "sha512", "mpmul", "montmul", "montsqr", "crc32c",
+ "sha512", "mpmul", "montmul", "montsqr", "crc32c", "xmpmul",
+ "xmontmul", "xmontsqr"
};
void cpucap_info(struct seq_file *m)
sun4v_chip_type == SUN4V_CHIP_SPARC_S7 ||
sun4v_chip_type == SUN4V_CHIP_SPARC64X)
cap |= HWCAP_SPARC_N2;
+ if (sun4v_chip_type == SUN4V_CHIP_SPARC_M7 ||
+ sun4v_chip_type == SUN4V_CHIP_SPARC_S7)
+ cap |= (HWCAP_SPARC_VAMASK |
+ AV_SPARC_FSMULD);
}
cap |= (AV_SPARC_MUL32 | AV_SPARC_DIV32 | AV_SPARC_V8PLUS);
if (sun4v_chip_type == SUN4V_CHIP_NIAGARA3 ||
sun4v_chip_type == SUN4V_CHIP_NIAGARA4 ||
sun4v_chip_type == SUN4V_CHIP_NIAGARA5 ||
+ sun4v_chip_type == SUN4V_CHIP_SPARC_M7 ||
sun4v_chip_type == SUN4V_CHIP_SPARC_S7)
cap |= AV_SPARC_VIS3;
+ if (sun4v_chip_type == SUN4V_CHIP_SPARC_M7 ||
+ sun4v_chip_type == SUN4V_CHIP_SPARC_S7)
+ cap |= (AV_SPARC_IMA | AV_SPARC_PAUSE |
+ AV_SPARC_CBCOND |
+ HWCAP_SPARC_CRYPTO |
+ HWCAP_SPARC_ADI |
+ HWCAP_SPARC_VIS3B |
+ HWCAP_SPARC_PAUSE_NSEC |
+ HWCAP_SPARC_MWAIT |
+ HWCAP_SPARC_SPARC5);
}
}
sparc64_elf_hwcap = cap | mdesc_caps;