This is the mail archive of the libc-alpha@sources.redhat.com 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]

Re: [ams@kemisten.nu: [patch] make HWCAP_I386_stuff avaible for all i386 platforms]


   The only things you left in the linux-specific file are about
   strings corresponding to the values that you moved to the
   sysdeps/i386 file.  The string support should be where the bit
   values are.

Thanks for the swift reply, here is an updated version with the above
taken into consideration (the new file is attached).  For the record,
I'm still compiling libc (with this patch) on GNU/Hurd, and I haven't
compiled it on GNU/Linux yet.

2003-08-01  Alfred M. Szmidt  <ams@kemisten.nu>

	* sysdeps/unix/sysv/linux/i386/dl-procinfo.h: include_next
	dl-procinfo.h

	* sysdeps/unix/sysv/linux/i386/dl-procinfo.h (_DL_HWCAP_COUNT):
	Removed.
	(_DL_PLATFORMS_COUNT): Likewise.
	(_DL_FIRST_PLATFORM): Likewise.
	(_DL_HWCAP_PLATFORM): Likewise.
	(HWCAP_I386_FPU, HWCAP_I386_VME, HWCAP_I386_DE, HWCAP_I386_PSE)
	(HWCAP_I386_TSC, HWCAP_I386_MSR, HWCAP_I386_PAE, HWCAP_I386_MCE)
	(HWCAP_I386_CX8, HWCAP_I386_APIC, HWCAP_I386_SEP, HWCAP_I386_MTRR)
	(HWCAP_I386_PGE, HWCAP_I386_MCA, HWCAP_I386_CMOV)
	(HWCAP_I386_FCMOV, HWCAP_I386_MMX, HWCAP_I386_OSFXSR)
	(HWCAP_I386_XMM, HWCAP_I386_XMM2, HWCAP_I386_AMD3D)
	(HWCAP_IMPORTANT): Likewise.
	(_DL_PROCINFO_H_): Likewise.
	(_dl_hwcap_string, _dl_platform_string, _dl_string_hwcap)
	(_dl_string_platform): Likewise.

	* sysdeps/i386/dl-procinfo.h: New file.

Index: sysdeps/unix/sysv/linux/i386/dl-procinfo.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/i386/dl-procinfo.h,v
retrieving revision 1.15
diff -u -r1.15 dl-procinfo.h
--- sysdeps/unix/sysv/linux/i386/dl-procinfo.h	13 Jun 2003 21:03:28 -0000	1.15
+++ sysdeps/unix/sysv/linux/i386/dl-procinfo.h	1 Aug 2003 09:40:01 -0000
@@ -18,22 +18,10 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-#ifndef _DL_PROCINFO_H
-#define _DL_PROCINFO_H	1
-
+#include_next <dl-procinfo.h>
 #include <ldsodefs.h>
 
-#define _DL_HWCAP_COUNT 32
-
-#define _DL_PLATFORMS_COUNT	4
-
-/* Start at 48 to reserve some space.  */
-#define _DL_FIRST_PLATFORM	48
-/* Mask to filter out platforms.  */
-#define _DL_HWCAP_PLATFORM	(((1ULL << _DL_PLATFORMS_COUNT) - 1) \
-				 << _DL_FIRST_PLATFORM)
-
-
+#undef _dl_procinfo
 static inline int
 __attribute__ ((unused))
 _dl_procinfo (int word)
@@ -52,78 +40,3 @@
 
   return 0;
 }
-
-static inline const char *
-__attribute__ ((unused))
-_dl_hwcap_string (int idx)
-{
-  return GL(dl_x86_cap_flags)[idx];
-};
-
-static inline const char *
-__attribute__ ((unused))
-_dl_platform_string (int idx)
-{
-  return GL(dl_x86_platforms)[idx - _DL_FIRST_PLATFORM];
-};
-
-enum
-{
-  HWCAP_I386_FPU   = 1 << 0,
-  HWCAP_I386_VME   = 1 << 1,
-  HWCAP_I386_DE    = 1 << 2,
-  HWCAP_I386_PSE   = 1 << 3,
-  HWCAP_I386_TSC   = 1 << 4,
-  HWCAP_I386_MSR   = 1 << 5,
-  HWCAP_I386_PAE   = 1 << 6,
-  HWCAP_I386_MCE   = 1 << 7,
-  HWCAP_I386_CX8   = 1 << 8,
-  HWCAP_I386_APIC  = 1 << 9,
-  HWCAP_I386_SEP   = 1 << 11,
-  HWCAP_I386_MTRR  = 1 << 12,
-  HWCAP_I386_PGE   = 1 << 13,
-  HWCAP_I386_MCA   = 1 << 14,
-  HWCAP_I386_CMOV  = 1 << 15,
-  HWCAP_I386_FCMOV = 1 << 16,
-  HWCAP_I386_MMX   = 1 << 23,
-  HWCAP_I386_OSFXSR = 1 << 24,
-  HWCAP_I386_XMM   = 1 << 25,
-  HWCAP_I386_XMM2  = 1 << 26,
-  HWCAP_I386_AMD3D = 1 << 31,
-
-  /* XXX Which others to add here?  */
-  HWCAP_IMPORTANT = (HWCAP_I386_MMX)
-
-};
-
-static inline int
-__attribute__ ((unused, always_inline))
-_dl_string_hwcap (const char *str)
-{
-  int i;
-
-  for (i = 0; i < _DL_HWCAP_COUNT; i++)
-    {
-      if (strcmp (str, GL(dl_x86_cap_flags)[i]) == 0)
-	return i;
-    }
-  return -1;
-};
-
-
-static inline int
-__attribute__ ((unused, always_inline))
-_dl_string_platform (const char *str)
-{
-  int i;
-
-  if (str != NULL)
-    for (i = 0; i < _DL_PLATFORMS_COUNT; ++i)
-      {
-	if (strcmp (str, GL(dl_x86_platforms)[i]) == 0)
-	  return _DL_FIRST_PLATFORM + i;
-      }
-  return -1;
-};
-
-#endif /* dl-procinfo.h */


===File ~/src/libc/sysdeps/i386/dl-procinfo.h===============
/* i386 version of processor capability information handling macros.
   Copyright (C) 1998, 2000, 2003 Free Software Foundation, Inc.
   This file is part of the GNU C Library.
   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, write to the Free
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   02111-1307 USA.  */

#ifndef _DL_PROCINFO_H
#define _DL_PROCINFO_H	1

/* We cannot provide a general printing function.  */
#define _dl_procinfo(word) -1

static inline const char *
__attribute__ ((unused))
_dl_hwcap_string (int idx)
{
  return GL(dl_x86_cap_flags)[idx];
};

static inline const char *
__attribute__ ((unused))
_dl_platform_string (int idx)
{
  return GL(dl_x86_platforms)[idx - _DL_FIRST_PLATFORM];
};

#define _DL_HWCAP_COUNT 32

#define _DL_PLATFORMS_COUNT	4

/* Start at 48 to reserve some space.  */
#define _DL_FIRST_PLATFORM	48
/* Mask to filter out platforms.  */
#define _DL_HWCAP_PLATFORM	(((1ULL << _DL_PLATFORMS_COUNT) - 1) \
				 << _DL_FIRST_PLATFORM)

enum
{
  HWCAP_I386_FPU   = 1 << 0,
  HWCAP_I386_VME   = 1 << 1,
  HWCAP_I386_DE    = 1 << 2,
  HWCAP_I386_PSE   = 1 << 3,
  HWCAP_I386_TSC   = 1 << 4,
  HWCAP_I386_MSR   = 1 << 5,
  HWCAP_I386_PAE   = 1 << 6,
  HWCAP_I386_MCE   = 1 << 7,
  HWCAP_I386_CX8   = 1 << 8,
  HWCAP_I386_APIC  = 1 << 9,
  HWCAP_I386_SEP   = 1 << 11,
  HWCAP_I386_MTRR  = 1 << 12,
  HWCAP_I386_PGE   = 1 << 13,
  HWCAP_I386_MCA   = 1 << 14,
  HWCAP_I386_CMOV  = 1 << 15,
  HWCAP_I386_FCMOV = 1 << 16,
  HWCAP_I386_MMX   = 1 << 23,
  HWCAP_I386_OSFXSR = 1 << 24,
  HWCAP_I386_XMM   = 1 << 25,
  HWCAP_I386_XMM2  = 1 << 26,
  HWCAP_I386_AMD3D = 1 << 31,

  /* XXX Which others to add here?  */
  HWCAP_IMPORTANT = (HWCAP_I386_MMX)

};

static inline int
__attribute__ ((unused, always_inline))
_dl_string_hwcap (const char *str)
{
  int i;
  
  for (i = 0; i < _DL_HWCAP_COUNT; i++)
    {
      if (strcmp (str, GL(dl_x86_cap_flags)[i]) == 0)
	return i;
    }
  return -1;
};

static inline int
__attribute__ ((unused, always_inline))
_dl_string_platform (const char *str)
{
  int i;
  
  if (str != NULL)
    for (i = 0; i < _DL_PLATFORMS_COUNT; ++i)
      {
	if (strcmp (str, GL(dl_x86_platforms)[i]) == 0)
	  return _DL_FIRST_PLATFORM + i;
      }
  return -1;
};

#endif /* dl-procinfo.h */
============================================================


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