This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] PPC Add Power6x Support to dl-procinfo


The POWER6 processor includes addtional instructions beyond the 2.05 ISA (Move Float to GRP, Move Float from GRP) which are available as the default on unmanaged systems (single partition systems identified by the AT_PLATFORM="power6x"). For Partitioned systems those instructions are disabled by default (AT_PLATFORM="power6"). Paul Mackerras recently posted the power6, power6x kernel support: http://patchwork.ozlabs.org/linuxppc/patch?id=7989

Also we need to add the hardware Decimal Floating Point feature to AT_HWCAP and update the HWCAP_IMPORTANT to include PPC_FEATURE_HAS_DFP).




2006-11-11  Steven Munroe  <sjmunroe@us.ibm.com>

	* sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_cap_flags): Add 3 new cap
	names to the beginning.
	(_dl_powerpc_platforms): Add "power6x".
	* sysdeps/powerpc/dl-procinfo.h (_DL_HWCAP_FIRST): Decrease.
	(HWCAP_IMPORTANT): Add PPC_FEATURE_HAS_DFP.
	(_DL_PLATFORMS_COUNT): Increase.
	(_dl_string_platform): Handle power6x case.
	* sysdeps/powerpc/sysdep.h (PPC_FEATURE_PA6T, PPC_FEATURE_HAS_DFP,
	PPC_FEATURE_POWER6_EXT): Define.
	(PPC_FEATURE_POWER5, PPC_FEATURE_POWER5_PLUS): Correct Comment.

diff -urN libc25-cvstip-20061111/sysdeps/powerpc/dl-procinfo.c libc25/sysdeps/powerpc/dl-procinfo.c
--- libc25-cvstip-20061111/sysdeps/powerpc/dl-procinfo.c	2006-09-15 02:47:28.000000000 -0500
+++ libc25/sysdeps/powerpc/dl-procinfo.c	2006-11-12 10:16:28.000000000 -0600
@@ -46,10 +46,11 @@
 #if !defined PROCINFO_DECL && defined SHARED
   ._dl_powerpc_cap_flags
 #else
-PROCINFO_CLASS const char _dl_powerpc_cap_flags[20][10]
+PROCINFO_CLASS const char _dl_powerpc_cap_flags[23][10]
 #endif
 #ifndef PROCINFO_DECL
 = {
+    "power6x", "dfp", "pa6t",
     "arch_2_05", "ic_snoop", "smt", "booke",
     "cellbe", "power5+", "power5", "power4",
     "notb", "efpdouble", "efpsingle", "spe",
@@ -66,11 +67,12 @@
 #if !defined PROCINFO_DECL && defined SHARED
   ._dl_powerpc_platforms
 #else
-PROCINFO_CLASS const char _dl_powerpc_platforms[6][12]
+PROCINFO_CLASS const char _dl_powerpc_platforms[7][12]
 #endif
 #ifndef PROCINFO_DECL
 = {
-    "power4", "ppc970", "power5", "power5+", "power6", "ppc-cell-be"
+    "power4", "ppc970", "power5", "power5+", "power6", "ppc-cell-be",
+    "power6x"
   }
 #endif
 #if !defined SHARED || defined PROCINFO_DECL
diff -urN libc25-cvstip-20061111/sysdeps/powerpc/dl-procinfo.h libc25/sysdeps/powerpc/dl-procinfo.h
--- libc25-cvstip-20061111/sysdeps/powerpc/dl-procinfo.h	2006-09-15 02:47:45.000000000 -0500
+++ libc25/sysdeps/powerpc/dl-procinfo.h	2006-11-12 10:17:20.000000000 -0600
@@ -24,13 +24,14 @@
 #include <sysdep.h>		/* This defines the PPC_FEATURE_* macros.  */
 
 /* There are 20 bits used, but they are bits 12..31.  */
-#define _DL_HWCAP_FIRST		12
+#define _DL_HWCAP_FIRST		9
 #define _DL_HWCAP_COUNT		32
 
 /* These bits influence library search.  */
-#define HWCAP_IMPORTANT		(PPC_FEATURE_HAS_ALTIVEC)
+#define HWCAP_IMPORTANT		(PPC_FEATURE_HAS_ALTIVEC \
+				+ PPC_FEATURE_HAS_DFP)
 
-#define _DL_PLATFORMS_COUNT	6
+#define _DL_PLATFORMS_COUNT	7
 
 #define _DL_FIRST_PLATFORM      32
 /* Mask to filter out platforms.  */
@@ -84,6 +85,8 @@
 	  break;
 	case '6':
 	  ret = _DL_FIRST_PLATFORM + 4;
+	  if (str[1] == 'x')
+	    ret+=2, ++str;
 	  break;
 	default:
 	  return -1;
diff -urN libc25-cvstip-20061111/sysdeps/powerpc/sysdep.h libc25/sysdeps/powerpc/sysdep.h
--- libc25-cvstip-20061111/sysdeps/powerpc/sysdep.h	2006-09-15 02:48:04.000000000 -0500
+++ libc25/sysdeps/powerpc/sysdep.h	2006-11-12 15:39:42.000000000 -0600
@@ -34,13 +34,16 @@
 #define PPC_FEATURE_HAS_EFP_DOUBLE	0x00200000 /* SPE Double.  */
 #define PPC_FEATURE_NO_TB		0x00100000 /* 601/403gx have no timebase */
 #define PPC_FEATURE_POWER4		0x00080000 /* POWER4 ISA 2.00 */
-#define PPC_FEATURE_POWER5		0x00040000 /* POWER5 ISA 2.01 */
-#define PPC_FEATURE_POWER5_PLUS		0x00020000 /* POWER5+ ISA 2.02 */
+#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_SMT			0x00004000
+#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_PA6T		0x00000800 /* PA Semi 6T Core */
+#define PPC_FEATURE_HAS_DFP		0x00000400 /* Decimal FP Unit */
+#define PPC_FEATURE_POWER6_EXT		0x00000200 /* P6 + mffgpr/mftgpr */
 #define PPC_FEATURE_970 (PPC_FEATURE_POWER4 + PPC_FEATURE_HAS_ALTIVEC)
 
 #ifdef __ASSEMBLER__

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]