aboutsummaryrefslogtreecommitdiff
path: root/lib/libc/include/aarch64-linux-gnu/bits
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/include/aarch64-linux-gnu/bits')
-rw-r--r--lib/libc/include/aarch64-linux-gnu/bits/floatn.h97
-rw-r--r--lib/libc/include/aarch64-linux-gnu/bits/hwcap.h21
-rw-r--r--lib/libc/include/aarch64-linux-gnu/bits/long-double.h2
-rw-r--r--lib/libc/include/aarch64-linux-gnu/bits/mman.h31
-rw-r--r--lib/libc/include/aarch64-linux-gnu/bits/typesizes.h38
5 files changed, 81 insertions, 108 deletions
diff --git a/lib/libc/include/aarch64-linux-gnu/bits/floatn.h b/lib/libc/include/aarch64-linux-gnu/bits/floatn.h
deleted file mode 100644
index a4045e43a3..0000000000
--- a/lib/libc/include/aarch64-linux-gnu/bits/floatn.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* Macros to control TS 18661-3 glibc features on ldbl-128 platforms.
- Copyright (C) 2017-2020 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- 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, see
- <https://www.gnu.org/licenses/>. */
-
-#ifndef _BITS_FLOATN_H
-#define _BITS_FLOATN_H
-
-#include <features.h>
-#include <bits/long-double.h>
-
-/* Defined to 1 if the current compiler invocation provides a
- floating-point type with the IEEE 754 binary128 format, and this
- glibc includes corresponding *f128 interfaces for it. */
-#ifndef __NO_LONG_DOUBLE_MATH
-# define __HAVE_FLOAT128 1
-#else
-/* glibc does not support _Float128 for platforms where long double is
- normally binary128 when building with long double as binary64.
- GCC's default for supported scalar modes does not support it either
- in that case. */
-# define __HAVE_FLOAT128 0
-#endif
-
-/* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
- from the default float, double and long double types in this glibc. */
-#define __HAVE_DISTINCT_FLOAT128 0
-
-/* Defined to 1 if the current compiler invocation provides a
- floating-point type with the right format for _Float64x, and this
- glibc includes corresponding *f64x interfaces for it. */
-#define __HAVE_FLOAT64X __HAVE_FLOAT128
-
-/* Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format
- of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has
- the format of _Float128, which must be different from that of long
- double. */
-#define __HAVE_FLOAT64X_LONG_DOUBLE __HAVE_FLOAT128
-
-#ifndef __ASSEMBLER__
-
-/* Defined to concatenate the literal suffix to be used with _Float128
- types, if __HAVE_FLOAT128 is 1. */
-# if __HAVE_FLOAT128
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-/* The literal suffix f128 exists only since GCC 7.0. */
-# define __f128(x) x##l
-# else
-# define __f128(x) x##f128
-# endif
-# endif
-
-/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */
-# if __HAVE_FLOAT128
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-# define __CFLOAT128 _Complex long double
-# else
-# define __CFLOAT128 _Complex _Float128
-# endif
-# endif
-
-/* The remaining of this file provides support for older compilers. */
-# if __HAVE_FLOAT128
-
-/* The type _Float128 exists only since GCC 7.0. */
-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
-typedef long double _Float128;
-# endif
-
-/* Various built-in functions do not exist before GCC 7.0. */
-# if !__GNUC_PREREQ (7, 0)
-# define __builtin_huge_valf128() (__builtin_huge_vall ())
-# define __builtin_inff128() (__builtin_infl ())
-# define __builtin_nanf128(x) (__builtin_nanl (x))
-# define __builtin_nansf128(x) (__builtin_nansl (x))
-# endif
-
-# endif
-
-#endif /* !__ASSEMBLER__. */
-
-#include <bits/floatn-common.h>
-
-#endif /* _BITS_FLOATN_H */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-linux-gnu/bits/hwcap.h b/lib/libc/include/aarch64-linux-gnu/bits/hwcap.h
index cf38b9d8b7..9f3cadf056 100644
--- a/lib/libc/include/aarch64-linux-gnu/bits/hwcap.h
+++ b/lib/libc/include/aarch64-linux-gnu/bits/hwcap.h
@@ -53,4 +53,23 @@
#define HWCAP_SSBS (1 << 28)
#define HWCAP_SB (1 << 29)
#define HWCAP_PACA (1 << 30)
-#define HWCAP_PACG (1UL << 31) \ No newline at end of file
+#define HWCAP_PACG (1UL << 31)
+
+#define HWCAP2_DCPODP (1 << 0)
+#define HWCAP2_SVE2 (1 << 1)
+#define HWCAP2_SVEAES (1 << 2)
+#define HWCAP2_SVEPMULL (1 << 3)
+#define HWCAP2_SVEBITPERM (1 << 4)
+#define HWCAP2_SVESHA3 (1 << 5)
+#define HWCAP2_SVESM4 (1 << 6)
+#define HWCAP2_FLAGM2 (1 << 7)
+#define HWCAP2_FRINT (1 << 8)
+#define HWCAP2_SVEI8MM (1 << 9)
+#define HWCAP2_SVEF32MM (1 << 10)
+#define HWCAP2_SVEF64MM (1 << 11)
+#define HWCAP2_SVEBF16 (1 << 12)
+#define HWCAP2_I8MM (1 << 13)
+#define HWCAP2_BF16 (1 << 14)
+#define HWCAP2_DGH (1 << 15)
+#define HWCAP2_RNG (1 << 16)
+#define HWCAP2_BTI (1 << 17) \ No newline at end of file
diff --git a/lib/libc/include/aarch64-linux-gnu/bits/long-double.h b/lib/libc/include/aarch64-linux-gnu/bits/long-double.h
index ce06962796..f95b24f8e7 100644
--- a/lib/libc/include/aarch64-linux-gnu/bits/long-double.h
+++ b/lib/libc/include/aarch64-linux-gnu/bits/long-double.h
@@ -18,4 +18,4 @@
/* long double is distinct from double, so there is nothing to
define here. */
-#define __LONG_DOUBLE_USES_FLOAT128 0 \ No newline at end of file
+#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0 \ No newline at end of file
diff --git a/lib/libc/include/aarch64-linux-gnu/bits/mman.h b/lib/libc/include/aarch64-linux-gnu/bits/mman.h
new file mode 100644
index 0000000000..da9c3b862f
--- /dev/null
+++ b/lib/libc/include/aarch64-linux-gnu/bits/mman.h
@@ -0,0 +1,31 @@
+/* Definitions for POSIX memory map interface. Linux/AArch64 version.
+ Copyright (C) 2020 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ 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, see
+ <https://www.gnu.org/licenses/>. */
+
+#ifndef _SYS_MMAN_H
+# error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
+#endif
+
+/* AArch64 specific definitions, should be in sync with
+ arch/arm64/include/uapi/asm/mman.h. */
+
+#define PROT_BTI 0x10
+
+#include <bits/mman-map-flags-generic.h>
+
+/* Include generic Linux declarations. */
+#include <bits/mman-linux.h> \ No newline at end of file
diff --git a/lib/libc/include/aarch64-linux-gnu/bits/typesizes.h b/lib/libc/include/aarch64-linux-gnu/bits/typesizes.h
index d9e9b274ac..a5f4c78b94 100644
--- a/lib/libc/include/aarch64-linux-gnu/bits/typesizes.h
+++ b/lib/libc/include/aarch64-linux-gnu/bits/typesizes.h
@@ -26,31 +26,45 @@
/* See <bits/types.h> for the meaning of these macros. This file exists so
that <bits/types.h> need not vary across different GNU platforms. */
+#if __TIMESIZE == 64 && __WORDSIZE == 32
+/* These are the "new" y2038 types defined for architectures added after
+ the 5.1 kernel. */
+# define __INO_T_TYPE __UQUAD_TYPE
+# define __OFF_T_TYPE __SQUAD_TYPE
+# define __RLIM_T_TYPE __UQUAD_TYPE
+# define __BLKCNT_T_TYPE __SQUAD_TYPE
+# define __FSBLKCNT_T_TYPE __UQUAD_TYPE
+# define __FSFILCNT_T_TYPE __UQUAD_TYPE
+# define __TIME_T_TYPE __SQUAD_TYPE
+# define __SUSECONDS_T_TYPE __SQUAD_TYPE
+#else
+# define __INO_T_TYPE __ULONGWORD_TYPE
+# define __OFF_T_TYPE __SLONGWORD_TYPE
+# define __RLIM_T_TYPE __ULONGWORD_TYPE
+# define __BLKCNT_T_TYPE __SLONGWORD_TYPE
+# define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
+# define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
+# define __TIME_T_TYPE __SLONGWORD_TYPE
+# define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
+#endif
#define __DEV_T_TYPE __UQUAD_TYPE
#define __UID_T_TYPE __U32_TYPE
#define __GID_T_TYPE __U32_TYPE
-#define __INO_T_TYPE __ULONGWORD_TYPE
#define __INO64_T_TYPE __UQUAD_TYPE
#define __MODE_T_TYPE __U32_TYPE
#define __NLINK_T_TYPE __U32_TYPE
-#define __OFF_T_TYPE __SLONGWORD_TYPE
#define __OFF64_T_TYPE __SQUAD_TYPE
#define __PID_T_TYPE __S32_TYPE
-#define __RLIM_T_TYPE __ULONGWORD_TYPE
#define __RLIM64_T_TYPE __UQUAD_TYPE
-#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
#define __BLKCNT64_T_TYPE __SQUAD_TYPE
-#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
-#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
#define __FSWORD_T_TYPE __SWORD_TYPE
#define __ID_T_TYPE __U32_TYPE
#define __CLOCK_T_TYPE __SLONGWORD_TYPE
-#define __TIME_T_TYPE __SLONGWORD_TYPE
#define __USECONDS_T_TYPE __U32_TYPE
-#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
+#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
#define __DADDR_T_TYPE __S32_TYPE
#define __KEY_T_TYPE __S32_TYPE
#define __CLOCKID_T_TYPE __S32_TYPE
@@ -62,7 +76,7 @@
#define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE
#define __CPU_MASK_TYPE __ULONGWORD_TYPE
-#ifdef __LP64__
+#if defined __LP64__ || (__TIMESIZE == 64 && __WORDSIZE == 32)
/* Tell the libc code that off_t and off64_t are actually the same type
for all ABI purposes, even if possibly expressed as different base types
for C type-checking purposes. */
@@ -76,11 +90,17 @@
/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */
# define __STATFS_MATCHES_STATFS64 1
+
+/* And for getitimer, setitimer and rusage */
+# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 (__WORDSIZE == 64)
#else
# define __RLIM_T_MATCHES_RLIM64_T 0
# define __STATFS_MATCHES_STATFS64 0
+
+# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0
#endif
+
/* Number of descriptors that can fit in an `fd_set'. */
#define __FD_SETSIZE 1024