diff options
author | Ulrich Drepper <drepper@redhat.com> | 2007-06-30 17:03:55 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2007-06-30 17:03:55 +0000 |
commit | 3351649410d50dfbd3a52854dfe63107b88a8ea5 (patch) | |
tree | 41219af83960681d767f48f7f3bd58909b0e90ac /sysdeps/s390/dl-procinfo.h | |
parent | 0e508a6e4a0a80a4bcf625282d41f282c38757b3 (diff) | |
download | glibc-3351649410d50dfbd3a52854dfe63107b88a8ea5.tar.gz glibc-3351649410d50dfbd3a52854dfe63107b88a8ea5.tar.xz glibc-3351649410d50dfbd3a52854dfe63107b88a8ea5.zip |
007-06-29 Martin Schwidefsky <schwidefsky@de.ibm.com>
* sysdeps/s390/dl-procinfo.c: New file. * sysdeps/s390/dl-procinfo.h: New file. * sysdeps/unix/sysv/linux/s390/dl-procinfo.h: New file.
Diffstat (limited to 'sysdeps/s390/dl-procinfo.h')
-rw-r--r-- | sysdeps/s390/dl-procinfo.h | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/sysdeps/s390/dl-procinfo.h b/sysdeps/s390/dl-procinfo.h new file mode 100644 index 0000000000..178d7cc017 --- /dev/null +++ b/sysdeps/s390/dl-procinfo.h @@ -0,0 +1,99 @@ +/* s390 version of processor capability information handling macros. + Copyright (C) 2006 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2006. + + 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 7 + +#define _DL_PLATFORMS_COUNT 4 + +/* The kernel provides up to 32 capability bits with elf_hwcap. */ +#define _DL_FIRST_PLATFORM 32 +/* Mask to filter out platforms. */ +#define _DL_HWCAP_PLATFORM (((1ULL << _DL_PLATFORMS_COUNT) - 1) \ + << _DL_FIRST_PLATFORM) + +/* Hardware capablity bit numbers are derived directly from the + facility indications as stored by the "store facility list" (STFL) + instruction. */ + +enum +{ + HWCAP_S390_ESAN3 = 1 << 0, + HWCAP_S390_ZARCH = 1 << 1, + HWCAP_S390_STFLE = 1 << 2, + HWCAP_S390_MSA = 1 << 3, + HWCAP_S390_LDISP = 1 << 4, + HWCAP_S390_EIMM = 1 << 5, + HWCAP_S390_DFP = 1 << 6, +}; + +#define HWCAP_IMPORTANT (HWCAP_S390_ZARCH | HWCAP_S390_LDISP \ + | HWCAP_S390_EIMM | HWCAP_S390_DFP) + +/* We cannot provide a general printing function. */ +#define _dl_procinfo(word) -1 + +static inline const char * +__attribute__ ((unused)) +_dl_hwcap_string (int idx) +{ + return GLRO(dl_s390_cap_flags)[idx]; +}; + +static inline const char * +__attribute__ ((unused)) +_dl_platform_string (int idx) +{ + return GLRO(dl_s390_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, GLRO(dl_s390_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, GLRO(dl_s390_platforms)[i]) == 0) + return _DL_FIRST_PLATFORM + i; + } + return -1; +}; + +#endif /* dl-procinfo.h */ |