+2013-05-14 Ryan S. Arnold <rsa@linux.vnet.ibm.com>
+
+ * sysdeps/powerpc/bits/hwcap.h: Add new AT_HWCAP2 features.
+ [PPC_FEATURE2_ARCH_2_07]: New feature bit for Power ISA 2.07.
+ [PPC_FEATURE2_HAS_HTM]: New feature bit for Hardware Transactional
+ Memory.
+ [PPC_FEATURE2_HAS_DSCR]: New feature bit for Data Stream Control
+ Register.
+ [PPC_FEATURE2_HAS_EBB]: New feature bit for Event Based Branching
+ facility.
+ [PPC_FEATURE2_HAS_ISEL]: New feature bit for Integer Select.
+ [PPC_FEATURE2_HAS_TAR]: New feature bit for Target Address Register
+ facility.
+ * sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_platforms): Add power8 as
+ PPC_PLATFORM_POWER8.
+ (_dl_powerpc_cap_flags): Add arch_2_07, htm, dscr, ebb, isel, and tar
+ as hwcap strings for power8.
+ * sysdeps/powerpc/dl-procinfo.h
+ [_DL_HWCAP2_FIRST]: New define to account for the start of AT_HWCAP2.
+ [_DL_HWCAP_COUNT]: Update count to cover arch_2_07, htm, dscr, ebb,
+ isel, and tar.
+ [_DL_PLATFORMS_COUNT]: Increment for power8.
+ [PPC_PLATFORM_POWER8]: New definition.
+ (_dl_string_platform): Add return value for power8 platform string.
+ * sysdeps/powerpc/powerpc32/power8/Implies: New file.
+ * sysdeps/powerpc/powerpc64/power8/Implies: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/power8/Implies: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/power8/Implies: Likewise.
+
2013-05-13 Ryan S. Arnold <rsa@linux.vnet.ibm.com>
* sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_platforms): Add ppc405,
# error "Never include <bits/hwcap.h> directly; use <sys/auxv.h> instead."
#endif
-/*
- * The following must match the kernels asm/cputable.h.
- */
+/* The bit numbers must match those in the kernel's asm/cputable.h. */
+
+/* Feature definitions in AT_HWCAP. */
#define PPC_FEATURE_32 0x80000000 /* 32-bit mode. */
#define PPC_FEATURE_64 0x40000000 /* 64-bit mode. */
#define PPC_FEATURE_601_INSTR 0x20000000 /* 601 chip, Old POWER ISA. */
#define PPC_FEATURE_POWER5 0x00040000 /* POWER5 ISA 2.02 */
#define PPC_FEATURE_POWER5_PLUS 0x00020000 /* POWER5+ ISA 2.03 */
#define PPC_FEATURE_CELL_BE 0x00010000 /* CELL Broadband Engine */
-#define PPC_FEATURE_BOOKE 0x00008000
+#define PPC_FEATURE_BOOKE 0x00008000 /* ISA Category Embedded */
#define PPC_FEATURE_SMT 0x00004000 /* Simultaneous Multi-Threading */
#define PPC_FEATURE_ICACHE_SNOOP 0x00002000
#define PPC_FEATURE_ARCH_2_05 0x00001000 /* ISA 2.05 */
#define PPC_FEATURE_PSERIES_PERFMON_COMPAT 0x00000040
#define PPC_FEATURE_TRUE_LE 0x00000002
#define PPC_FEATURE_PPC_LE 0x00000001
+
+/* Feature definitions in AT_HWCAP2. */
+#define PPC_FEATURE2_ARCH_2_07 0x80000000 /* ISA 2.07 */
+#define PPC_FEATURE2_HAS_HTM 0x40000000 /* Hardware Transactional Memory */
+#define PPC_FEATURE2_HAS_DSCR 0x20000000 /* Data Stream Control Register */
+#define PPC_FEATURE2_HAS_EBB 0x10000000 /* Event Base Branching */
+#define PPC_FEATURE2_HAS_ISEL 0x08000000 /* Integer Select */
+#define PPC_FEATURE2_HAS_TAR 0x04000000 /* Target Address Register */
#if !defined PROCINFO_DECL && defined SHARED
._dl_powerpc_cap_flags
#else
-PROCINFO_CLASS const char _dl_powerpc_cap_flags[25][10]
+PROCINFO_CLASS const char _dl_powerpc_cap_flags[31][10]
#endif
#ifndef PROCINFO_DECL
= {
- "vsx",
+ "ebb", "isel", "tar",
+ "vsx", "arch_2_07", "htm", "dscr",
"arch_2_06", "power6x", "dfp", "pa6t",
"arch_2_05", "ic_snoop", "smt", "booke",
"cellbe", "power5+", "power5", "power4",
#if !defined PROCINFO_DECL && defined SHARED
._dl_powerpc_platforms
#else
-PROCINFO_CLASS const char _dl_powerpc_platforms[13][12]
+PROCINFO_CLASS const char _dl_powerpc_platforms[14][12]
#endif
#ifndef PROCINFO_DECL
= {
[PPC_PLATFORM_PPC405] = "ppc405",
[PPC_PLATFORM_PPC440] = "ppc440",
[PPC_PLATFORM_PPC464] = "ppc464",
- [PPC_PLATFORM_PPC476] = "ppc476"
+ [PPC_PLATFORM_PPC476] = "ppc476",
+ [PPC_PLATFORM_POWER8] = "power8"
}
#endif
#if !defined SHARED || defined PROCINFO_DECL
#define _DL_PROCINFO_H 1
#include <ldsodefs.h>
-#include <sysdep.h> /* This defines the PPC_FEATURE_* macros. */
+#include <sysdep.h> /* This defines the PPC_FEATURE[2]_* macros. */
/* There are 25 bits used in AT_HWCAP, but they are bits 7..31. */
#define _DL_HWCAP_FIRST 7
+/* Where AT_HWCAP2 starts relative to _DL_HWCAP_FIRST. */
#define _DL_HWCAP2_FIRST 32
-#define _DL_HWCAP_COUNT 32
+
+/* The total number of used bits relative to _DL_HWCAP_FIRST. */
+#define _DL_HWCAP_COUNT 38
/* These bits influence library search. */
#define HWCAP_IMPORTANT (PPC_FEATURE_HAS_ALTIVEC \
+ PPC_FEATURE_HAS_DFP)
-#define _DL_PLATFORMS_COUNT 13
+#define _DL_PLATFORMS_COUNT 14
#define _DL_FIRST_PLATFORM 32
/* Mask to filter out platforms. */
#define PPC_PLATFORM_PPC440 10
#define PPC_PLATFORM_PPC464 11
#define PPC_PLATFORM_PPC476 12
+#define PPC_PLATFORM_POWER8 13
static inline const char *
__attribute__ ((unused))
case '7':
ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER7;
break;
+ case '8':
+ ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER8;
+ break;
default:
return -1;
}
case AT_HWCAP:
_dl_printf ("AT_HWCAP: ");
first = _DL_HWCAP_FIRST;
- count = MIN(_DL_HWCAP_COUNT,_DL_HWCAP2_FIRST);
+ count = MIN(_DL_HWCAP_COUNT, _DL_HWCAP2_FIRST);
str_offset = 0;
break;
case AT_HWCAP2:
--- /dev/null
+powerpc/powerpc32/power7/fpu
+powerpc/powerpc32/power7
--- /dev/null
+powerpc/powerpc64/power7/fpu
+powerpc/powerpc64/power7
--- /dev/null
+powerpc/powerpc32/power8/fpu
+powerpc/powerpc32/power8
--- /dev/null
+powerpc/powerpc64/power8/fpu
+powerpc/powerpc64/power8