This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
Re: [ams@kemisten.nu: [patch] make HWCAP_I386_stuff avaible for all i386 platforms]
- From: "Alfred M. Szmidt" <ams at kemisten dot nu>
- To: roland at redhat dot com
- Cc: libc-alpha at sources dot redhat dot com
- Date: Fri, 01 Aug 2003 11:47:48 +0200
- Subject: Re: [ams@kemisten.nu: [patch] make HWCAP_I386_stuff avaible for all i386 platforms]
- References: <200308010904.h7194R901607@magilla.sf.frob.com>
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 */
============================================================