diff options
author | Roland McGrath <roland@gnu.org> | 2003-09-25 03:55:10 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2003-09-25 03:55:10 +0000 |
commit | fca9d8e489ecdaaef96861e879658425e2db1297 (patch) | |
tree | bc420e316215d12790e04fda42347f5002fc2056 /sysdeps/i386/dl-procinfo.h | |
parent | 00700865648c2040c97608834076a700b2ee673f (diff) | |
download | glibc-fca9d8e489ecdaaef96861e879658425e2db1297.tar.gz |
* sysdeps/mach/hurd/bits/libc-lock.h
(__libc_cleanup_push, __libc_cleanup_pop): New macros.
2003-08-01 Alfred M. Szmidt <ams@kemisten.nu>
* sysdeps/i386/dl-procinfo.h: New file, contents taken from ...
* sysdeps/unix/sysv/linux/i386/dl-procinfo.h: ... here.
#include_next dl-procinfo.h to get them.
(_DL_HWCAP_COUNT): Moved to sysdeps/i386/dl-procinfo.h.
(_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): Likewise.
(_dl_string_platform): Likewise.
* sysdeps/unix/sysv/linux/i386/dl-procinfo.c: Moved to ...
* sysdeps/i386/dl-procinfo.c: ... here, new file.
Diffstat (limited to 'sysdeps/i386/dl-procinfo.h')
-rw-r--r-- | sysdeps/i386/dl-procinfo.h | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/sysdeps/i386/dl-procinfo.h b/sysdeps/i386/dl-procinfo.h new file mode 100644 index 0000000000..51f783a95a --- /dev/null +++ b/sysdeps/i386/dl-procinfo.h @@ -0,0 +1,110 @@ +/* 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 +#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) + +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) + +}; + +/* 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]; +}; + +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 */ |