authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-12-15 19:25:26-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-12-16 03:01:13-07:00
logc8af00c66e8b6f62e4dd6ac4d86a3de03e9ea354
treee0df38be78d663f802c6622f509d4d399ae133c4
parent5aeffab693a878679674f9a2f8bb2e6825da705d

glibc: fix inconsistency of powerpc ABI mapping

See the commit message of 5b6d26e97bb97d79782f3c77b02a997e361a1497 for an explanation. This is the same thing but for powerpc instead of mips.

125 files changed, 5937 insertions(+), 2993 deletions(-)

lib/libc/include/generic-glibc/features.h+2-2
...@@ -477,7 +477,7 @@...@@ -477,7 +477,7 @@
477/* Major and minor version number of the GNU C library package. Use477/* Major and minor version number of the GNU C library package. Use
478 these macros to test for features in specific releases. */478 these macros to test for features in specific releases. */
479#define __GLIBC__ 2479#define __GLIBC__ 2
480/* Zig patch: we pass `-D__GLIBC_MINOR__=XX` depending on the target. */480#define __GLIBC_MINOR__ 34
481481
482#define __GLIBC_PREREQ(maj, min) \482#define __GLIBC_PREREQ(maj, min) \
483 ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))483 ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
...@@ -512,4 +512,4 @@...@@ -512,4 +512,4 @@
512#include <gnu/stubs.h>512#include <gnu/stubs.h>
513513
514514
515#endif /* features.h */515#endif /* features.h */
\ No newline at end of file
lib/libc/include/generic-glibc/gnu/lib-names-ilp32.h deleted-30
...@@ -1,30 +0,0 @@
1/* This file is automatically generated. */
2#ifndef __GNU_LIB_NAMES_H
3# error "Never use <gnu/lib-names-ilp32.h> directly; include <gnu/lib-names.h> instead."
4#endif
5
6#define LD_LINUX_RISCV32_ILP32_SO "ld-linux-riscv32-ilp32.so.1"
7#define LD_SO "ld-linux-riscv32-ilp32.so.1"
8#define LIBANL_SO "libanl.so.1"
9#define LIBBROKENLOCALE_SO "libBrokenLocale.so.1"
10#define LIBCRYPT_SO "libcrypt.so.1"
11#define LIBC_MALLOC_DEBUG_SO "libc_malloc_debug.so.0"
12#define LIBC_SO "libc.so.6"
13#define LIBDL_SO "libdl.so.2"
14#define LIBGCC_S_SO "libgcc_s.so.1"
15#define LIBMVEC_SO "libmvec.so.1"
16#define LIBM_SO "libm.so.6"
17#define LIBNSL_SO "libnsl.so.1"
18#define LIBNSS_COMPAT_SO "libnss_compat.so.2"
19#define LIBNSS_DB_SO "libnss_db.so.2"
20#define LIBNSS_DNS_SO "libnss_dns.so.2"
21#define LIBNSS_FILES_SO "libnss_files.so.2"
22#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
23#define LIBNSS_LDAP_SO "libnss_ldap.so.2"
24#define LIBNSS_TEST1_SO "libnss_test1.so.2"
25#define LIBNSS_TEST2_SO "libnss_test2.so.2"
26#define LIBPTHREAD_SO "libpthread.so.0"
27#define LIBRESOLV_SO "libresolv.so.2"
28#define LIBRT_SO "librt.so.1"
29#define LIBTHREAD_DB_SO "libthread_db.so.1"
30#define LIBUTIL_SO "libutil.so.1"
lib/libc/include/powerpc-linux-gnu/bits/endianness.h deleted-16
...@@ -1,16 +0,0 @@
1#ifndef _BITS_ENDIANNESS_H
2#define _BITS_ENDIANNESS_H 1
3
4#ifndef _BITS_ENDIAN_H
5# error "Never use <bits/endianness.h> directly; include <endian.h> instead."
6#endif
7
8/* PowerPC has selectable endianness. */
9#if defined __BIG_ENDIAN__ || defined _BIG_ENDIAN
10# define __BYTE_ORDER __BIG_ENDIAN
11#endif
12#if defined __LITTLE_ENDIAN__ || defined _LITTLE_ENDIAN
13# define __BYTE_ORDER __LITTLE_ENDIAN
14#endif
15
16#endif /* bits/endianness.h */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/environments.h deleted-96
...@@ -1,96 +0,0 @@
1/* Copyright (C) 1999-2021 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _UNISTD_H
19# error "Never include this file directly. Use <unistd.h> instead"
20#endif
21
22#include <bits/wordsize.h>
23
24/* This header should define the following symbols under the described
25 situations. A value `1' means that the model is always supported,
26 `-1' means it is never supported. Undefined means it cannot be
27 statically decided.
28
29 _POSIX_V7_ILP32_OFF32 32bit int, long, pointers, and off_t type
30 _POSIX_V7_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type
31
32 _POSIX_V7_LP64_OFF32 64bit long and pointers and 32bit off_t type
33 _POSIX_V7_LPBIG_OFFBIG 64bit long and pointers and large off_t type
34
35 The macros _POSIX_V6_ILP32_OFF32, _POSIX_V6_ILP32_OFFBIG,
36 _POSIX_V6_LP64_OFF32, _POSIX_V6_LPBIG_OFFBIG, _XBS5_ILP32_OFF32,
37 _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and _XBS5_LPBIG_OFFBIG were
38 used in previous versions of the Unix standard and are available
39 only for compatibility.
40*/
41
42#if __WORDSIZE == 64
43
44/* Environments with 32-bit wide pointers are optionally provided.
45 Therefore following macros aren't defined:
46 # undef _POSIX_V7_ILP32_OFF32
47 # undef _POSIX_V7_ILP32_OFFBIG
48 # undef _POSIX_V6_ILP32_OFF32
49 # undef _POSIX_V6_ILP32_OFFBIG
50 # undef _XBS5_ILP32_OFF32
51 # undef _XBS5_ILP32_OFFBIG
52 and users need to check at runtime. */
53
54/* We also have no use (for now) for an environment with bigger pointers
55 and offsets. */
56# define _POSIX_V7_LPBIG_OFFBIG -1
57# define _POSIX_V6_LPBIG_OFFBIG -1
58# define _XBS5_LPBIG_OFFBIG -1
59
60/* By default we have 64-bit wide `long int', pointers and `off_t'. */
61# define _POSIX_V7_LP64_OFF64 1
62# define _POSIX_V6_LP64_OFF64 1
63# define _XBS5_LP64_OFF64 1
64
65#else /* __WORDSIZE == 32 */
66
67/* By default we have 32-bit wide `int', `long int', pointers and `off_t'
68 and all platforms support LFS. */
69# define _POSIX_V7_ILP32_OFF32 1
70# define _POSIX_V7_ILP32_OFFBIG 1
71# define _POSIX_V6_ILP32_OFF32 1
72# define _POSIX_V6_ILP32_OFFBIG 1
73# define _XBS5_ILP32_OFF32 1
74# define _XBS5_ILP32_OFFBIG 1
75
76/* We optionally provide an environment with the above size but an 64-bit
77 side `off_t'. Therefore we don't define _POSIX_V7_ILP32_OFFBIG. */
78
79/* Environments with 64-bit wide pointers can be provided,
80 so these macros aren't defined:
81 # undef _POSIX_V7_LP64_OFF64
82 # undef _POSIX_V7_LPBIG_OFFBIG
83 # undef _POSIX_V6_LP64_OFF64
84 # undef _POSIX_V6_LPBIG_OFFBIG
85 # undef _XBS5_LP64_OFF64
86 # undef _XBS5_LPBIG_OFFBIG
87 and sysconf tests for it at runtime. */
88
89#endif /* __WORDSIZE == 32 */
90
91#define __ILP32_OFF32_CFLAGS "-m32"
92#define __ILP32_OFFBIG_CFLAGS "-m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
93#define __ILP32_OFF32_LDFLAGS "-m32"
94#define __ILP32_OFFBIG_LDFLAGS "-m32"
95#define __LP64_OFF64_CFLAGS "-m64"
96#define __LP64_OFF64_LDFLAGS "-m64"
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/fcntl.h deleted-62
...@@ -1,62 +0,0 @@
1/* O_*, F_*, FD_* bit values for Linux/PowerPC.
2 Copyright (C) 1995-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _FCNTL_H
20# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
21#endif
22
23#include <bits/wordsize.h>
24
25#define __O_DIRECTORY 040000 /* Must be a directory. */
26#define __O_NOFOLLOW 0100000 /* Do not follow links. */
27#define __O_DIRECT 0400000 /* Direct disk access. */
28
29#if __WORDSIZE == 64
30/* Not necessary, files are always with 64bit off_t. */
31# define __O_LARGEFILE 0
32#else
33# define __O_LARGEFILE 0200000
34#endif
35
36struct flock
37 {
38 short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
39 short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
40#ifndef __USE_FILE_OFFSET64
41 __off_t l_start; /* Offset where the lock begins. */
42 __off_t l_len; /* Size of the locked area; zero means until EOF. */
43#else
44 __off64_t l_start; /* Offset where the lock begins. */
45 __off64_t l_len; /* Size of the locked area; zero means until EOF. */
46#endif
47 __pid_t l_pid; /* Process holding the lock. */
48 };
49
50#ifdef __USE_LARGEFILE64
51struct flock64
52 {
53 short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
54 short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
55 __off64_t l_start; /* Offset where the lock begins. */
56 __off64_t l_len; /* Size of the locked area; zero means until EOF. */
57 __pid_t l_pid; /* Process holding the lock. */
58 };
59#endif
60
61/* Include generic Linux declarations. */
62#include <bits/fcntl-linux.h>
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/fenv.h deleted-180
...@@ -1,180 +0,0 @@
1/* Copyright (C) 1997-2021 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _FENV_H
19# error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
20#endif
21
22
23/* Define bits representing the exception. We use the bit positions of
24 the appropriate bits in the FPSCR... */
25enum
26 {
27 FE_INEXACT =
28#define FE_INEXACT (1 << (31 - 6))
29 FE_INEXACT,
30 FE_DIVBYZERO =
31#define FE_DIVBYZERO (1 << (31 - 5))
32 FE_DIVBYZERO,
33 FE_UNDERFLOW =
34#define FE_UNDERFLOW (1 << (31 - 4))
35 FE_UNDERFLOW,
36 FE_OVERFLOW =
37#define FE_OVERFLOW (1 << (31 - 3))
38 FE_OVERFLOW,
39
40 /* ... except for FE_INVALID, for which we use bit 31. FE_INVALID
41 actually corresponds to bits 7 through 12 and 21 through 23
42 in the FPSCR, but we can't use that because the current draft
43 says that it must be a power of 2. Instead we use bit 2 which
44 is the summary bit for all the FE_INVALID exceptions, which
45 kind of makes sense. */
46 FE_INVALID =
47#define FE_INVALID (1 << (31 - 2))
48 FE_INVALID,
49
50#ifdef __USE_GNU
51 /* Breakdown of the FE_INVALID bits. Setting FE_INVALID on an
52 input to a routine is equivalent to setting all of these bits;
53 FE_INVALID will be set on output from a routine iff one of
54 these bits is set. Note, though, that you can't disable or
55 enable these exceptions individually. */
56
57 /* Operation with a sNaN. */
58 FE_INVALID_SNAN =
59# define FE_INVALID_SNAN (1 << (31 - 7))
60 FE_INVALID_SNAN,
61
62 /* Inf - Inf */
63 FE_INVALID_ISI =
64# define FE_INVALID_ISI (1 << (31 - 8))
65 FE_INVALID_ISI,
66
67 /* Inf / Inf */
68 FE_INVALID_IDI =
69# define FE_INVALID_IDI (1 << (31 - 9))
70 FE_INVALID_IDI,
71
72 /* 0 / 0 */
73 FE_INVALID_ZDZ =
74# define FE_INVALID_ZDZ (1 << (31 - 10))
75 FE_INVALID_ZDZ,
76
77 /* Inf * 0 */
78 FE_INVALID_IMZ =
79# define FE_INVALID_IMZ (1 << (31 - 11))
80 FE_INVALID_IMZ,
81
82 /* Comparison with a NaN. */
83 FE_INVALID_COMPARE =
84# define FE_INVALID_COMPARE (1 << (31 - 12))
85 FE_INVALID_COMPARE,
86
87 /* Invalid operation flag for software (not set by hardware). */
88 /* Note that some chips don't have this implemented, presumably
89 because no-one expected anyone to write software for them %-). */
90 FE_INVALID_SOFTWARE =
91# define FE_INVALID_SOFTWARE (1 << (31 - 21))
92 FE_INVALID_SOFTWARE,
93
94 /* Square root of negative number (including -Inf). */
95 /* Note that some chips don't have this implemented. */
96 FE_INVALID_SQRT =
97# define FE_INVALID_SQRT (1 << (31 - 22))
98 FE_INVALID_SQRT,
99
100 /* Conversion-to-integer of a NaN or a number too large or too small. */
101 FE_INVALID_INTEGER_CONVERSION =
102# define FE_INVALID_INTEGER_CONVERSION (1 << (31 - 23))
103 FE_INVALID_INTEGER_CONVERSION
104
105# define FE_ALL_INVALID \
106 (FE_INVALID_SNAN | FE_INVALID_ISI | FE_INVALID_IDI | FE_INVALID_ZDZ \
107 | FE_INVALID_IMZ | FE_INVALID_COMPARE | FE_INVALID_SOFTWARE \
108 | FE_INVALID_SQRT | FE_INVALID_INTEGER_CONVERSION)
109#endif
110 };
111
112#define FE_ALL_EXCEPT \
113 (FE_INEXACT | FE_DIVBYZERO | FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID)
114
115/* PowerPC chips support all of the four defined rounding modes. We
116 use the bit pattern in the FPSCR as the values for the
117 appropriate macros. */
118enum
119 {
120 FE_TONEAREST =
121#define FE_TONEAREST 0
122 FE_TONEAREST,
123 FE_TOWARDZERO =
124#define FE_TOWARDZERO 1
125 FE_TOWARDZERO,
126 FE_UPWARD =
127#define FE_UPWARD 2
128 FE_UPWARD,
129 FE_DOWNWARD =
130#define FE_DOWNWARD 3
131 FE_DOWNWARD
132 };
133
134/* Type representing exception flags. */
135typedef unsigned int fexcept_t;
136
137/* Type representing floating-point environment. We leave it as 'double'
138 for efficiency reasons (rather than writing it to a 32-bit integer). */
139typedef double fenv_t;
140
141/* If the default argument is used we use this value. */
142extern const fenv_t __fe_dfl_env;
143#define FE_DFL_ENV (&__fe_dfl_env)
144
145#ifdef __USE_GNU
146/* Floating-point environment where all exceptions are enabled. Note that
147 this is not sufficient to give you SIGFPE. */
148extern const fenv_t __fe_enabled_env;
149# define FE_ENABLED_ENV (&__fe_enabled_env)
150
151/* Floating-point environment with (processor-dependent) non-IEEE floating
152 point. */
153extern const fenv_t __fe_nonieee_env;
154# define FE_NONIEEE_ENV (&__fe_nonieee_env)
155
156/* Floating-point environment with all exceptions enabled. Note that
157 just evaluating this value does not change the processor exception mode.
158 Passing this mask to fesetenv will result in a prctl syscall to change
159 the MSR FE0/FE1 bits to "Precise Mode". On some processors this will
160 result in slower floating point execution. This will last until an
161 fenv or exception mask is installed that disables all FP exceptions. */
162# define FE_NOMASK_ENV FE_ENABLED_ENV
163
164/* Floating-point environment with all exceptions disabled. Note that
165 just evaluating this value does not change the processor exception mode.
166 Passing this mask to fesetenv will result in a prctl syscall to change
167 the MSR FE0/FE1 bits to "Ignore Exceptions Mode". On most processors
168 this allows the fastest possible floating point execution.*/
169# define FE_MASK_ENV FE_DFL_ENV
170
171#endif
172
173#if __GLIBC_USE (IEC_60559_BFP_EXT_C2X)
174/* Type representing floating-point control modes. */
175typedef double femode_t;
176
177/* Default floating-point control modes. */
178extern const femode_t __fe_dfl_mode;
179# define FE_DFL_MODE (&__fe_dfl_mode)
180#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/floatn.h deleted-122
...@@ -1,122 +0,0 @@
1/* Macros to control TS 18661-3 glibc features on powerpc.
2 Copyright (C) 2017-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_FLOATN_H
20#define _BITS_FLOATN_H
21
22#include <features.h>
23#include <bits/long-double.h>
24
25/* Defined to 1 if the current compiler invocation provides a
26 floating-point type with the IEEE 754 binary128 format, and this glibc
27 includes corresponding *f128 interfaces for it. */
28#if defined _ARCH_PWR8 && defined __LITTLE_ENDIAN__ && (_CALL_ELF == 2) \
29 && defined __FLOAT128__ && !defined __NO_LONG_DOUBLE_MATH
30# define __HAVE_FLOAT128 1
31#else
32# define __HAVE_FLOAT128 0
33#endif
34
35/* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
36 from the default float, double and long double types in this glibc, i.e.
37 calls to the binary128 functions go to *f128 symbols instead of *l. */
38#if __HAVE_FLOAT128
39# define __HAVE_DISTINCT_FLOAT128 1
40#else
41# define __HAVE_DISTINCT_FLOAT128 0
42#endif
43
44/* Defined to 1 if the current compiler invocation provides a
45 floating-point type with the right format for _Float64x, and this
46 glibc includes corresponding *f64x interfaces for it. */
47#define __HAVE_FLOAT64X __HAVE_FLOAT128
48
49/* Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format
50 of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has
51 the format of _Float128, which must be different from that of long
52 double. */
53#define __HAVE_FLOAT64X_LONG_DOUBLE 0
54
55#ifndef __ASSEMBLER__
56
57/* Defined to concatenate the literal suffix to be used with _Float128
58 types, if __HAVE_FLOAT128 is 1. */
59# if __HAVE_FLOAT128
60# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
61/* The literal suffix (f128) exist for powerpc only since GCC 7.0. */
62# if __LDBL_MANT_DIG__ == 113
63# define __f128(x) x##l
64# else
65# define __f128(x) x##q
66# endif
67# else
68# define __f128(x) x##f128
69# endif
70# endif
71
72/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */
73# if __HAVE_FLOAT128
74# if __LDBL_MANT_DIG__ == 113 && defined __cplusplus
75typedef long double _Float128;
76# define __CFLOAT128 _Complex long double
77# elif !__GNUC_PREREQ (7, 0) || defined __cplusplus
78/* The type _Float128 exist for powerpc only since GCC 7.0. */
79typedef __float128 _Float128;
80/* Add a typedef for older GCC and C++ compilers which don't natively support
81 _Complex _Float128. */
82typedef _Complex float __cfloat128 __attribute__ ((__mode__ (__KC__)));
83# define __CFLOAT128 __cfloat128
84# else
85# define __CFLOAT128 _Complex _Float128
86# endif
87# endif
88
89/* The remaining of this file provides support for older compilers. */
90# if __HAVE_FLOAT128
91/* Builtin __builtin_huge_valf128 doesn't exist before GCC 7.0. */
92# if !__GNUC_PREREQ (7, 0)
93# define __builtin_huge_valf128() ((_Float128) __builtin_huge_val ())
94# endif
95
96/* The following builtins (suffixed with 'q') are available in GCC >= 6.2,
97 which is the minimum version required for float128 support on powerpc64le.
98 Since GCC 7.0 the builtins suffixed with f128 are also available, then
99 there is no need to redefined them. */
100# if !__GNUC_PREREQ (7, 0)
101# define __builtin_copysignf128 __builtin_copysignq
102# define __builtin_fabsf128 __builtin_fabsq
103# define __builtin_inff128 __builtin_infq
104# define __builtin_nanf128 __builtin_nanq
105# define __builtin_nansf128 __builtin_nansq
106# endif
107
108/* In math/math.h, __MATH_TG will expand signbit to __builtin_signbit*,
109 e.g.: __builtin_signbitf128, before GCC 6. However, there has never
110 been a __builtin_signbitf128 in GCC and the type-generic builtin is
111 only available since GCC 6. */
112# if !__GNUC_PREREQ (6, 0)
113# define __builtin_signbitf128 __signbitf128
114# endif
115
116# endif
117
118#endif /* !__ASSEMBLER__. */
119
120#include <bits/floatn-common.h>
121
122#endif /* _BITS_FLOATN_H */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/fp-fast.h deleted-39
...@@ -1,39 +0,0 @@
1/* Define FP_FAST_* macros. PowerPC version.
2 Copyright (C) 2016-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _MATH_H
20# error "Never use <bits/fp-fast.h> directly; include <math.h> instead."
21#endif
22
23#ifdef __USE_ISOC99
24
25/* The GCC 4.6 compiler will define __FP_FAST_FMA{,F,L} if the fma{,f,l}
26 builtins are supported. */
27# if (!defined _SOFT_FLOAT && !defined __NO_FPRS__) || defined __FP_FAST_FMA
28# define FP_FAST_FMA 1
29# endif
30
31# if (!defined _SOFT_FLOAT && !defined __NO_FPRS__) || defined __FP_FAST_FMAF
32# define FP_FAST_FMAF 1
33# endif
34
35# ifdef __FP_FAST_FMAL
36# define FP_FAST_FMAL 1
37# endif
38
39#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/hwcap.h deleted-78
...@@ -1,78 +0,0 @@
1/* Defines for bits in AT_HWCAP and AT_HWCAP2.
2 Copyright (C) 2012-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#if !defined(_SYS_AUXV_H) && !defined(_SYSDEPS_SYSDEP_H)
20# error "Never include <bits/hwcap.h> directly; use <sys/auxv.h> instead."
21#endif
22
23/* The bit numbers must match those in the kernel's asm/cputable.h. */
24
25/* Feature definitions in AT_HWCAP. */
26#define PPC_FEATURE_32 0x80000000 /* 32-bit mode. */
27#define PPC_FEATURE_64 0x40000000 /* 64-bit mode. */
28#define PPC_FEATURE_601_INSTR 0x20000000 /* 601 chip, Old POWER ISA. */
29#define PPC_FEATURE_HAS_ALTIVEC 0x10000000 /* SIMD/Vector Unit. */
30#define PPC_FEATURE_HAS_FPU 0x08000000 /* Floating Point Unit. */
31#define PPC_FEATURE_HAS_MMU 0x04000000 /* Memory Management Unit. */
32#define PPC_FEATURE_HAS_4xxMAC 0x02000000 /* 4xx Multiply Accumulator. */
33#define PPC_FEATURE_UNIFIED_CACHE 0x01000000 /* Unified I/D cache. */
34#define PPC_FEATURE_HAS_SPE 0x00800000 /* Signal Processing ext. */
35#define PPC_FEATURE_HAS_EFP_SINGLE 0x00400000 /* SPE Float. */
36#define PPC_FEATURE_HAS_EFP_DOUBLE 0x00200000 /* SPE Double. */
37#define PPC_FEATURE_NO_TB 0x00100000 /* 601/403gx have no timebase */
38#define PPC_FEATURE_POWER4 0x00080000 /* POWER4 ISA 2.00 */
39#define PPC_FEATURE_POWER5 0x00040000 /* POWER5 ISA 2.02 */
40#define PPC_FEATURE_POWER5_PLUS 0x00020000 /* POWER5+ ISA 2.03 */
41#define PPC_FEATURE_CELL_BE 0x00010000 /* CELL Broadband Engine */
42#define PPC_FEATURE_BOOKE 0x00008000 /* ISA Category Embedded */
43#define PPC_FEATURE_SMT 0x00004000 /* Simultaneous
44 Multi-Threading */
45#define PPC_FEATURE_ICACHE_SNOOP 0x00002000
46#define PPC_FEATURE_ARCH_2_05 0x00001000 /* ISA 2.05 */
47#define PPC_FEATURE_PA6T 0x00000800 /* PA Semi 6T Core */
48#define PPC_FEATURE_HAS_DFP 0x00000400 /* Decimal FP Unit */
49#define PPC_FEATURE_POWER6_EXT 0x00000200 /* P6 + mffgpr/mftgpr */
50#define PPC_FEATURE_ARCH_2_06 0x00000100 /* ISA 2.06 */
51#define PPC_FEATURE_HAS_VSX 0x00000080 /* P7 Vector Extension. */
52#define PPC_FEATURE_PSERIES_PERFMON_COMPAT 0x00000040
53/* Reserved by the kernel. 0x00000004 Do not use. */
54#define PPC_FEATURE_TRUE_LE 0x00000002
55#define PPC_FEATURE_PPC_LE 0x00000001
56
57/* Feature definitions in AT_HWCAP2. */
58#define PPC_FEATURE2_ARCH_2_07 0x80000000 /* ISA 2.07 */
59#define PPC_FEATURE2_HAS_HTM 0x40000000 /* Hardware Transactional
60 Memory */
61#define PPC_FEATURE2_HAS_DSCR 0x20000000 /* Data Stream Control
62 Register */
63#define PPC_FEATURE2_HAS_EBB 0x10000000 /* Event Base Branching */
64#define PPC_FEATURE2_HAS_ISEL 0x08000000 /* Integer Select */
65#define PPC_FEATURE2_HAS_TAR 0x04000000 /* Target Address Register */
66#define PPC_FEATURE2_HAS_VEC_CRYPTO 0x02000000 /* Target supports vector
67 instruction. */
68#define PPC_FEATURE2_HTM_NOSC 0x01000000 /* Kernel aborts transaction
69 when a syscall is made. */
70#define PPC_FEATURE2_ARCH_3_00 0x00800000 /* ISA 3.0 */
71#define PPC_FEATURE2_HAS_IEEE128 0x00400000 /* VSX IEEE Binary Float
72 128-bit */
73#define PPC_FEATURE2_DARN 0x00200000 /* darn instruction. */
74#define PPC_FEATURE2_SCV 0x00100000 /* scv syscall. */
75#define PPC_FEATURE2_HTM_NO_SUSPEND 0x00080000 /* TM without suspended
76 state. */
77#define PPC_FEATURE2_ARCH_3_1 0x00040000 /* ISA 3.1. */
78#define PPC_FEATURE2_MMA 0x00020000 /* Matrix-Multiply Assist. */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/ioctl-types.h deleted-77
...@@ -1,77 +0,0 @@
1/* Structure types for pre-termios terminal ioctls. Linux/powerpc version.
2 Copyright (C) 2014-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_IOCTL_H
20# error "Never use <bits/ioctl-types.h> directly; include <sys/ioctl.h> instead."
21#endif
22
23/* Get definition of constants for use with `ioctl'. */
24#include <asm/ioctls.h>
25
26
27struct winsize
28 {
29 unsigned short int ws_row;
30 unsigned short int ws_col;
31 unsigned short int ws_xpixel;
32 unsigned short int ws_ypixel;
33 };
34
35#define NCC 10
36struct termio
37 {
38 unsigned short int c_iflag; /* input mode flags */
39 unsigned short int c_oflag; /* output mode flags */
40 unsigned short int c_cflag; /* control mode flags */
41 unsigned short int c_lflag; /* local mode flags */
42 unsigned char c_line; /* line discipline */
43 unsigned char c_cc[NCC]; /* control characters */
44};
45
46/* modem lines */
47#define TIOCM_LE 0x001
48#define TIOCM_DTR 0x002
49#define TIOCM_RTS 0x004
50#define TIOCM_ST 0x008
51#define TIOCM_SR 0x010
52#define TIOCM_CTS 0x020
53#define TIOCM_CAR 0x040
54#define TIOCM_RNG 0x080
55#define TIOCM_DSR 0x100
56#define TIOCM_CD TIOCM_CAR
57#define TIOCM_RI TIOCM_RNG
58
59/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
60
61/* line disciplines */
62#define N_TTY 0
63#define N_SLIP 1
64#define N_MOUSE 2
65#define N_PPP 3
66#define N_STRIP 4
67#define N_AX25 5
68#define N_X25 6 /* X.25 async */
69#define N_6PACK 7
70#define N_MASC 8 /* Mobitex module */
71#define N_R3964 9 /* Simatic R3964 module */
72#define N_PROFIBUS_FDL 10 /* Profibus */
73#define N_IRDA 11 /* Linux IR */
74#define N_SMSBLOCK 12 /* SMS block mode */
75#define N_HDLC 13 /* synchronous HDLC */
76#define N_SYNC_PPP 14 /* synchronous PPP */
77#define N_HCI 15 /* Bluetooth HCI UART */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/ipc-perm.h deleted-36
...@@ -1,36 +0,0 @@
1/* struct ipc_perm definition. Linux/powerpc version.
2 Copyright (C) 1995-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_IPC_H
20# error "Never use <bits/ipc-perm.h> directly; include <sys/ipc.h> instead."
21#endif
22
23/* Data structure used to pass permission information to IPC operations. */
24struct ipc_perm
25 {
26 __key_t __key; /* Key. */
27 __uid_t uid; /* Owner's user ID. */
28 __gid_t gid; /* Owner's group ID. */
29 __uid_t cuid; /* Creator's user ID. */
30 __gid_t cgid; /* Creator's group ID. */
31 __mode_t mode; /* Read/write permission. */
32 __uint32_t __seq; /* Sequence number. */
33 __uint32_t __pad1;
34 __uint64_t __glibc_reserved1;
35 __uint64_t __glibc_reserved2;
36 };
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/iscanonical.h deleted-58
...@@ -1,58 +0,0 @@
1/* Define iscanonical macro. ldbl-128ibm version.
2 Copyright (C) 2016-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _MATH_H
20# error "Never use <bits/iscanonical.h> directly; include <math.h> instead."
21#endif
22
23#if defined (__NO_LONG_DOUBLE_MATH) || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
24# define iscanonical(x) ((void) (__typeof (x)) (x), 1)
25#else
26extern int __iscanonicall (long double __x)
27 __THROW __attribute__ ((__const__));
28# define __iscanonicalf(x) ((void) (__typeof (x)) (x), 1)
29# define __iscanonical(x) ((void) (__typeof (x)) (x), 1)
30# if __HAVE_DISTINCT_FLOAT128
31# define __iscanonicalf128(x) ((void) (__typeof (x)) (x), 1)
32# endif
33
34/* Return nonzero value if X is canonical. In IEEE interchange binary
35 formats, all values are canonical, but the argument must still be
36 converted to its semantic type for any exceptions arising from the
37 conversion, before being discarded; in IBM long double, there are
38 encodings that are not consistently handled as corresponding to any
39 particular value of the type, and we return 0 for those. */
40# ifndef __cplusplus
41# define iscanonical(x) __MATH_TG ((x), __iscanonical, (x))
42# else
43/* In C++ mode, __MATH_TG cannot be used, because it relies on
44 __builtin_types_compatible_p, which is a C-only builtin. On the
45 other hand, overloading provides the means to distinguish between
46 the floating-point types. The overloading resolution will match
47 the correct parameter (regardless of type qualifiers (i.e.: const
48 and volatile)). */
49extern "C++" {
50inline int iscanonical (float __val) { return __iscanonicalf (__val); }
51inline int iscanonical (double __val) { return __iscanonical (__val); }
52inline int iscanonical (long double __val) { return __iscanonicall (__val); }
53# if __HAVE_DISTINCT_FLOAT128
54inline int iscanonical (_Float128 __val) { return __iscanonicalf128 (__val); }
55# endif
56}
57# endif /* __cplusplus */
58#endif /* __NO_LONG_DOUBLE_MATH */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/link.h deleted-156
...@@ -1,156 +0,0 @@
1/* Machine-specific declarations for dynamic linker interface. PowerPC version
2 Copyright (C) 2004-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _LINK_H
20# error "Never include <bits/link.h> directly; use <link.h> instead."
21#endif
22
23
24#if __ELF_NATIVE_CLASS == 32
25
26/* Registers for entry into PLT on PPC32. */
27typedef struct La_ppc32_regs
28{
29 uint32_t lr_reg[8];
30 double lr_fp[8];
31 uint32_t lr_vreg[12][4];
32 uint32_t lr_r1;
33 uint32_t lr_lr;
34} La_ppc32_regs;
35
36/* Return values for calls from PLT on PPC32. */
37typedef struct La_ppc32_retval
38{
39 uint32_t lrv_r3;
40 uint32_t lrv_r4;
41 double lrv_fp[8];
42 uint32_t lrv_v2[4];
43} La_ppc32_retval;
44
45
46__BEGIN_DECLS
47
48extern Elf32_Addr la_ppc32_gnu_pltenter (Elf32_Sym *__sym,
49 unsigned int __ndx,
50 uintptr_t *__refcook,
51 uintptr_t *__defcook,
52 La_ppc32_regs *__regs,
53 unsigned int *__flags,
54 const char *__symname,
55 long int *__framesizep);
56extern unsigned int la_ppc32_gnu_pltexit (Elf32_Sym *__sym,
57 unsigned int __ndx,
58 uintptr_t *__refcook,
59 uintptr_t *__defcook,
60 const La_ppc32_regs *__inregs,
61 La_ppc32_retval *__outregs,
62 const char *__symname);
63
64__END_DECLS
65
66#elif __ELF_NATIVE_CLASS == 64
67# if _CALL_ELF != 2
68
69/* Registers for entry into PLT on PPC64. */
70typedef struct La_ppc64_regs
71{
72 uint64_t lr_reg[8];
73 double lr_fp[13];
74 uint32_t __padding;
75 uint32_t lr_vrsave;
76 uint32_t lr_vreg[12][4];
77 uint64_t lr_r1;
78 uint64_t lr_lr;
79} La_ppc64_regs;
80
81/* Return values for calls from PLT on PPC64. */
82typedef struct La_ppc64_retval
83{
84 uint64_t lrv_r3;
85 uint64_t lrv_r4;
86 double lrv_fp[4]; /* f1-f4, float - complex long double. */
87 uint32_t lrv_v2[4]; /* v2. */
88} La_ppc64_retval;
89
90
91__BEGIN_DECLS
92
93extern Elf64_Addr la_ppc64_gnu_pltenter (Elf64_Sym *__sym,
94 unsigned int __ndx,
95 uintptr_t *__refcook,
96 uintptr_t *__defcook,
97 La_ppc64_regs *__regs,
98 unsigned int *__flags,
99 const char *__symname,
100 long int *__framesizep);
101extern unsigned int la_ppc64_gnu_pltexit (Elf64_Sym *__sym,
102 unsigned int __ndx,
103 uintptr_t *__refcook,
104 uintptr_t *__defcook,
105 const La_ppc64_regs *__inregs,
106 La_ppc64_retval *__outregs,
107 const char *__symname);
108
109__END_DECLS
110
111# else
112
113/* Registers for entry into PLT on PPC64 in the ELFv2 ABI. */
114typedef struct La_ppc64v2_regs
115{
116 uint64_t lr_reg[8];
117 double lr_fp[13];
118 uint32_t __padding;
119 uint32_t lr_vrsave;
120 uint32_t lr_vreg[12][4] __attribute__ ((aligned (16)));
121 uint64_t lr_r1;
122 uint64_t lr_lr;
123} La_ppc64v2_regs;
124
125/* Return values for calls from PLT on PPC64 in the ELFv2 ABI. */
126typedef struct La_ppc64v2_retval
127{
128 uint64_t lrv_r3;
129 uint64_t lrv_r4;
130 double lrv_fp[10];
131 uint32_t lrv_vreg[8][4] __attribute__ ((aligned (16)));
132} La_ppc64v2_retval;
133
134
135__BEGIN_DECLS
136
137extern Elf64_Addr la_ppc64v2_gnu_pltenter (Elf64_Sym *__sym,
138 unsigned int __ndx,
139 uintptr_t *__refcook,
140 uintptr_t *__defcook,
141 La_ppc64v2_regs *__regs,
142 unsigned int *__flags,
143 const char *__symname,
144 long int *__framesizep);
145extern unsigned int la_ppc64v2_gnu_pltexit (Elf64_Sym *__sym,
146 unsigned int __ndx,
147 uintptr_t *__refcook,
148 uintptr_t *__defcook,
149 const La_ppc64v2_regs *__inregs,
150 La_ppc64v2_retval *__outregs,
151 const char *__symname);
152
153__END_DECLS
154
155# endif
156#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/long-double.h deleted-25
...@@ -1,25 +0,0 @@
1/* Properties of long double type. ldbl-opt version.
2 Copyright (C) 2016-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef __NO_LONG_DOUBLE_MATH
20# define __LONG_DOUBLE_MATH_OPTIONAL 1
21# ifndef __LONG_DOUBLE_128__
22# define __NO_LONG_DOUBLE_MATH 1
23# endif
24#endif
25#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/mman.h deleted-53
...@@ -1,53 +0,0 @@
1/* Definitions for POSIX memory map interface. Linux/PowerPC version.
2 Copyright (C) 1997-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MMAN_H
20# error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
21#endif
22
23/* The following definitions basically come from the kernel headers.
24 But the kernel header is not namespace clean. */
25
26#define PROT_SAO 0x10 /* Strong Access Ordering. */
27
28/* These are Linux-specific. */
29#ifdef __USE_MISC
30# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
31# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
32# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
33# define MAP_LOCKED 0x00080 /* Lock the mapping. */
34# define MAP_NORESERVE 0x00040 /* Don't check for reservations. */
35# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
36# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
37# define MAP_STACK 0x20000 /* Allocation is for a stack. */
38# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */
39# define MAP_SYNC 0x80000 /* Perform synchronous page
40 faults for the mapping. */
41# define MAP_FIXED_NOREPLACE 0x100000 /* MAP_FIXED but do not unmap
42 underlying mapping. */
43#endif
44
45/* Flags for `mlockall'. */
46#define MCL_CURRENT 0x2000 /* Lock all currently mapped pages. */
47#define MCL_FUTURE 0x4000 /* Lock all additions to address
48 space. */
49#define MCL_ONFAULT 0x8000 /* Lock all pages that are
50 faulted in. */
51
52/* Include generic Linux declarations. */
53#include <bits/mman-linux.h>
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/procfs.h deleted-49
...@@ -1,49 +0,0 @@
1/* Types for registers for sys/procfs.h. PowerPC version.
2 Copyright (C) 1996-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_PROCFS_H
20# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> instead."
21#endif
22
23#include <signal.h>
24#include <sys/ucontext.h>
25
26/* These definitions are normally provided by ucontext.h via
27 asm/sigcontext.h, asm/ptrace.h, and asm/elf.h. Otherwise we define
28 them here. */
29#if !defined __PPC64_ELF_H && !defined _ASM_POWERPC_ELF_H
30#define ELF_NGREG 48 /* includes nip, msr, lr, etc. */
31#define ELF_NFPREG 33 /* includes fpscr */
32#if __WORDSIZE == 32
33# define ELF_NVRREG 33 /* includes vscr */
34#else
35# define ELF_NVRREG 34 /* includes vscr */
36#endif
37
38typedef unsigned long elf_greg_t;
39typedef elf_greg_t elf_gregset_t[ELF_NGREG];
40
41typedef double elf_fpreg_t;
42typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
43
44/* Altivec registers */
45typedef struct {
46 unsigned int u[4];
47} __attribute__ ((__aligned__ (16))) elf_vrreg_t;
48typedef elf_vrreg_t elf_vrregset_t[ELF_NVRREG];
49#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/pthread_stack_min.h deleted-21
...@@ -1,21 +0,0 @@
1/* Definition of PTHREAD_STACK_MIN. Linux/PPC version.
2 Copyright (C) 2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public License as
7 published by the Free Software Foundation; either version 2.1 of the
8 License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; see the file COPYING.LIB. If
17 not, see <https://www.gnu.org/licenses/>. */
18
19/* Minimum size for a thread. At least two pages for systems with 64k
20 pages. */
21#define PTHREAD_STACK_MIN 131072
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/setjmp.h deleted-50
...@@ -1,50 +0,0 @@
1/* Copyright (C) 1997-2021 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18/* Define the machine-dependent type `jmp_buf'. PowerPC version. */
19#ifndef _BITS_SETJMP_H
20#define _BITS_SETJMP_H 1
21
22#if !defined _SETJMP_H && !defined _PTHREAD_H
23# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
24#endif
25
26/* The previous bits/setjmp.h had __jmp_buf defined as a structure.
27 We use an array of 'long int' instead, to make writing the
28 assembler easier. Naturally, user code should not depend on
29 either representation. */
30
31#include <bits/wordsize.h>
32
33/* The current powerpc 32-bit Altivec ABI specifies for SVR4 ABI and EABI
34 the vrsave must be at byte 248 & v20 at byte 256. So we must pad this
35 correctly on 32 bit. It also insists that vecregs are only gauranteed
36 4 byte alignment so we need to use vperm in the setjmp/longjmp routines.
37 We have to version the code because members like int __mask_was_saved
38 in the jmp_buf will move as jmp_buf is now larger than 248 bytes. We
39 cannot keep the altivec jmp_buf backward compatible with the jmp_buf. */
40#ifndef _ASM
41# if __WORDSIZE == 64
42typedef long int __jmp_buf[64] __attribute__ ((__aligned__ (16)));
43# else
44/* The alignment is not essential, i.e.the buffer can be copied to a 4 byte
45 aligned buffer as per the ABI it is just added for performance reasons. */
46typedef long int __jmp_buf[64 + (12 * 4)] __attribute__ ((__aligned__ (16)));
47# endif
48#endif
49
50#endif /* bits/setjmp.h */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/sigstack.h deleted-32
...@@ -1,32 +0,0 @@
1/* sigstack, sigaltstack definitions.
2 Copyright (C) 1998-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_SIGSTACK_H
20#define _BITS_SIGSTACK_H 1
21
22#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
23# error "Never include this file directly. Use <signal.h> instead"
24#endif
25
26/* Minimum stack size for a signal handler. */
27#define MINSIGSTKSZ 4096
28
29/* System default stack size. */
30#define SIGSTKSZ 16384
31
32#endif /* bits/sigstack.h */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/socket-constants.h deleted-70
...@@ -1,70 +0,0 @@
1/* Socket constants which vary among Linux architectures. Version for POWER.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SOCKET_H
20# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead."
21#endif
22
23#define SOL_SOCKET 1
24#define SO_ACCEPTCONN 30
25#define SO_BROADCAST 6
26#define SO_DONTROUTE 5
27#define SO_ERROR 4
28#define SO_KEEPALIVE 9
29#define SO_LINGER 13
30#define SO_OOBINLINE 10
31#define SO_RCVBUF 8
32#define SO_RCVLOWAT 16
33#define SO_REUSEADDR 2
34#define SO_SNDBUF 7
35#define SO_SNDLOWAT 17
36#define SO_TYPE 3
37
38#if __TIMESIZE == 64
39# define SO_RCVTIMEO 18
40# define SO_SNDTIMEO 19
41# define SO_TIMESTAMP 29
42# define SO_TIMESTAMPNS 35
43# define SO_TIMESTAMPING 37
44#else
45# define SO_RCVTIMEO_OLD 18
46# define SO_SNDTIMEO_OLD 19
47# define SO_RCVTIMEO_NEW 66
48# define SO_SNDTIMEO_NEW 67
49
50# define SO_TIMESTAMP_OLD 29
51# define SO_TIMESTAMPNS_OLD 35
52# define SO_TIMESTAMPING_OLD 37
53# define SO_TIMESTAMP_NEW 63
54# define SO_TIMESTAMPNS_NEW 64
55# define SO_TIMESTAMPING_NEW 65
56
57# ifdef __USE_TIME_BITS64
58# define SO_RCVTIMEO SO_RCVTIMEO_NEW
59# define SO_SNDTIMEO SO_SNDTIMEO_NEW
60# define SO_TIMESTAMP SO_TIMESTAMP_NEW
61# define SO_TIMESTAMPNS SO_TIMESTAMPNS_NEW
62# define SO_TIMESTAMPING SO_TIMESTAMPING_NEW
63# else
64# define SO_RCVTIMEO SO_RCVTIMEO_OLD
65# define SO_SNDTIMEO SO_SNDTIMEO_OLD
66# define SO_TIMESTAMP SO_TIMESTAMP_OLD
67# define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD
68# define SO_TIMESTAMPING SO_TIMESTAMPING_OLD
69# endif
70#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/struct_mutex.h deleted-63
...@@ -1,63 +0,0 @@
1/* PowerPC internal mutex struct definitions.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <http://www.gnu.org/licenses/>. */
18
19#ifndef _THREAD_MUTEX_INTERNAL_H
20#define _THREAD_MUTEX_INTERNAL_H 1
21
22struct __pthread_mutex_s
23{
24 int __lock;
25 unsigned int __count;
26 int __owner;
27#if __WORDSIZE == 64
28 unsigned int __nusers;
29#endif
30 /* KIND must stay at this position in the structure to maintain
31 binary compatibility with static initializers. */
32 int __kind;
33#if __WORDSIZE == 64
34 short __spins;
35 short __elision;
36 __pthread_list_t __list;
37# define __PTHREAD_MUTEX_HAVE_PREV 1
38#else
39 unsigned int __nusers;
40 __extension__ union
41 {
42 struct
43 {
44 short __espins;
45 short __elision;
46# define __spins __elision_data.__espins
47# define __elision __elision_data.__elision
48 } __elision_data;
49 __pthread_slist_t __list;
50 };
51# define __PTHREAD_MUTEX_HAVE_PREV 0
52#endif
53};
54
55#if __WORDSIZE == 64
56# define __PTHREAD_MUTEX_INITIALIZER(__kind) \
57 0, 0, 0, 0, __kind, 0, 0, { 0, 0 }
58#else
59# define __PTHREAD_MUTEX_INITIALIZER(__kind) \
60 0, 0, 0, __kind, 0, { { 0, 0 } }
61#endif
62
63#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/struct_rwlock.h deleted-61
...@@ -1,61 +0,0 @@
1/* PowerPC internal rwlock struct definitions.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3
4 This file is part of the GNU C Library.
5
6 The GNU C Library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
10
11 The GNU C Library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
15
16 You should have received a copy of the GNU Lesser General Public
17 License along with the GNU C Library; if not, see
18 <http://www.gnu.org/licenses/>. */
19
20#ifndef _RWLOCK_INTERNAL_H
21#define _RWLOCK_INTERNAL_H
22
23struct __pthread_rwlock_arch_t
24{
25 unsigned int __readers;
26 unsigned int __writers;
27 unsigned int __wrphase_futex;
28 unsigned int __writers_futex;
29 unsigned int __pad3;
30 unsigned int __pad4;
31#if __WORDSIZE == 64
32 int __cur_writer;
33 int __shared;
34 unsigned char __rwelision;
35 unsigned char __pad1[7];
36 unsigned long int __pad2;
37 /* FLAGS must stay at this position in the structure to maintain
38 binary compatibility. */
39 unsigned int __flags;
40# define __PTHREAD_RWLOCK_ELISION_EXTRA 0, {0, 0, 0, 0, 0, 0, 0 }
41#else
42 unsigned char __rwelision;
43 unsigned char __pad2;
44 unsigned char __shared;
45 /* FLAGS must stay at this position in the structure to maintain
46 binary compatibility. */
47 unsigned char __flags;
48 int __cur_writer;
49# define __PTHREAD_RWLOCK_ELISION_EXTRA 0
50#endif
51};
52
53#if __WORDSIZE == 64
54# define __PTHREAD_RWLOCK_INITIALIZER(__flags) \
55 0, 0, 0, 0, 0, 0, 0, 0, __PTHREAD_RWLOCK_ELISION_EXTRA, 0, __flags
56#else
57# define __PTHREAD_RWLOCK_INITIALIZER(__flags) \
58 0, 0, 0, 0, 0, 0, __PTHREAD_RWLOCK_ELISION_EXTRA, 0, 0, __flags, 0
59#endif
60
61#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/struct_stat.h deleted-231
...@@ -1,231 +0,0 @@
1/* Definition for struct stat.
2 Copyright (C) 2020-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#if !defined _SYS_STAT_H && !defined _FCNTL_H
20# error "Never include <bits/struct_stat.h> directly; use <sys/stat.h> instead."
21#endif
22
23#ifndef _BITS_STRUCT_STAT_H
24#define _BITS_STRUCT_STAT_H 1
25
26#include <bits/wordsize.h>
27
28#if __WORDSIZE == 32
29struct stat
30 {
31# ifdef __USE_TIME_BITS64
32# include <bits/struct_stat_time64_helper.h>
33# else
34 __dev_t st_dev; /* Device. */
35# ifndef __USE_FILE_OFFSET64
36 unsigned short int __pad1;
37 __ino_t st_ino; /* File serial number. */
38# else
39 __ino64_t st_ino; /* File serial number. */
40# endif
41 __mode_t st_mode; /* File mode. */
42 __nlink_t st_nlink; /* Link count. */
43 __uid_t st_uid; /* User ID of the file's owner. */
44 __gid_t st_gid; /* Group ID of the file's group.*/
45 __dev_t st_rdev; /* Device number, if device. */
46 unsigned short int __pad2;
47# ifndef __USE_FILE_OFFSET64
48 __off_t st_size; /* Size of file, in bytes. */
49# else
50 __off64_t st_size; /* Size of file, in bytes. */
51# endif
52 __blksize_t st_blksize; /* Optimal block size for I/O. */
53
54# ifndef __USE_FILE_OFFSET64
55 __blkcnt_t st_blocks; /* Number 512-byte blocks allocated. */
56# else
57 __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
58# endif
59# ifdef __USE_XOPEN2K8
60 /* Nanosecond resolution timestamps are stored in a format
61 equivalent to 'struct timespec'. This is the type used
62 whenever possible but the Unix namespace rules do not allow the
63 identifier 'timespec' to appear in the <sys/stat.h> header.
64 Therefore we have to handle the use of this header in strictly
65 standard-compliant sources special. */
66 struct timespec st_atim; /* Time of last access. */
67 struct timespec st_mtim; /* Time of last modification. */
68 struct timespec st_ctim; /* Time of last status change. */
69# define st_atime st_atim.tv_sec /* Backward compatibility. */
70# define st_mtime st_mtim.tv_sec
71# define st_ctime st_ctim.tv_sec
72# else
73 __time_t st_atime; /* Time of last access. */
74 unsigned long int st_atimensec; /* Nscecs of last access. */
75 __time_t st_mtime; /* Time of last modification. */
76 unsigned long int st_mtimensec; /* Nsecs of last modification. */
77 __time_t st_ctime; /* Time of last status change. */
78 unsigned long int st_ctimensec; /* Nsecs of last status change. */
79# endif
80 unsigned long int __glibc_reserved4;
81 unsigned long int __glibc_reserved5;
82# endif /* __USE_TIME_BITS64 */
83 };
84
85# ifdef __USE_LARGEFILE64
86struct stat64
87 {
88# ifdef __USE_TIME_BITS64
89# include <bits/struct_stat_time64_helper.h>
90# else
91 __dev_t st_dev; /* Device. */
92 __ino64_t st_ino; /* File serial number. */
93 __mode_t st_mode; /* File mode. */
94 __nlink_t st_nlink; /* Link count. */
95 __uid_t st_uid; /* User ID of the file's owner. */
96 __gid_t st_gid; /* Group ID of the file's group.*/
97 __dev_t st_rdev; /* Device number, if device. */
98 unsigned short int __pad2;
99 __off64_t st_size; /* Size of file, in bytes. */
100 __blksize_t st_blksize; /* Optimal block size for I/O. */
101 __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
102# ifdef __USE_XOPEN2K8
103 /* Nanosecond resolution timestamps are stored in a format
104 equivalent to 'struct timespec'. This is the type used
105 whenever possible but the Unix namespace rules do not allow the
106 identifier 'timespec' to appear in the <sys/stat.h> header.
107 Therefore we have to handle the use of this header in strictly
108 standard-compliant sources special. */
109 struct timespec st_atim; /* Time of last access. */
110 struct timespec st_mtim; /* Time of last modification. */
111 struct timespec st_ctim; /* Time of last status change. */
112# define st_atime st_atim.tv_sec /* Backward compatibility. */
113# define st_mtime st_mtim.tv_sec
114# define st_ctime st_ctim.tv_sec
115# else
116 __time_t st_atime; /* Time of last access. */
117 unsigned long int st_atimensec; /* Nscecs of last access. */
118 __time_t st_mtime; /* Time of last modification. */
119 unsigned long int st_mtimensec; /* Nsecs of last modification. */
120 __time_t st_ctime; /* Time of last status change. */
121 unsigned long int st_ctimensec; /* Nsecs of last status change. */
122# endif
123 unsigned long int __glibc_reserved4;
124 unsigned long int __glibc_reserved5;
125# endif /* __USE_TIME_BITS64 */
126 };
127# endif /* __USE_LARGEFILE64 */
128
129#else /* __WORDSIZE == 32 */
130
131struct stat
132 {
133 __dev_t st_dev; /* Device. */
134# ifndef __USE_FILE_OFFSET64
135 __ino_t st_ino; /* File serial number. */
136# else
137 __ino64_t st_ino; /* File serial number. */
138# endif
139 __nlink_t st_nlink; /* Link count. */
140 __mode_t st_mode; /* File mode. */
141 __uid_t st_uid; /* User ID of the file's owner. */
142 __gid_t st_gid; /* Group ID of the file's group.*/
143 int __pad2;
144 __dev_t st_rdev; /* Device number, if device. */
145# ifndef __USE_FILE_OFFSET64
146 __off_t st_size; /* Size of file, in bytes. */
147# else
148 __off64_t st_size; /* Size of file, in bytes. */
149# endif
150 __blksize_t st_blksize; /* Optimal block size for I/O. */
151
152# ifndef __USE_FILE_OFFSET64
153 __blkcnt_t st_blocks; /* Number 512-byte blocks allocated. */
154# else
155 __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
156# endif
157# ifdef __USE_XOPEN2K8
158 /* Nanosecond resolution timestamps are stored in a format
159 equivalent to 'struct timespec'. This is the type used
160 whenever possible but the Unix namespace rules do not allow the
161 identifier 'timespec' to appear in the <sys/stat.h> header.
162 Therefore we have to handle the use of this header in strictly
163 standard-compliant sources special. */
164 struct timespec st_atim; /* Time of last access. */
165 struct timespec st_mtim; /* Time of last modification. */
166 struct timespec st_ctim; /* Time of last status change. */
167# define st_atime st_atim.tv_sec /* Backward compatibility. */
168# define st_mtime st_mtim.tv_sec
169# define st_ctime st_ctim.tv_sec
170# else
171 __time_t st_atime; /* Time of last access. */
172 unsigned long int st_atimensec; /* Nscecs of last access. */
173 __time_t st_mtime; /* Time of last modification. */
174 unsigned long int st_mtimensec; /* Nsecs of last modification. */
175 __time_t st_ctime; /* Time of last status change. */
176 unsigned long int st_ctimensec; /* Nsecs of last status change. */
177# endif
178 unsigned long int __glibc_reserved4;
179 unsigned long int __glibc_reserved5;
180 unsigned long int __glibc_reserved6;
181 };
182
183# ifdef __USE_LARGEFILE64
184struct stat64
185 {
186 __dev_t st_dev; /* Device. */
187 __ino64_t st_ino; /* File serial number. */
188 __nlink_t st_nlink; /* Link count. */
189 __mode_t st_mode; /* File mode. */
190 __uid_t st_uid; /* User ID of the file's owner. */
191 __gid_t st_gid; /* Group ID of the file's group.*/
192 int __pad2;
193 __dev_t st_rdev; /* Device number, if device. */
194 __off64_t st_size; /* Size of file, in bytes. */
195 __blksize_t st_blksize; /* Optimal block size for I/O. */
196 __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
197# ifdef __USE_XOPEN2K8
198 /* Nanosecond resolution timestamps are stored in a format
199 equivalent to 'struct timespec'. This is the type used
200 whenever possible but the Unix namespace rules do not allow the
201 identifier 'timespec' to appear in the <sys/stat.h> header.
202 Therefore we have to handle the use of this header in strictly
203 standard-compliant sources special. */
204 struct timespec st_atim; /* Time of last access. */
205 struct timespec st_mtim; /* Time of last modification. */
206 struct timespec st_ctim; /* Time of last status change. */
207# define st_atime st_atim.tv_sec /* Backward compatibility. */
208# define st_mtime st_mtim.tv_sec
209# define st_ctime st_ctim.tv_sec
210# else
211 __time_t st_atime; /* Time of last access. */
212 unsigned long int st_atimensec; /* Nscecs of last access. */
213 __time_t st_mtime; /* Time of last modification. */
214 unsigned long int st_mtimensec; /* Nsecs of last modification. */
215 __time_t st_ctime; /* Time of last status change. */
216 unsigned long int st_ctimensec; /* Nsecs of last status change. */
217# endif
218 unsigned long int __glibc_reserved4;
219 unsigned long int __glibc_reserved5;
220 unsigned long int __glibc_reserved6;
221 };
222# endif /* __USE_LARGEFILE64 */
223#endif
224
225/* Tell code we have these members. */
226#define _STATBUF_ST_BLKSIZE
227#define _STATBUF_ST_RDEV
228/* Nanosecond resolution time values are supported. */
229#define _STATBUF_ST_NSEC
230
231#endif /* _BITS_STRUCT_STAT_H */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/termios-baud.h deleted-45
...@@ -1,45 +0,0 @@
1/* termios baud rate selection definitions. Linux/powerpc version.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _TERMIOS_H
20# error "Never include <bits/termios-baud.h> directly; use <termios.h> instead."
21#endif
22
23#ifdef __USE_MISC
24# define CBAUD 0000377
25# define CBAUDEX 0000020
26# define CMSPAR 010000000000 /* mark or space (stick) parity */
27# define CRTSCTS 020000000000 /* flow control */
28#endif
29
30#define B57600 00020
31#define B115200 00021
32#define B230400 00022
33#define B460800 00023
34#define B500000 00024
35#define B576000 00025
36#define B921600 00026
37#define B1000000 00027
38#define B1152000 00030
39#define B1500000 00031
40#define B2000000 00032
41#define B2500000 00033
42#define B3000000 00034
43#define B3500000 00035
44#define B4000000 00036
45#define __MAX_BAUD B4000000
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/termios-c_cc.h deleted-41
...@@ -1,41 +0,0 @@
1/* termios c_cc symbolic constant definitions. Linux/powerpc version.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _TERMIOS_H
20# error "Never include <bits/termios-c_cc.h> directly; use <termios.h> instead."
21#endif
22
23/* c_cc characters */
24#define VINTR 0
25#define VQUIT 1
26#define VERASE 2
27#define VKILL 3
28#define VEOF 4
29#define VMIN 5
30#define VEOL 6
31#define VTIME 7
32#define VEOL2 8
33#define VSWTC 9
34
35#define VWERASE 10
36#define VREPRINT 11
37#define VSUSP 12
38#define VSTART 13
39#define VSTOP 14
40#define VLNEXT 15
41#define VDISCARD 16
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/termios-c_cflag.h deleted-35
...@@ -1,35 +0,0 @@
1/* termios control mode definitions. Linux/powerpc version.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _TERMIOS_H
20# error "Never include <bits/termios-c_cflag.h> directly; use <termios.h> instead."
21#endif
22
23#define CSIZE 00001400
24#define CS5 00000000
25#define CS6 00000400
26#define CS7 00001000
27#define CS8 00001400
28
29#define CSTOPB 00002000
30#define CREAD 00004000
31#define PARENB 00010000
32#define PARODD 00020000
33#define HUPCL 00040000
34
35#define CLOCAL 00100000
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/termios-c_iflag.h deleted-38
...@@ -1,38 +0,0 @@
1/* termios input mode definitions. Linux/powerpc version.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _TERMIOS_H
20# error "Never include <bits/termios-c_iflags.h> directly; use <termios.h> instead."
21#endif
22
23/* c_iflag bits */
24#define IGNBRK 0000001
25#define BRKINT 0000002
26#define IGNPAR 0000004
27#define PARMRK 0000010
28#define INPCK 0000020
29#define ISTRIP 0000040
30#define INLCR 0000100
31#define IGNCR 0000200
32#define ICRNL 0000400
33#define IXON 0001000
34#define IXOFF 0002000
35#define IXANY 0004000
36#define IUCLC 0010000
37#define IMAXBEL 0020000
38#define IUTF8 0040000
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/termios-c_lflag.h deleted-45
...@@ -1,45 +0,0 @@
1/* termios local mode definitions. Linux/powerpc version.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _TERMIOS_H
20# error "Never include <bits/termios-c_lflag.h> directly; use <termios.h> instead."
21#endif
22
23/* c_lflag bits */
24#define ISIG 0x00000080
25#define ICANON 0x00000100
26#if defined __USE_MISC || (defined __USE_XOPEN && !defined __USE_XOPEN2K)
27# define XCASE 0x00004000
28#endif
29#define ECHO 0x00000008
30#define ECHOE 0x00000002
31#define ECHOK 0x00000004
32#define ECHONL 0x00000010
33#define NOFLSH 0x80000000
34#define TOSTOP 0x00400000
35#ifdef __USE_MISC
36# define ECHOCTL 0x00000040
37# define ECHOPRT 0x00000020
38# define ECHOKE 0x00000001
39# define FLUSHO 0x00800000
40# define PENDIN 0x20000000
41#endif
42#define IEXTEN 0x00000400
43#ifdef __USE_MISC
44# define EXTPROC 0x10000000
45#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/termios-c_oflag.h deleted-65
...@@ -1,65 +0,0 @@
1/* termios output mode definitions. Linux/powerpc version.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _TERMIOS_H
20# error "Never include <bits/termios-c_oflag.h> directly; use <termios.h> instead."
21#endif
22
23/* c_oflag bits */
24#define OPOST 0000001
25#define ONLCR 0000002
26#define OLCUC 0000004
27
28#define OCRNL 0000010
29#define ONOCR 0000020
30#define ONLRET 0000040
31
32#define OFILL 00000100
33#define OFDEL 00000200
34#if defined __USE_MISC || defined __USE_XOPEN
35# define NLDLY 00001400
36# define NL0 00000000
37# define NL1 00000400
38# if defined __USE_MISC
39# define NL2 00001000
40# define NL3 00001400
41# endif
42# define TABDLY 00006000
43# define TAB0 00000000
44# define TAB1 00002000
45# define TAB2 00004000
46# define TAB3 00006000
47# define CRDLY 00030000
48# define CR0 00000000
49# define CR1 00010000
50# define CR2 00020000
51# define CR3 00030000
52# define FFDLY 00040000
53# define FF0 00000000
54# define FF1 00040000
55# define BSDLY 00100000
56# define BS0 00000000
57# define BS1 00100000
58#endif
59#define VTDLY 00200000
60#define VT0 00000000
61#define VT1 00200000
62
63#ifdef __USE_MISC
64# define XTABS 00006000
65#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/termios-misc.h deleted-72
...@@ -1,72 +0,0 @@
1/* termios baud platform specific definitions. Linux/powerpc version.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _TERMIOS_H
20# error "Never include <bits/termios-misc.h> directly; use <termios.h> instead."
21#endif
22
23#ifdef __USE_MISC
24
25struct sgttyb {
26 char sg_ispeed;
27 char sg_ospeed;
28 char sg_erase;
29 char sg_kill;
30 short sg_flags;
31};
32
33struct tchars {
34 char t_intrc;
35 char t_quitc;
36 char t_startc;
37 char t_stopc;
38 char t_eofc;
39 char t_brkc;
40};
41
42struct ltchars {
43 char t_suspc;
44 char t_dsuspc;
45 char t_rprntc;
46 char t_flushc;
47 char t_werasc;
48 char t_lnextc;
49};
50
51/* Used for packet mode */
52#define TIOCPKT_DATA 0
53#define TIOCPKT_FLUSHREAD 1
54#define TIOCPKT_FLUSHWRITE 2
55#define TIOCPKT_STOP 4
56#define TIOCPKT_START 8
57#define TIOCPKT_NOSTOP 16
58#define TIOCPKT_DOSTOP 32
59
60/* c_cc characters */
61#define _VINTR 0
62#define _VQUIT 1
63#define _VERASE 2
64#define _VKILL 3
65#define _VEOF 4
66#define _VMIN 5
67#define _VEOL 6
68#define _VTIME 7
69#define _VEOL2 8
70#define _VSWTC 9
71
72#endif /* __USE_MISC */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/types/struct_msqid_ds.h deleted-53
...@@ -1,53 +0,0 @@
1/* Linux/PowerPC implementation of the SysV message struct msqid_ds.
2 Copyright (C) 2020-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
21#endif
22
23#include <bits/types/time_t.h>
24
25/* Structure of record for one message inside the kernel.
26 The type `struct msg' is opaque. */
27struct msqid_ds
28{
29#ifdef __USE_TIME_BITS64
30# include <bits/types/struct_msqid64_ds_helper.h>
31#else
32 struct ipc_perm msg_perm; /* structure describing operation permission */
33# if __TIMESIZE == 32
34 unsigned long int __msg_stime_high;
35 __time_t msg_stime; /* time of last msgsnd command */
36 unsigned long int __msg_rtime_high;
37 __time_t msg_rtime; /* time of last msgsnd command */
38 unsigned long int __msg_ctime_high;
39 __time_t msg_ctime; /* time of last change */
40# else
41 __time_t msg_stime; /* time of last msgsnd command */
42 __time_t msg_rtime; /* time of last msgsnd command */
43 __time_t msg_ctime; /* time of last change */
44# endif
45 __syscall_ulong_t __msg_cbytes; /* current number of bytes on queue */
46 msgqnum_t msg_qnum; /* number of messages currently on queue */
47 msglen_t msg_qbytes; /* max number of bytes allowed on queue */
48 __pid_t msg_lspid; /* pid of last msgsnd() */
49 __pid_t msg_lrpid; /* pid of last msgrcv() */
50 __syscall_ulong_t __glibc_reserved4;
51 __syscall_ulong_t __glibc_reserved5;
52#endif
53};
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/types/struct_semid_ds.h deleted-43
...@@ -1,43 +0,0 @@
1/* PowerPC implementation of the semaphore struct semid_ds.
2 Copyright (C) 1995-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead."
21#endif
22
23/* Data structure describing a set of semaphores. */
24struct semid_ds
25{
26#ifdef __USE_TIME_BITS64
27# include <bits/types/struct_semid64_ds_helper.h>
28#else
29 struct ipc_perm sem_perm; /* operation permission struct */
30# if __TIMESIZE == 32
31 __syscall_ulong_t __sem_otime_high;
32 __time_t sem_otime; /* last semop() time */
33 __syscall_ulong_t __sem_ctime_high;
34 __time_t sem_ctime; /* last time changed by semctl() */
35# else
36 __time_t sem_otime; /* last semop() time */
37 __time_t sem_ctime; /* last time changed by semctl() */
38# endif
39 __syscall_ulong_t sem_nsems; /* number of semaphores in set */
40 __syscall_ulong_t __glibc_reserved3;
41 __syscall_ulong_t __glibc_reserved4;
42#endif
43};
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/types/struct_shmid_ds.h deleted-50
...@@ -1,50 +0,0 @@
1/* Linux/PowerPC implementation of the shared memory struct shmid_ds.
2 Copyright (C) 2020-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never include <bits/types/struct_shmid_ds.h> directly; use <sys/shm.h> instead."
21#endif
22
23/* Data structure describing a shared memory segment. */
24struct shmid_ds
25 {
26#ifdef __USE_TIME_BITS64
27# include <bits/types/struct_shmid64_ds_helper.h>
28#else
29 struct ipc_perm shm_perm; /* operation permission struct */
30# if __TIMESIZE == 32
31 unsigned long int __shm_atime_high;
32 __time_t shm_atime; /* time of last shmat() */
33 unsigned long int __shm_dtime_high;
34 __time_t shm_dtime; /* time of last shmdt() */
35 unsigned long int __shm_ctime_high;
36 __time_t shm_ctime; /* time of last change by shmctl() */
37 unsigned long int __glibc_reserved4;
38# else
39 __time_t shm_atime; /* time of last shmat() */
40 __time_t shm_dtime; /* time of last shmdt() */
41 __time_t shm_ctime; /* time of last change by shmctl() */
42# endif
43 size_t shm_segsz; /* size of segment in bytes */
44 __pid_t shm_cpid; /* pid of creator */
45 __pid_t shm_lpid; /* pid of last shmop */
46 shmatt_t shm_nattch; /* number of current attaches */
47 __syscall_ulong_t __glibc_reserved5;
48 __syscall_ulong_t __glibc_reserved6;
49#endif
50 };
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/wordsize.h deleted-11
...@@ -1,11 +0,0 @@
1/* Determine the wordsize from the preprocessor defines. */
2
3#if defined __powerpc64__
4# define __WORDSIZE 64
5# define __WORDSIZE_TIME64_COMPAT32 1
6#else
7# define __WORDSIZE 32
8# define __WORDSIZE_TIME64_COMPAT32 0
9# define __WORDSIZE32_SIZE_ULONG 0
10# define __WORDSIZE32_PTRDIFF_LONG 0
11#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/fpu_control.h deleted-114
...@@ -1,114 +0,0 @@
1/* FPU control word definitions. PowerPC version.
2 Copyright (C) 1996-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _FPU_CONTROL_H
20#define _FPU_CONTROL_H
21
22#if defined __SPE__ || (defined __NO_FPRS__ && !defined _SOFT_FLOAT)
23# error "SPE/e500 is no longer supported"
24#endif
25
26#ifdef _SOFT_FLOAT
27
28# define _FPU_RESERVED 0xffffffff
29# define _FPU_DEFAULT 0x00000000 /* Default value. */
30typedef unsigned int fpu_control_t;
31# define _FPU_GETCW(cw) (cw) = 0
32# define _FPU_SETCW(cw) (void) (cw)
33extern fpu_control_t __fpu_control;
34
35#else /* PowerPC 6xx floating-point. */
36
37/* rounding control */
38# define _FPU_RC_NEAREST 0x00 /* RECOMMENDED */
39# define _FPU_RC_DOWN 0x03
40# define _FPU_RC_UP 0x02
41# define _FPU_RC_ZERO 0x01
42
43# define _FPU_MASK_RC (_FPU_RC_NEAREST|_FPU_RC_DOWN|_FPU_RC_UP|_FPU_RC_ZERO)
44
45# define _FPU_MASK_NI 0x04 /* non-ieee mode */
46
47/* masking of interrupts */
48# define _FPU_MASK_ZM 0x10 /* zero divide */
49# define _FPU_MASK_OM 0x40 /* overflow */
50# define _FPU_MASK_UM 0x20 /* underflow */
51# define _FPU_MASK_XM 0x08 /* inexact */
52# define _FPU_MASK_IM 0x80 /* invalid operation */
53
54# define _FPU_RESERVED 0xffffff00 /* These bits are reserved are not changed. */
55
56/* The fdlibm code requires no interrupts for exceptions. */
57# define _FPU_DEFAULT 0x00000000 /* Default value. */
58
59/* IEEE: same as above, but (some) exceptions;
60 we leave the 'inexact' exception off.
61 */
62# define _FPU_IEEE 0x000000f0
63
64/* Type of the control word. */
65typedef unsigned int fpu_control_t;
66
67/* Macros for accessing the hardware control word. */
68# define _FPU_GETCW(cw) \
69 ({union { double __d; unsigned long long __ll; } __u; \
70 __asm__ __volatile__("mffs %0" : "=f" (__u.__d)); \
71 (cw) = (fpu_control_t) __u.__ll; \
72 (fpu_control_t) __u.__ll; \
73 })
74
75# define _FPU_GET_RC_ISA300() \
76 ({union { double __d; unsigned long long __ll; } __u; \
77 __asm__ __volatile__( \
78 ".machine push; .machine \"power9\"; mffsl %0; .machine pop" \
79 : "=f" (__u.__d)); \
80 (fpu_control_t) (__u.__ll & _FPU_MASK_RC); \
81 })
82
83# ifdef _ARCH_PWR9
84# define _FPU_GET_RC() _FPU_GET_RC_ISA300()
85# elif defined __BUILTIN_CPU_SUPPORTS__
86# define _FPU_GET_RC() \
87 ({fpu_control_t __rc; \
88 __rc = __glibc_likely (__builtin_cpu_supports ("arch_3_00")) \
89 ? _FPU_GET_RC_ISA300 () \
90 : _FPU_GETCW (__rc) & _FPU_MASK_RC; \
91 __rc; \
92 })
93# else
94# define _FPU_GET_RC() \
95 ({fpu_control_t __rc = _FPU_GETCW (__rc) & _FPU_MASK_RC; \
96 __rc; \
97 })
98# endif
99
100# define _FPU_SETCW(cw) \
101 { union { double __d; unsigned long long __ll; } __u; \
102 register double __fr; \
103 __u.__ll = 0xfff80000LL << 32; /* This is a QNaN. */ \
104 __u.__ll |= (cw) & 0xffffffffLL; \
105 __fr = __u.__d; \
106 __asm__ __volatile__("mtfsf 255,%0" : : "f" (__fr)); \
107 }
108
109/* Default control word set at startup. */
110extern fpu_control_t __fpu_control;
111
112#endif /* PowerPC 6xx floating-point. */
113
114#endif /* _FPU_CONTROL_H */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/gnu/lib-names-32.h deleted-29
...@@ -1,29 +0,0 @@
1/* This file is automatically generated. */
2#ifndef __GNU_LIB_NAMES_H
3# error "Never use <gnu/lib-names-32.h> directly; include <gnu/lib-names.h> instead."
4#endif
5
6#define LD_SO "ld.so.1"
7#define LIBANL_SO "libanl.so.1"
8#define LIBBROKENLOCALE_SO "libBrokenLocale.so.1"
9#define LIBCRYPT_SO "libcrypt.so.1"
10#define LIBC_MALLOC_DEBUG_SO "libc_malloc_debug.so.0"
11#define LIBC_SO "libc.so.6"
12#define LIBDL_SO "libdl.so.2"
13#define LIBGCC_S_SO "libgcc_s.so.1"
14#define LIBMVEC_SO "libmvec.so.1"
15#define LIBM_SO "libm.so.6"
16#define LIBNSL_SO "libnsl.so.1"
17#define LIBNSS_COMPAT_SO "libnss_compat.so.2"
18#define LIBNSS_DB_SO "libnss_db.so.2"
19#define LIBNSS_DNS_SO "libnss_dns.so.2"
20#define LIBNSS_FILES_SO "libnss_files.so.2"
21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"
23#define LIBNSS_TEST1_SO "libnss_test1.so.2"
24#define LIBNSS_TEST2_SO "libnss_test2.so.2"
25#define LIBPTHREAD_SO "libpthread.so.0"
26#define LIBRESOLV_SO "libresolv.so.2"
27#define LIBRT_SO "librt.so.1"
28#define LIBTHREAD_DB_SO "libthread_db.so.1"
29#define LIBUTIL_SO "libutil.so.1"
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/gnu/lib-names.h deleted-19
...@@ -1,19 +0,0 @@
1/* This file is automatically generated.
2 It defines macros to allow user program to find the shared
3 library files which come as part of GNU libc. */
4#ifndef __GNU_LIB_NAMES_H
5#define __GNU_LIB_NAMES_H 1
6
7#include <bits/wordsize.h>
8
9#if __WORDSIZE == 32
10# include <gnu/lib-names-32.h>
11#endif
12#if __WORDSIZE == 64 && _CALL_ELF != 2
13# include <gnu/lib-names-64-v1.h>
14#endif
15#if __WORDSIZE == 64 && _CALL_ELF == 2
16# include <gnu/lib-names-64-v2.h>
17#endif
18
19#endif /* gnu/lib-names.h */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/gnu/stubs.h deleted-15
...@@ -1,15 +0,0 @@
1/* This file is automatically generated.
2 This file selects the right generated file of `__stub_FUNCTION' macros
3 based on the architecture being compiled for. */
4
5#include <bits/wordsize.h>
6
7#if __WORDSIZE == 32
8# include <gnu/stubs-32.h>
9#endif
10#if __WORDSIZE == 64 && _CALL_ELF != 2
11# include <gnu/stubs-64-v1.h>
12#endif
13#if __WORDSIZE == 64 && _CALL_ELF == 2
14# include <gnu/stubs-64-v2.h>
15#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/ieee754.h deleted-197
...@@ -1,197 +0,0 @@
1/* Copyright (C) 1992-2021 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _IEEE754_H
19#define _IEEE754_H 1
20
21#include <features.h>
22
23#include <bits/endian.h>
24#include <bits/floatn.h>
25
26__BEGIN_DECLS
27
28union ieee754_float
29 {
30 float f;
31
32 /* This is the IEEE 754 single-precision format. */
33 struct
34 {
35#if __BYTE_ORDER == __BIG_ENDIAN
36 unsigned int negative:1;
37 unsigned int exponent:8;
38 unsigned int mantissa:23;
39#endif /* Big endian. */
40#if __BYTE_ORDER == __LITTLE_ENDIAN
41 unsigned int mantissa:23;
42 unsigned int exponent:8;
43 unsigned int negative:1;
44#endif /* Little endian. */
45 } ieee;
46
47 /* This format makes it easier to see if a NaN is a signalling NaN. */
48 struct
49 {
50#if __BYTE_ORDER == __BIG_ENDIAN
51 unsigned int negative:1;
52 unsigned int exponent:8;
53 unsigned int quiet_nan:1;
54 unsigned int mantissa:22;
55#endif /* Big endian. */
56#if __BYTE_ORDER == __LITTLE_ENDIAN
57 unsigned int mantissa:22;
58 unsigned int quiet_nan:1;
59 unsigned int exponent:8;
60 unsigned int negative:1;
61#endif /* Little endian. */
62 } ieee_nan;
63 };
64
65#define IEEE754_FLOAT_BIAS 0x7f /* Added to exponent. */
66
67
68union ieee754_double
69 {
70 double d;
71
72 /* This is the IEEE 754 double-precision format. */
73 struct
74 {
75#if __BYTE_ORDER == __BIG_ENDIAN
76 unsigned int negative:1;
77 unsigned int exponent:11;
78 /* Together these comprise the mantissa. */
79 unsigned int mantissa0:20;
80 unsigned int mantissa1:32;
81#endif /* Big endian. */
82#if __BYTE_ORDER == __LITTLE_ENDIAN
83 /* Together these comprise the mantissa. */
84 unsigned int mantissa1:32;
85 unsigned int mantissa0:20;
86 unsigned int exponent:11;
87 unsigned int negative:1;
88#endif /* Little endian. */
89 } ieee;
90
91 /* This format makes it easier to see if a NaN is a signalling NaN. */
92 struct
93 {
94#if __BYTE_ORDER == __BIG_ENDIAN
95 unsigned int negative:1;
96 unsigned int exponent:11;
97 unsigned int quiet_nan:1;
98 /* Together these comprise the mantissa. */
99 unsigned int mantissa0:19;
100 unsigned int mantissa1:32;
101#else
102 /* Together these comprise the mantissa. */
103 unsigned int mantissa1:32;
104 unsigned int mantissa0:19;
105 unsigned int quiet_nan:1;
106 unsigned int exponent:11;
107 unsigned int negative:1;
108#endif
109 } ieee_nan;
110 };
111
112#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */
113
114
115#if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
116/* long double is IEEE 128 bit */
117union ieee854_long_double
118 {
119 long double d;
120
121 /* This is the IEEE 854 quad-precision format. */
122 struct
123 {
124#if __BYTE_ORDER == __BIG_ENDIAN
125 unsigned int negative:1;
126 unsigned int exponent:15;
127 /* Together these comprise the mantissa. */
128 unsigned int mantissa0:16;
129 unsigned int mantissa1:32;
130 unsigned int mantissa2:32;
131 unsigned int mantissa3:32;
132#endif /* Big endian. */
133#if __BYTE_ORDER == __LITTLE_ENDIAN
134 /* Together these comprise the mantissa. */
135 unsigned int mantissa3:32;
136 unsigned int mantissa2:32;
137 unsigned int mantissa1:32;
138 unsigned int mantissa0:16;
139 unsigned int exponent:15;
140 unsigned int negative:1;
141#endif /* Little endian. */
142 } ieee;
143
144 /* This format makes it easier to see if a NaN is a signalling NaN. */
145 struct
146 {
147#if __BYTE_ORDER == __BIG_ENDIAN
148 unsigned int negative:1;
149 unsigned int exponent:15;
150 unsigned int quiet_nan:1;
151 /* Together these comprise the mantissa. */
152 unsigned int mantissa0:15;
153 unsigned int mantissa1:32;
154 unsigned int mantissa2:32;
155 unsigned int mantissa3:32;
156#else
157 /* Together these comprise the mantissa. */
158 unsigned int mantissa3:32;
159 unsigned int mantissa2:32;
160 unsigned int mantissa1:32;
161 unsigned int mantissa0:15;
162 unsigned int quiet_nan:1;
163 unsigned int exponent:15;
164 unsigned int negative:1;
165#endif
166 } ieee_nan;
167 };
168
169#define IEEE854_LONG_DOUBLE_BIAS 0x3fff /* Added to exponent. */
170#endif
171
172
173#if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0 || __GNUC_PREREQ (7, 0)
174/* IBM extended format for long double.
175
176 Each long double is made up of two IEEE doubles. The value of the
177 long double is the sum of the values of the two parts. The most
178 significant part is required to be the value of the long double
179 rounded to the nearest double, as specified by IEEE. For Inf
180 values, the least significant part is required to be one of +0.0 or
181 -0.0. No other requirements are made; so, for example, 1.0 may be
182 represented as (1.0, +0.0) or (1.0, -0.0), and the low part of a
183 NaN is don't-care. */
184union ibm_extended_long_double
185 {
186# if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1 && __GNUC_PREREQ (7, 0)
187 __ibm128 ld;
188# else
189 long double ld;
190# endif
191 union ieee754_double d[2];
192 };
193#endif
194
195__END_DECLS
196
197#endif /* ieee754.h */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/sys/ptrace.h deleted-272
...@@ -1,272 +0,0 @@
1/* `ptrace' debugger support interface. Linux/PowerPC version.
2 Copyright (C) 2001-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_PTRACE_H
20#define _SYS_PTRACE_H 1
21
22#include <features.h>
23#include <bits/types.h>
24
25__BEGIN_DECLS
26
27#if defined _LINUX_PTRACE_H || defined _ASM_POWERPC_PTRACE_H
28/* Do not let Linux headers macros interfere with enum __ptrace_request. */
29# undef PTRACE_ATTACH
30# undef PTRACE_CONT
31# undef PTRACE_DETACH
32# undef PTRACE_GET_DEBUGREG
33# undef PTRACE_GETEVENTMSG
34# undef PTRACE_GETEVRREGS
35# undef PTRACE_GETFPREGS
36# undef PTRACE_GETREGS
37# undef PTRACE_GETREGS64
38# undef PTRACE_GETREGSET
39# undef PTRACE_GETSIGINFO
40# undef PTRACE_GETSIGMASK
41# undef PTRACE_GET_SYSCALL_INFO
42# undef PTRACE_GETVRREGS
43# undef PTRACE_GETVSRREGS
44# undef PTRACE_INTERRUPT
45# undef PTRACE_KILL
46# undef PTRACE_LISTEN
47# undef PTRACE_PEEKDATA
48# undef PTRACE_PEEKSIGINFO
49# undef PTRACE_PEEKTEXT
50# undef PTRACE_POKEDATA
51# undef PTRACE_POKETEXT
52# undef PTRACE_SECCOMP_GET_FILTER
53# undef PTRACE_SECCOMP_GET_METADATA
54# undef PTRACE_SEIZE
55# undef PTRACE_SET_DEBUGREG
56# undef PTRACE_SETEVRREGS
57# undef PTRACE_SETFPREGS
58# undef PTRACE_SETOPTIONS
59# undef PTRACE_SETREGS
60# undef PTRACE_SETREGS64
61# undef PTRACE_SETREGSET
62# undef PTRACE_SETSIGINFO
63# undef PTRACE_SETSIGMASK
64# undef PTRACE_SETVRREGS
65# undef PTRACE_SETVSRREGS
66# undef PTRACE_SINGLEBLOCK
67# undef PTRACE_SINGLESTEP
68# undef PTRACE_SYSCALL
69# undef PTRACE_SYSCALL_INFO_NONE
70# undef PTRACE_SYSCALL_INFO_ENTRY
71# undef PTRACE_SYSCALL_INFO_EXIT
72# undef PTRACE_SYSCALL_INFO_SECCOMP
73# undef PTRACE_SYSEMU
74# undef PTRACE_SYSEMU_SINGLESTEP
75# undef PTRACE_TRACEME
76#endif
77
78/* Type of the REQUEST argument to `ptrace.' */
79enum __ptrace_request
80{
81 /* Indicate that the process making this request should be traced.
82 All signals received by this process can be intercepted by its
83 parent, and its parent can use the other `ptrace' requests. */
84 PTRACE_TRACEME = 0,
85#define PT_TRACE_ME PTRACE_TRACEME
86
87 /* Return the word in the process's text space at address ADDR. */
88 PTRACE_PEEKTEXT = 1,
89#define PT_READ_I PTRACE_PEEKTEXT
90
91 /* Return the word in the process's data space at address ADDR. */
92 PTRACE_PEEKDATA = 2,
93#define PT_READ_D PTRACE_PEEKDATA
94
95 /* Return the word in the process's user area at offset ADDR. */
96 PTRACE_PEEKUSER = 3,
97#define PT_READ_U PTRACE_PEEKUSER
98
99 /* Write the word DATA into the process's text space at address ADDR. */
100 PTRACE_POKETEXT = 4,
101#define PT_WRITE_I PTRACE_POKETEXT
102
103 /* Write the word DATA into the process's data space at address ADDR. */
104 PTRACE_POKEDATA = 5,
105#define PT_WRITE_D PTRACE_POKEDATA
106
107 /* Write the word DATA into the process's user area at offset ADDR. */
108 PTRACE_POKEUSER = 6,
109#define PT_WRITE_U PTRACE_POKEUSER
110
111 /* Continue the process. */
112 PTRACE_CONT = 7,
113#define PT_CONTINUE PTRACE_CONT
114
115 /* Kill the process. */
116 PTRACE_KILL = 8,
117#define PT_KILL PTRACE_KILL
118
119 /* Single step the process. */
120 PTRACE_SINGLESTEP = 9,
121#define PT_STEP PTRACE_SINGLESTEP
122
123 /* Get all general purpose registers used by a process. */
124 PTRACE_GETREGS = 12,
125#define PT_GETREGS PTRACE_GETREGS
126
127 /* Set all general purpose registers used by a process. */
128 PTRACE_SETREGS = 13,
129#define PT_SETREGS PTRACE_SETREGS
130
131 /* Get all floating point registers used by a process. */
132 PTRACE_GETFPREGS = 14,
133#define PT_GETFPREGS PTRACE_GETFPREGS
134
135 /* Set all floating point registers used by a process. */
136 PTRACE_SETFPREGS = 15,
137#define PT_SETFPREGS PTRACE_SETFPREGS
138
139 /* Attach to a process that is already running. */
140 PTRACE_ATTACH = 16,
141#define PT_ATTACH PTRACE_ATTACH
142
143 /* Detach from a process attached to with PTRACE_ATTACH. */
144 PTRACE_DETACH = 17,
145#define PT_DETACH PTRACE_DETACH
146
147 /* Get all altivec registers used by a process. */
148 PTRACE_GETVRREGS = 18,
149#define PT_GETVRREGS PTRACE_GETVRREGS
150
151 /* Set all altivec registers used by a process. */
152 PTRACE_SETVRREGS = 19,
153#define PT_SETVRREGS PTRACE_SETVRREGS
154
155 /* Get all SPE registers used by a process. */
156 PTRACE_GETEVRREGS = 20,
157#define PT_GETEVRREGS PTRACE_GETEVRREGS
158
159 /* Set all SPE registers used by a process. */
160 PTRACE_SETEVRREGS = 21,
161#define PT_SETEVRREGS PTRACE_SETEVRREGS
162
163 /* Same as PTRACE_GETREGS except a 32-bit process will obtain
164 the full 64-bit registers. Implemented by 64-bit kernels only. */
165 PTRACE_GETREGS64 = 22,
166#define PT_GETREGS64 PTRACE_GETREGS64
167
168 /* Same as PTRACE_SETREGS except a 32-bit process will set
169 the full 64-bit registers. Implemented by 64-bit kernels only. */
170 PTRACE_SETREGS64 = 23,
171#define PT_SETREGS64 PTRACE_SETREGS64
172
173 /* Continue and stop at the next entry to or return from syscall. */
174 PTRACE_SYSCALL = 24,
175#define PT_SYSCALL PTRACE_SYSCALL
176
177 /* Get a debug register of a process. */
178 PTRACE_GET_DEBUGREG = 25,
179#define PT_GET_DEBUGREG PTRACE_GET_DEBUGREG
180
181 /* Set a debug register of a process. */
182 PTRACE_SET_DEBUGREG = 26,
183#define PT_SET_DEBUGREG PTRACE_SET_DEBUGREG
184
185 /* Get the first 32 VSX registers of a process. */
186 PTRACE_GETVSRREGS = 27,
187#define PT_GETVSRREGS PTRACE_GETVSRREGS
188
189 /* Set the first 32 VSX registers of a process. */
190 PTRACE_SETVSRREGS = 28,
191#define PT_SETVSRREGS PTRACE_SETVSRREGS
192
193 /* Continue and stop at the next syscall, it will not be executed. */
194 PTRACE_SYSEMU = 29,
195#define PT_SYSEMU PTRACE_SYSEMU
196
197 /* Single step the process, the next syscall will not be executed. */
198 PTRACE_SYSEMU_SINGLESTEP = 30,
199#define PT_SYSEMU_SINGLESTEP PTRACE_SYSEMU_SINGLESTEP
200
201 /* Execute process until next taken branch. */
202 PTRACE_SINGLEBLOCK = 256,
203#define PT_STEPBLOCK PTRACE_SINGLEBLOCK
204
205 /* Set ptrace filter options. */
206 PTRACE_SETOPTIONS = 0x4200,
207#define PT_SETOPTIONS PTRACE_SETOPTIONS
208
209 /* Get last ptrace message. */
210 PTRACE_GETEVENTMSG = 0x4201,
211#define PT_GETEVENTMSG PTRACE_GETEVENTMSG
212
213 /* Get siginfo for process. */
214 PTRACE_GETSIGINFO = 0x4202,
215#define PT_GETSIGINFO PTRACE_GETSIGINFO
216
217 /* Set new siginfo for process. */
218 PTRACE_SETSIGINFO = 0x4203,
219#define PT_SETSIGINFO PTRACE_SETSIGINFO
220
221 /* Get register content. */
222 PTRACE_GETREGSET = 0x4204,
223#define PTRACE_GETREGSET PTRACE_GETREGSET
224
225 /* Set register content. */
226 PTRACE_SETREGSET = 0x4205,
227#define PTRACE_SETREGSET PTRACE_SETREGSET
228
229 /* Like PTRACE_ATTACH, but do not force tracee to trap and do not affect
230 signal or group stop state. */
231 PTRACE_SEIZE = 0x4206,
232#define PTRACE_SEIZE PTRACE_SEIZE
233
234 /* Trap seized tracee. */
235 PTRACE_INTERRUPT = 0x4207,
236#define PTRACE_INTERRUPT PTRACE_INTERRUPT
237
238 /* Wait for next group event. */
239 PTRACE_LISTEN = 0x4208,
240#define PTRACE_LISTEN PTRACE_LISTEN
241
242 /* Retrieve siginfo_t structures without removing signals from a queue. */
243 PTRACE_PEEKSIGINFO = 0x4209,
244#define PTRACE_PEEKSIGINFO PTRACE_PEEKSIGINFO
245
246 /* Get the mask of blocked signals. */
247 PTRACE_GETSIGMASK = 0x420a,
248#define PTRACE_GETSIGMASK PTRACE_GETSIGMASK
249
250 /* Change the mask of blocked signals. */
251 PTRACE_SETSIGMASK = 0x420b,
252#define PTRACE_SETSIGMASK PTRACE_SETSIGMASK
253
254 /* Get seccomp BPF filters. */
255 PTRACE_SECCOMP_GET_FILTER = 0x420c,
256#define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER
257
258 /* Get seccomp BPF filter metadata. */
259 PTRACE_SECCOMP_GET_METADATA = 0x420d,
260#define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
261
262 /* Get information about system call. */
263 PTRACE_GET_SYSCALL_INFO = 0x420e
264#define PTRACE_GET_SYSCALL_INFO PTRACE_GET_SYSCALL_INFO
265};
266
267
268#include <bits/ptrace-shared.h>
269
270__END_DECLS
271
272#endif /* _SYS_PTRACE_H */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/sys/ucontext.h deleted-200
...@@ -1,200 +0,0 @@
1/* Copyright (C) 1998-2021 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _SYS_UCONTEXT_H
19#define _SYS_UCONTEXT_H 1
20
21#include <features.h>
22
23#include <bits/types/sigset_t.h>
24#include <bits/types/stack_t.h>
25
26
27#ifdef __USE_MISC
28# define __ctx(fld) fld
29#else
30# define __ctx(fld) __ ## fld
31#endif
32
33struct __ctx(pt_regs);
34
35#if __WORDSIZE == 32
36
37/* Number of general registers. */
38# define __NGREG 48
39# ifdef __USE_MISC
40# define NGREG __NGREG
41# endif
42
43/* Container for all general registers. */
44typedef unsigned long gregset_t[__NGREG];
45
46/* Container for floating-point registers and status */
47typedef struct _libc_fpstate
48{
49 double __ctx(fpregs)[32];
50 double __ctx(fpscr);
51 unsigned int _pad[2];
52} fpregset_t;
53
54/* Container for Altivec/VMX registers and status.
55 Needs to be aligned on a 16-byte boundary. */
56typedef struct _libc_vrstate
57{
58 unsigned int __ctx(vrregs)[32][4];
59 unsigned int __ctx(vrsave);
60 unsigned int _pad[2];
61 unsigned int __ctx(vscr);
62} vrregset_t;
63
64/* Context to describe whole processor state. */
65typedef struct
66{
67 gregset_t __ctx(gregs);
68 fpregset_t __ctx(fpregs);
69 vrregset_t __ctx(vrregs) __attribute__((__aligned__(16)));
70} mcontext_t;
71
72#else
73
74/* For 64-bit kernels with Altivec support, a machine context is exactly
75 * a sigcontext. For older kernel (without Altivec) the sigcontext matches
76 * the mcontext upto but not including the v_regs field. For kernels that
77 * don't set AT_HWCAP or return AT_HWCAP without PPC_FEATURE_HAS_ALTIVEC the
78 * v_regs field may not exist and should not be referenced. The v_regs field
79 * can be referenced safely only after verifying that PPC_FEATURE_HAS_ALTIVEC
80 * is set in AT_HWCAP. */
81
82/* Number of general registers. */
83# define __NGREG 48 /* includes r0-r31, nip, msr, lr, etc. */
84# define __NFPREG 33 /* includes fp0-fp31 &fpscr. */
85# define __NVRREG 34 /* includes v0-v31, vscr, & vrsave in
86 split vectors */
87# ifdef __USE_MISC
88# define NGREG __NGREG
89# define NFPREG __NFPREG
90# define NVRREG __NVRREG
91# endif
92
93typedef unsigned long gregset_t[__NGREG];
94typedef double fpregset_t[__NFPREG];
95
96/* Container for Altivec/VMX Vector Status and Control Register. Only 32-bits
97 but can only be copied to/from a 128-bit vector register. So we allocated
98 a whole quadword speedup save/restore. */
99typedef struct _libc_vscr
100{
101#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
102 unsigned int __pad[3];
103 unsigned int __ctx(vscr_word);
104#else
105 unsigned int __ctx(vscr_word);
106 unsigned int __pad[3];
107#endif
108} vscr_t;
109
110/* Container for Altivec/VMX registers and status.
111 Must to be aligned on a 16-byte boundary. */
112typedef struct _libc_vrstate
113{
114 unsigned int __ctx(vrregs)[32][4];
115 vscr_t __ctx(vscr);
116 unsigned int __ctx(vrsave);
117 unsigned int __pad[3];
118} vrregset_t __attribute__((__aligned__(16)));
119
120typedef struct {
121 unsigned long __glibc_reserved[4];
122 int __ctx(signal);
123 int __pad0;
124 unsigned long __ctx(handler);
125 unsigned long __ctx(oldmask);
126 struct __ctx(pt_regs) *__ctx(regs);
127 gregset_t __ctx(gp_regs);
128 fpregset_t __ctx(fp_regs);
129/*
130 * To maintain compatibility with current implementations the sigcontext is
131 * extended by appending a pointer (v_regs) to a quadword type (elf_vrreg_t)
132 * followed by an unstructured (vmx_reserve) field of 69 doublewords. This
133 * allows the array of vector registers to be quadword aligned independent of
134 * the alignment of the containing sigcontext or ucontext. It is the
135 * responsibility of the code setting the sigcontext to set this pointer to
136 * either NULL (if this processor does not support the VMX feature) or the
137 * address of the first quadword within the allocated (vmx_reserve) area.
138 *
139 * The pointer (v_regs) of vector type (elf_vrreg_t) is essentially
140 * an array of 34 quadword entries. The entries with
141 * indexes 0-31 contain the corresponding vector registers. The entry with
142 * index 32 contains the vscr as the last word (offset 12) within the
143 * quadword. This allows the vscr to be stored as either a quadword (since
144 * it must be copied via a vector register to/from storage) or as a word.
145 * The entry with index 33 contains the vrsave as the first word (offset 0)
146 * within the quadword.
147 */
148 vrregset_t *__ctx(v_regs);
149 long __ctx(vmx_reserve)[__NVRREG+__NVRREG+1];
150} mcontext_t;
151
152#endif
153
154/* Userlevel context. */
155typedef struct ucontext_t
156 {
157 unsigned long int __ctx(uc_flags);
158 struct ucontext_t *uc_link;
159 stack_t uc_stack;
160#if __WORDSIZE == 32
161 /*
162 * These fields are set up this way to maximize source and
163 * binary compatibility with code written for the old
164 * ucontext_t definition, which didn't include space for the
165 * registers.
166 *
167 * Different versions of the kernel have stored the registers on
168 * signal delivery at different offsets from the ucontext struct.
169 * Programs should thus use the uc_mcontext.uc_regs pointer to
170 * find where the registers are actually stored. The registers
171 * will be stored within the ucontext_t struct but not necessarily
172 * at a fixed address. As a side-effect, this lets us achieve
173 * 16-byte alignment for the register storage space if the
174 * Altivec registers are to be saved, without requiring 16-byte
175 * alignment on the whole ucontext_t.
176 *
177 * The uc_mcontext.regs field is included for source compatibility
178 * with programs written against the older ucontext_t definition,
179 * and its name should therefore not change. The uc_pad field
180 * is for binary compatibility with programs compiled against the
181 * old ucontext_t; it ensures that uc_mcontext.regs and uc_sigmask
182 * are at the same offset as previously.
183 */
184 int __glibc_reserved1[7];
185 union __ctx(uc_regs_ptr) {
186 struct __ctx(pt_regs) *__ctx(regs);
187 mcontext_t *__ctx(uc_regs);
188 } uc_mcontext;
189 sigset_t uc_sigmask;
190 /* last for extensibility */
191 char __ctx(uc_reg_space)[sizeof (mcontext_t) + 12];
192#else /* 64-bit */
193 sigset_t uc_sigmask;
194 mcontext_t uc_mcontext; /* last for extensibility */
195#endif
196 } ucontext_t;
197
198#undef __ctx
199
200#endif /* sys/ucontext.h */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/sys/user.h deleted-40
...@@ -1,40 +0,0 @@
1/* Copyright (C) 1998-2021 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _SYS_USER_H
19
20#define _SYS_USER_H 1
21#include <stddef.h>
22#include <features.h>
23
24#include <asm/ptrace.h>
25
26struct user {
27 struct pt_regs regs; /* entire machine state */
28 size_t u_tsize; /* text size (pages) */
29 size_t u_dsize; /* data size (pages) */
30 size_t u_ssize; /* stack size (pages) */
31 unsigned long start_code; /* text starting address */
32 unsigned long start_data; /* data starting address */
33 unsigned long start_stack; /* stack starting address */
34 long int signal; /* signal causing core dump */
35 struct regs * u_ar0; /* help gdb find registers */
36 unsigned long magic; /* identifies a core file */
37 char u_comm[32]; /* user command name */
38};
39
40#endif /* sys/user.h */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/endianness.h created+16
...@@ -0,0 +1,16 @@
1#ifndef _BITS_ENDIANNESS_H
2#define _BITS_ENDIANNESS_H 1
3
4#ifndef _BITS_ENDIAN_H
5# error "Never use <bits/endianness.h> directly; include <endian.h> instead."
6#endif
7
8/* PowerPC has selectable endianness. */
9#if defined __BIG_ENDIAN__ || defined _BIG_ENDIAN
10# define __BYTE_ORDER __BIG_ENDIAN
11#endif
12#if defined __LITTLE_ENDIAN__ || defined _LITTLE_ENDIAN
13# define __BYTE_ORDER __LITTLE_ENDIAN
14#endif
15
16#endif /* bits/endianness.h */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/environments.h created+96
...@@ -0,0 +1,96 @@
1/* Copyright (C) 1999-2021 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _UNISTD_H
19# error "Never include this file directly. Use <unistd.h> instead"
20#endif
21
22#include <bits/wordsize.h>
23
24/* This header should define the following symbols under the described
25 situations. A value `1' means that the model is always supported,
26 `-1' means it is never supported. Undefined means it cannot be
27 statically decided.
28
29 _POSIX_V7_ILP32_OFF32 32bit int, long, pointers, and off_t type
30 _POSIX_V7_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type
31
32 _POSIX_V7_LP64_OFF32 64bit long and pointers and 32bit off_t type
33 _POSIX_V7_LPBIG_OFFBIG 64bit long and pointers and large off_t type
34
35 The macros _POSIX_V6_ILP32_OFF32, _POSIX_V6_ILP32_OFFBIG,
36 _POSIX_V6_LP64_OFF32, _POSIX_V6_LPBIG_OFFBIG, _XBS5_ILP32_OFF32,
37 _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and _XBS5_LPBIG_OFFBIG were
38 used in previous versions of the Unix standard and are available
39 only for compatibility.
40*/
41
42#if __WORDSIZE == 64
43
44/* Environments with 32-bit wide pointers are optionally provided.
45 Therefore following macros aren't defined:
46 # undef _POSIX_V7_ILP32_OFF32
47 # undef _POSIX_V7_ILP32_OFFBIG
48 # undef _POSIX_V6_ILP32_OFF32
49 # undef _POSIX_V6_ILP32_OFFBIG
50 # undef _XBS5_ILP32_OFF32
51 # undef _XBS5_ILP32_OFFBIG
52 and users need to check at runtime. */
53
54/* We also have no use (for now) for an environment with bigger pointers
55 and offsets. */
56# define _POSIX_V7_LPBIG_OFFBIG -1
57# define _POSIX_V6_LPBIG_OFFBIG -1
58# define _XBS5_LPBIG_OFFBIG -1
59
60/* By default we have 64-bit wide `long int', pointers and `off_t'. */
61# define _POSIX_V7_LP64_OFF64 1
62# define _POSIX_V6_LP64_OFF64 1
63# define _XBS5_LP64_OFF64 1
64
65#else /* __WORDSIZE == 32 */
66
67/* By default we have 32-bit wide `int', `long int', pointers and `off_t'
68 and all platforms support LFS. */
69# define _POSIX_V7_ILP32_OFF32 1
70# define _POSIX_V7_ILP32_OFFBIG 1
71# define _POSIX_V6_ILP32_OFF32 1
72# define _POSIX_V6_ILP32_OFFBIG 1
73# define _XBS5_ILP32_OFF32 1
74# define _XBS5_ILP32_OFFBIG 1
75
76/* We optionally provide an environment with the above size but an 64-bit
77 side `off_t'. Therefore we don't define _POSIX_V7_ILP32_OFFBIG. */
78
79/* Environments with 64-bit wide pointers can be provided,
80 so these macros aren't defined:
81 # undef _POSIX_V7_LP64_OFF64
82 # undef _POSIX_V7_LPBIG_OFFBIG
83 # undef _POSIX_V6_LP64_OFF64
84 # undef _POSIX_V6_LPBIG_OFFBIG
85 # undef _XBS5_LP64_OFF64
86 # undef _XBS5_LPBIG_OFFBIG
87 and sysconf tests for it at runtime. */
88
89#endif /* __WORDSIZE == 32 */
90
91#define __ILP32_OFF32_CFLAGS "-m32"
92#define __ILP32_OFFBIG_CFLAGS "-m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
93#define __ILP32_OFF32_LDFLAGS "-m32"
94#define __ILP32_OFFBIG_LDFLAGS "-m32"
95#define __LP64_OFF64_CFLAGS "-m64"
96#define __LP64_OFF64_LDFLAGS "-m64"
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/fcntl.h created+62
...@@ -0,0 +1,62 @@
1/* O_*, F_*, FD_* bit values for Linux/PowerPC.
2 Copyright (C) 1995-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _FCNTL_H
20# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
21#endif
22
23#include <bits/wordsize.h>
24
25#define __O_DIRECTORY 040000 /* Must be a directory. */
26#define __O_NOFOLLOW 0100000 /* Do not follow links. */
27#define __O_DIRECT 0400000 /* Direct disk access. */
28
29#if __WORDSIZE == 64
30/* Not necessary, files are always with 64bit off_t. */
31# define __O_LARGEFILE 0
32#else
33# define __O_LARGEFILE 0200000
34#endif
35
36struct flock
37 {
38 short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
39 short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
40#ifndef __USE_FILE_OFFSET64
41 __off_t l_start; /* Offset where the lock begins. */
42 __off_t l_len; /* Size of the locked area; zero means until EOF. */
43#else
44 __off64_t l_start; /* Offset where the lock begins. */
45 __off64_t l_len; /* Size of the locked area; zero means until EOF. */
46#endif
47 __pid_t l_pid; /* Process holding the lock. */
48 };
49
50#ifdef __USE_LARGEFILE64
51struct flock64
52 {
53 short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
54 short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
55 __off64_t l_start; /* Offset where the lock begins. */
56 __off64_t l_len; /* Size of the locked area; zero means until EOF. */
57 __pid_t l_pid; /* Process holding the lock. */
58 };
59#endif
60
61/* Include generic Linux declarations. */
62#include <bits/fcntl-linux.h>
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/fenv.h created+180
...@@ -0,0 +1,180 @@
1/* Copyright (C) 1997-2021 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _FENV_H
19# error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
20#endif
21
22
23/* Define bits representing the exception. We use the bit positions of
24 the appropriate bits in the FPSCR... */
25enum
26 {
27 FE_INEXACT =
28#define FE_INEXACT (1 << (31 - 6))
29 FE_INEXACT,
30 FE_DIVBYZERO =
31#define FE_DIVBYZERO (1 << (31 - 5))
32 FE_DIVBYZERO,
33 FE_UNDERFLOW =
34#define FE_UNDERFLOW (1 << (31 - 4))
35 FE_UNDERFLOW,
36 FE_OVERFLOW =
37#define FE_OVERFLOW (1 << (31 - 3))
38 FE_OVERFLOW,
39
40 /* ... except for FE_INVALID, for which we use bit 31. FE_INVALID
41 actually corresponds to bits 7 through 12 and 21 through 23
42 in the FPSCR, but we can't use that because the current draft
43 says that it must be a power of 2. Instead we use bit 2 which
44 is the summary bit for all the FE_INVALID exceptions, which
45 kind of makes sense. */
46 FE_INVALID =
47#define FE_INVALID (1 << (31 - 2))
48 FE_INVALID,
49
50#ifdef __USE_GNU
51 /* Breakdown of the FE_INVALID bits. Setting FE_INVALID on an
52 input to a routine is equivalent to setting all of these bits;
53 FE_INVALID will be set on output from a routine iff one of
54 these bits is set. Note, though, that you can't disable or
55 enable these exceptions individually. */
56
57 /* Operation with a sNaN. */
58 FE_INVALID_SNAN =
59# define FE_INVALID_SNAN (1 << (31 - 7))
60 FE_INVALID_SNAN,
61
62 /* Inf - Inf */
63 FE_INVALID_ISI =
64# define FE_INVALID_ISI (1 << (31 - 8))
65 FE_INVALID_ISI,
66
67 /* Inf / Inf */
68 FE_INVALID_IDI =
69# define FE_INVALID_IDI (1 << (31 - 9))
70 FE_INVALID_IDI,
71
72 /* 0 / 0 */
73 FE_INVALID_ZDZ =
74# define FE_INVALID_ZDZ (1 << (31 - 10))
75 FE_INVALID_ZDZ,
76
77 /* Inf * 0 */
78 FE_INVALID_IMZ =
79# define FE_INVALID_IMZ (1 << (31 - 11))
80 FE_INVALID_IMZ,
81
82 /* Comparison with a NaN. */
83 FE_INVALID_COMPARE =
84# define FE_INVALID_COMPARE (1 << (31 - 12))
85 FE_INVALID_COMPARE,
86
87 /* Invalid operation flag for software (not set by hardware). */
88 /* Note that some chips don't have this implemented, presumably
89 because no-one expected anyone to write software for them %-). */
90 FE_INVALID_SOFTWARE =
91# define FE_INVALID_SOFTWARE (1 << (31 - 21))
92 FE_INVALID_SOFTWARE,
93
94 /* Square root of negative number (including -Inf). */
95 /* Note that some chips don't have this implemented. */
96 FE_INVALID_SQRT =
97# define FE_INVALID_SQRT (1 << (31 - 22))
98 FE_INVALID_SQRT,
99
100 /* Conversion-to-integer of a NaN or a number too large or too small. */
101 FE_INVALID_INTEGER_CONVERSION =
102# define FE_INVALID_INTEGER_CONVERSION (1 << (31 - 23))
103 FE_INVALID_INTEGER_CONVERSION
104
105# define FE_ALL_INVALID \
106 (FE_INVALID_SNAN | FE_INVALID_ISI | FE_INVALID_IDI | FE_INVALID_ZDZ \
107 | FE_INVALID_IMZ | FE_INVALID_COMPARE | FE_INVALID_SOFTWARE \
108 | FE_INVALID_SQRT | FE_INVALID_INTEGER_CONVERSION)
109#endif
110 };
111
112#define FE_ALL_EXCEPT \
113 (FE_INEXACT | FE_DIVBYZERO | FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID)
114
115/* PowerPC chips support all of the four defined rounding modes. We
116 use the bit pattern in the FPSCR as the values for the
117 appropriate macros. */
118enum
119 {
120 FE_TONEAREST =
121#define FE_TONEAREST 0
122 FE_TONEAREST,
123 FE_TOWARDZERO =
124#define FE_TOWARDZERO 1
125 FE_TOWARDZERO,
126 FE_UPWARD =
127#define FE_UPWARD 2
128 FE_UPWARD,
129 FE_DOWNWARD =
130#define FE_DOWNWARD 3
131 FE_DOWNWARD
132 };
133
134/* Type representing exception flags. */
135typedef unsigned int fexcept_t;
136
137/* Type representing floating-point environment. We leave it as 'double'
138 for efficiency reasons (rather than writing it to a 32-bit integer). */
139typedef double fenv_t;
140
141/* If the default argument is used we use this value. */
142extern const fenv_t __fe_dfl_env;
143#define FE_DFL_ENV (&__fe_dfl_env)
144
145#ifdef __USE_GNU
146/* Floating-point environment where all exceptions are enabled. Note that
147 this is not sufficient to give you SIGFPE. */
148extern const fenv_t __fe_enabled_env;
149# define FE_ENABLED_ENV (&__fe_enabled_env)
150
151/* Floating-point environment with (processor-dependent) non-IEEE floating
152 point. */
153extern const fenv_t __fe_nonieee_env;
154# define FE_NONIEEE_ENV (&__fe_nonieee_env)
155
156/* Floating-point environment with all exceptions enabled. Note that
157 just evaluating this value does not change the processor exception mode.
158 Passing this mask to fesetenv will result in a prctl syscall to change
159 the MSR FE0/FE1 bits to "Precise Mode". On some processors this will
160 result in slower floating point execution. This will last until an
161 fenv or exception mask is installed that disables all FP exceptions. */
162# define FE_NOMASK_ENV FE_ENABLED_ENV
163
164/* Floating-point environment with all exceptions disabled. Note that
165 just evaluating this value does not change the processor exception mode.
166 Passing this mask to fesetenv will result in a prctl syscall to change
167 the MSR FE0/FE1 bits to "Ignore Exceptions Mode". On most processors
168 this allows the fastest possible floating point execution.*/
169# define FE_MASK_ENV FE_DFL_ENV
170
171#endif
172
173#if __GLIBC_USE (IEC_60559_BFP_EXT_C2X)
174/* Type representing floating-point control modes. */
175typedef double femode_t;
176
177/* Default floating-point control modes. */
178extern const femode_t __fe_dfl_mode;
179# define FE_DFL_MODE (&__fe_dfl_mode)
180#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/floatn.h created+122
...@@ -0,0 +1,122 @@
1/* Macros to control TS 18661-3 glibc features on powerpc.
2 Copyright (C) 2017-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_FLOATN_H
20#define _BITS_FLOATN_H
21
22#include <features.h>
23#include <bits/long-double.h>
24
25/* Defined to 1 if the current compiler invocation provides a
26 floating-point type with the IEEE 754 binary128 format, and this glibc
27 includes corresponding *f128 interfaces for it. */
28#if defined _ARCH_PWR8 && defined __LITTLE_ENDIAN__ && (_CALL_ELF == 2) \
29 && defined __FLOAT128__ && !defined __NO_LONG_DOUBLE_MATH
30# define __HAVE_FLOAT128 1
31#else
32# define __HAVE_FLOAT128 0
33#endif
34
35/* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
36 from the default float, double and long double types in this glibc, i.e.
37 calls to the binary128 functions go to *f128 symbols instead of *l. */
38#if __HAVE_FLOAT128
39# define __HAVE_DISTINCT_FLOAT128 1
40#else
41# define __HAVE_DISTINCT_FLOAT128 0
42#endif
43
44/* Defined to 1 if the current compiler invocation provides a
45 floating-point type with the right format for _Float64x, and this
46 glibc includes corresponding *f64x interfaces for it. */
47#define __HAVE_FLOAT64X __HAVE_FLOAT128
48
49/* Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format
50 of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has
51 the format of _Float128, which must be different from that of long
52 double. */
53#define __HAVE_FLOAT64X_LONG_DOUBLE 0
54
55#ifndef __ASSEMBLER__
56
57/* Defined to concatenate the literal suffix to be used with _Float128
58 types, if __HAVE_FLOAT128 is 1. */
59# if __HAVE_FLOAT128
60# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
61/* The literal suffix (f128) exist for powerpc only since GCC 7.0. */
62# if __LDBL_MANT_DIG__ == 113
63# define __f128(x) x##l
64# else
65# define __f128(x) x##q
66# endif
67# else
68# define __f128(x) x##f128
69# endif
70# endif
71
72/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */
73# if __HAVE_FLOAT128
74# if __LDBL_MANT_DIG__ == 113 && defined __cplusplus
75typedef long double _Float128;
76# define __CFLOAT128 _Complex long double
77# elif !__GNUC_PREREQ (7, 0) || defined __cplusplus
78/* The type _Float128 exist for powerpc only since GCC 7.0. */
79typedef __float128 _Float128;
80/* Add a typedef for older GCC and C++ compilers which don't natively support
81 _Complex _Float128. */
82typedef _Complex float __cfloat128 __attribute__ ((__mode__ (__KC__)));
83# define __CFLOAT128 __cfloat128
84# else
85# define __CFLOAT128 _Complex _Float128
86# endif
87# endif
88
89/* The remaining of this file provides support for older compilers. */
90# if __HAVE_FLOAT128
91/* Builtin __builtin_huge_valf128 doesn't exist before GCC 7.0. */
92# if !__GNUC_PREREQ (7, 0)
93# define __builtin_huge_valf128() ((_Float128) __builtin_huge_val ())
94# endif
95
96/* The following builtins (suffixed with 'q') are available in GCC >= 6.2,
97 which is the minimum version required for float128 support on powerpc64le.
98 Since GCC 7.0 the builtins suffixed with f128 are also available, then
99 there is no need to redefined them. */
100# if !__GNUC_PREREQ (7, 0)
101# define __builtin_copysignf128 __builtin_copysignq
102# define __builtin_fabsf128 __builtin_fabsq
103# define __builtin_inff128 __builtin_infq
104# define __builtin_nanf128 __builtin_nanq
105# define __builtin_nansf128 __builtin_nansq
106# endif
107
108/* In math/math.h, __MATH_TG will expand signbit to __builtin_signbit*,
109 e.g.: __builtin_signbitf128, before GCC 6. However, there has never
110 been a __builtin_signbitf128 in GCC and the type-generic builtin is
111 only available since GCC 6. */
112# if !__GNUC_PREREQ (6, 0)
113# define __builtin_signbitf128 __signbitf128
114# endif
115
116# endif
117
118#endif /* !__ASSEMBLER__. */
119
120#include <bits/floatn-common.h>
121
122#endif /* _BITS_FLOATN_H */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/fp-fast.h created+39
...@@ -0,0 +1,39 @@
1/* Define FP_FAST_* macros. PowerPC version.
2 Copyright (C) 2016-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _MATH_H
20# error "Never use <bits/fp-fast.h> directly; include <math.h> instead."
21#endif
22
23#ifdef __USE_ISOC99
24
25/* The GCC 4.6 compiler will define __FP_FAST_FMA{,F,L} if the fma{,f,l}
26 builtins are supported. */
27# if (!defined _SOFT_FLOAT && !defined __NO_FPRS__) || defined __FP_FAST_FMA
28# define FP_FAST_FMA 1
29# endif
30
31# if (!defined _SOFT_FLOAT && !defined __NO_FPRS__) || defined __FP_FAST_FMAF
32# define FP_FAST_FMAF 1
33# endif
34
35# ifdef __FP_FAST_FMAL
36# define FP_FAST_FMAL 1
37# endif
38
39#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/hwcap.h created+78
...@@ -0,0 +1,78 @@
1/* Defines for bits in AT_HWCAP and AT_HWCAP2.
2 Copyright (C) 2012-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#if !defined(_SYS_AUXV_H) && !defined(_SYSDEPS_SYSDEP_H)
20# error "Never include <bits/hwcap.h> directly; use <sys/auxv.h> instead."
21#endif
22
23/* The bit numbers must match those in the kernel's asm/cputable.h. */
24
25/* Feature definitions in AT_HWCAP. */
26#define PPC_FEATURE_32 0x80000000 /* 32-bit mode. */
27#define PPC_FEATURE_64 0x40000000 /* 64-bit mode. */
28#define PPC_FEATURE_601_INSTR 0x20000000 /* 601 chip, Old POWER ISA. */
29#define PPC_FEATURE_HAS_ALTIVEC 0x10000000 /* SIMD/Vector Unit. */
30#define PPC_FEATURE_HAS_FPU 0x08000000 /* Floating Point Unit. */
31#define PPC_FEATURE_HAS_MMU 0x04000000 /* Memory Management Unit. */
32#define PPC_FEATURE_HAS_4xxMAC 0x02000000 /* 4xx Multiply Accumulator. */
33#define PPC_FEATURE_UNIFIED_CACHE 0x01000000 /* Unified I/D cache. */
34#define PPC_FEATURE_HAS_SPE 0x00800000 /* Signal Processing ext. */
35#define PPC_FEATURE_HAS_EFP_SINGLE 0x00400000 /* SPE Float. */
36#define PPC_FEATURE_HAS_EFP_DOUBLE 0x00200000 /* SPE Double. */
37#define PPC_FEATURE_NO_TB 0x00100000 /* 601/403gx have no timebase */
38#define PPC_FEATURE_POWER4 0x00080000 /* POWER4 ISA 2.00 */
39#define PPC_FEATURE_POWER5 0x00040000 /* POWER5 ISA 2.02 */
40#define PPC_FEATURE_POWER5_PLUS 0x00020000 /* POWER5+ ISA 2.03 */
41#define PPC_FEATURE_CELL_BE 0x00010000 /* CELL Broadband Engine */
42#define PPC_FEATURE_BOOKE 0x00008000 /* ISA Category Embedded */
43#define PPC_FEATURE_SMT 0x00004000 /* Simultaneous
44 Multi-Threading */
45#define PPC_FEATURE_ICACHE_SNOOP 0x00002000
46#define PPC_FEATURE_ARCH_2_05 0x00001000 /* ISA 2.05 */
47#define PPC_FEATURE_PA6T 0x00000800 /* PA Semi 6T Core */
48#define PPC_FEATURE_HAS_DFP 0x00000400 /* Decimal FP Unit */
49#define PPC_FEATURE_POWER6_EXT 0x00000200 /* P6 + mffgpr/mftgpr */
50#define PPC_FEATURE_ARCH_2_06 0x00000100 /* ISA 2.06 */
51#define PPC_FEATURE_HAS_VSX 0x00000080 /* P7 Vector Extension. */
52#define PPC_FEATURE_PSERIES_PERFMON_COMPAT 0x00000040
53/* Reserved by the kernel. 0x00000004 Do not use. */
54#define PPC_FEATURE_TRUE_LE 0x00000002
55#define PPC_FEATURE_PPC_LE 0x00000001
56
57/* Feature definitions in AT_HWCAP2. */
58#define PPC_FEATURE2_ARCH_2_07 0x80000000 /* ISA 2.07 */
59#define PPC_FEATURE2_HAS_HTM 0x40000000 /* Hardware Transactional
60 Memory */
61#define PPC_FEATURE2_HAS_DSCR 0x20000000 /* Data Stream Control
62 Register */
63#define PPC_FEATURE2_HAS_EBB 0x10000000 /* Event Base Branching */
64#define PPC_FEATURE2_HAS_ISEL 0x08000000 /* Integer Select */
65#define PPC_FEATURE2_HAS_TAR 0x04000000 /* Target Address Register */
66#define PPC_FEATURE2_HAS_VEC_CRYPTO 0x02000000 /* Target supports vector
67 instruction. */
68#define PPC_FEATURE2_HTM_NOSC 0x01000000 /* Kernel aborts transaction
69 when a syscall is made. */
70#define PPC_FEATURE2_ARCH_3_00 0x00800000 /* ISA 3.0 */
71#define PPC_FEATURE2_HAS_IEEE128 0x00400000 /* VSX IEEE Binary Float
72 128-bit */
73#define PPC_FEATURE2_DARN 0x00200000 /* darn instruction. */
74#define PPC_FEATURE2_SCV 0x00100000 /* scv syscall. */
75#define PPC_FEATURE2_HTM_NO_SUSPEND 0x00080000 /* TM without suspended
76 state. */
77#define PPC_FEATURE2_ARCH_3_1 0x00040000 /* ISA 3.1. */
78#define PPC_FEATURE2_MMA 0x00020000 /* Matrix-Multiply Assist. */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/ioctl-types.h created+77
...@@ -0,0 +1,77 @@
1/* Structure types for pre-termios terminal ioctls. Linux/powerpc version.
2 Copyright (C) 2014-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_IOCTL_H
20# error "Never use <bits/ioctl-types.h> directly; include <sys/ioctl.h> instead."
21#endif
22
23/* Get definition of constants for use with `ioctl'. */
24#include <asm/ioctls.h>
25
26
27struct winsize
28 {
29 unsigned short int ws_row;
30 unsigned short int ws_col;
31 unsigned short int ws_xpixel;
32 unsigned short int ws_ypixel;
33 };
34
35#define NCC 10
36struct termio
37 {
38 unsigned short int c_iflag; /* input mode flags */
39 unsigned short int c_oflag; /* output mode flags */
40 unsigned short int c_cflag; /* control mode flags */
41 unsigned short int c_lflag; /* local mode flags */
42 unsigned char c_line; /* line discipline */
43 unsigned char c_cc[NCC]; /* control characters */
44};
45
46/* modem lines */
47#define TIOCM_LE 0x001
48#define TIOCM_DTR 0x002
49#define TIOCM_RTS 0x004
50#define TIOCM_ST 0x008
51#define TIOCM_SR 0x010
52#define TIOCM_CTS 0x020
53#define TIOCM_CAR 0x040
54#define TIOCM_RNG 0x080
55#define TIOCM_DSR 0x100
56#define TIOCM_CD TIOCM_CAR
57#define TIOCM_RI TIOCM_RNG
58
59/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
60
61/* line disciplines */
62#define N_TTY 0
63#define N_SLIP 1
64#define N_MOUSE 2
65#define N_PPP 3
66#define N_STRIP 4
67#define N_AX25 5
68#define N_X25 6 /* X.25 async */
69#define N_6PACK 7
70#define N_MASC 8 /* Mobitex module */
71#define N_R3964 9 /* Simatic R3964 module */
72#define N_PROFIBUS_FDL 10 /* Profibus */
73#define N_IRDA 11 /* Linux IR */
74#define N_SMSBLOCK 12 /* SMS block mode */
75#define N_HDLC 13 /* synchronous HDLC */
76#define N_SYNC_PPP 14 /* synchronous PPP */
77#define N_HCI 15 /* Bluetooth HCI UART */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/ipc-perm.h created+36
...@@ -0,0 +1,36 @@
1/* struct ipc_perm definition. Linux/powerpc version.
2 Copyright (C) 1995-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_IPC_H
20# error "Never use <bits/ipc-perm.h> directly; include <sys/ipc.h> instead."
21#endif
22
23/* Data structure used to pass permission information to IPC operations. */
24struct ipc_perm
25 {
26 __key_t __key; /* Key. */
27 __uid_t uid; /* Owner's user ID. */
28 __gid_t gid; /* Owner's group ID. */
29 __uid_t cuid; /* Creator's user ID. */
30 __gid_t cgid; /* Creator's group ID. */
31 __mode_t mode; /* Read/write permission. */
32 __uint32_t __seq; /* Sequence number. */
33 __uint32_t __pad1;
34 __uint64_t __glibc_reserved1;
35 __uint64_t __glibc_reserved2;
36 };
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/iscanonical.h created+58
...@@ -0,0 +1,58 @@
1/* Define iscanonical macro. ldbl-128ibm version.
2 Copyright (C) 2016-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _MATH_H
20# error "Never use <bits/iscanonical.h> directly; include <math.h> instead."
21#endif
22
23#if defined (__NO_LONG_DOUBLE_MATH) || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
24# define iscanonical(x) ((void) (__typeof (x)) (x), 1)
25#else
26extern int __iscanonicall (long double __x)
27 __THROW __attribute__ ((__const__));
28# define __iscanonicalf(x) ((void) (__typeof (x)) (x), 1)
29# define __iscanonical(x) ((void) (__typeof (x)) (x), 1)
30# if __HAVE_DISTINCT_FLOAT128
31# define __iscanonicalf128(x) ((void) (__typeof (x)) (x), 1)
32# endif
33
34/* Return nonzero value if X is canonical. In IEEE interchange binary
35 formats, all values are canonical, but the argument must still be
36 converted to its semantic type for any exceptions arising from the
37 conversion, before being discarded; in IBM long double, there are
38 encodings that are not consistently handled as corresponding to any
39 particular value of the type, and we return 0 for those. */
40# ifndef __cplusplus
41# define iscanonical(x) __MATH_TG ((x), __iscanonical, (x))
42# else
43/* In C++ mode, __MATH_TG cannot be used, because it relies on
44 __builtin_types_compatible_p, which is a C-only builtin. On the
45 other hand, overloading provides the means to distinguish between
46 the floating-point types. The overloading resolution will match
47 the correct parameter (regardless of type qualifiers (i.e.: const
48 and volatile)). */
49extern "C++" {
50inline int iscanonical (float __val) { return __iscanonicalf (__val); }
51inline int iscanonical (double __val) { return __iscanonical (__val); }
52inline int iscanonical (long double __val) { return __iscanonicall (__val); }
53# if __HAVE_DISTINCT_FLOAT128
54inline int iscanonical (_Float128 __val) { return __iscanonicalf128 (__val); }
55# endif
56}
57# endif /* __cplusplus */
58#endif /* __NO_LONG_DOUBLE_MATH */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/link.h created+156
...@@ -0,0 +1,156 @@
1/* Machine-specific declarations for dynamic linker interface. PowerPC version
2 Copyright (C) 2004-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _LINK_H
20# error "Never include <bits/link.h> directly; use <link.h> instead."
21#endif
22
23
24#if __ELF_NATIVE_CLASS == 32
25
26/* Registers for entry into PLT on PPC32. */
27typedef struct La_ppc32_regs
28{
29 uint32_t lr_reg[8];
30 double lr_fp[8];
31 uint32_t lr_vreg[12][4];
32 uint32_t lr_r1;
33 uint32_t lr_lr;
34} La_ppc32_regs;
35
36/* Return values for calls from PLT on PPC32. */
37typedef struct La_ppc32_retval
38{
39 uint32_t lrv_r3;
40 uint32_t lrv_r4;
41 double lrv_fp[8];
42 uint32_t lrv_v2[4];
43} La_ppc32_retval;
44
45
46__BEGIN_DECLS
47
48extern Elf32_Addr la_ppc32_gnu_pltenter (Elf32_Sym *__sym,
49 unsigned int __ndx,
50 uintptr_t *__refcook,
51 uintptr_t *__defcook,
52 La_ppc32_regs *__regs,
53 unsigned int *__flags,
54 const char *__symname,
55 long int *__framesizep);
56extern unsigned int la_ppc32_gnu_pltexit (Elf32_Sym *__sym,
57 unsigned int __ndx,
58 uintptr_t *__refcook,
59 uintptr_t *__defcook,
60 const La_ppc32_regs *__inregs,
61 La_ppc32_retval *__outregs,
62 const char *__symname);
63
64__END_DECLS
65
66#elif __ELF_NATIVE_CLASS == 64
67# if _CALL_ELF != 2
68
69/* Registers for entry into PLT on PPC64. */
70typedef struct La_ppc64_regs
71{
72 uint64_t lr_reg[8];
73 double lr_fp[13];
74 uint32_t __padding;
75 uint32_t lr_vrsave;
76 uint32_t lr_vreg[12][4];
77 uint64_t lr_r1;
78 uint64_t lr_lr;
79} La_ppc64_regs;
80
81/* Return values for calls from PLT on PPC64. */
82typedef struct La_ppc64_retval
83{
84 uint64_t lrv_r3;
85 uint64_t lrv_r4;
86 double lrv_fp[4]; /* f1-f4, float - complex long double. */
87 uint32_t lrv_v2[4]; /* v2. */
88} La_ppc64_retval;
89
90
91__BEGIN_DECLS
92
93extern Elf64_Addr la_ppc64_gnu_pltenter (Elf64_Sym *__sym,
94 unsigned int __ndx,
95 uintptr_t *__refcook,
96 uintptr_t *__defcook,
97 La_ppc64_regs *__regs,
98 unsigned int *__flags,
99 const char *__symname,
100 long int *__framesizep);
101extern unsigned int la_ppc64_gnu_pltexit (Elf64_Sym *__sym,
102 unsigned int __ndx,
103 uintptr_t *__refcook,
104 uintptr_t *__defcook,
105 const La_ppc64_regs *__inregs,
106 La_ppc64_retval *__outregs,
107 const char *__symname);
108
109__END_DECLS
110
111# else
112
113/* Registers for entry into PLT on PPC64 in the ELFv2 ABI. */
114typedef struct La_ppc64v2_regs
115{
116 uint64_t lr_reg[8];
117 double lr_fp[13];
118 uint32_t __padding;
119 uint32_t lr_vrsave;
120 uint32_t lr_vreg[12][4] __attribute__ ((aligned (16)));
121 uint64_t lr_r1;
122 uint64_t lr_lr;
123} La_ppc64v2_regs;
124
125/* Return values for calls from PLT on PPC64 in the ELFv2 ABI. */
126typedef struct La_ppc64v2_retval
127{
128 uint64_t lrv_r3;
129 uint64_t lrv_r4;
130 double lrv_fp[10];
131 uint32_t lrv_vreg[8][4] __attribute__ ((aligned (16)));
132} La_ppc64v2_retval;
133
134
135__BEGIN_DECLS
136
137extern Elf64_Addr la_ppc64v2_gnu_pltenter (Elf64_Sym *__sym,
138 unsigned int __ndx,
139 uintptr_t *__refcook,
140 uintptr_t *__defcook,
141 La_ppc64v2_regs *__regs,
142 unsigned int *__flags,
143 const char *__symname,
144 long int *__framesizep);
145extern unsigned int la_ppc64v2_gnu_pltexit (Elf64_Sym *__sym,
146 unsigned int __ndx,
147 uintptr_t *__refcook,
148 uintptr_t *__defcook,
149 const La_ppc64v2_regs *__inregs,
150 La_ppc64v2_retval *__outregs,
151 const char *__symname);
152
153__END_DECLS
154
155# endif
156#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/long-double.h created+25
...@@ -0,0 +1,25 @@
1/* Properties of long double type. ldbl-opt version.
2 Copyright (C) 2016-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef __NO_LONG_DOUBLE_MATH
20# define __LONG_DOUBLE_MATH_OPTIONAL 1
21# ifndef __LONG_DOUBLE_128__
22# define __NO_LONG_DOUBLE_MATH 1
23# endif
24#endif
25#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/mman.h created+53
...@@ -0,0 +1,53 @@
1/* Definitions for POSIX memory map interface. Linux/PowerPC version.
2 Copyright (C) 1997-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MMAN_H
20# error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
21#endif
22
23/* The following definitions basically come from the kernel headers.
24 But the kernel header is not namespace clean. */
25
26#define PROT_SAO 0x10 /* Strong Access Ordering. */
27
28/* These are Linux-specific. */
29#ifdef __USE_MISC
30# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
31# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
32# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
33# define MAP_LOCKED 0x00080 /* Lock the mapping. */
34# define MAP_NORESERVE 0x00040 /* Don't check for reservations. */
35# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
36# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
37# define MAP_STACK 0x20000 /* Allocation is for a stack. */
38# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */
39# define MAP_SYNC 0x80000 /* Perform synchronous page
40 faults for the mapping. */
41# define MAP_FIXED_NOREPLACE 0x100000 /* MAP_FIXED but do not unmap
42 underlying mapping. */
43#endif
44
45/* Flags for `mlockall'. */
46#define MCL_CURRENT 0x2000 /* Lock all currently mapped pages. */
47#define MCL_FUTURE 0x4000 /* Lock all additions to address
48 space. */
49#define MCL_ONFAULT 0x8000 /* Lock all pages that are
50 faulted in. */
51
52/* Include generic Linux declarations. */
53#include <bits/mman-linux.h>
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/procfs.h created+49
...@@ -0,0 +1,49 @@
1/* Types for registers for sys/procfs.h. PowerPC version.
2 Copyright (C) 1996-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_PROCFS_H
20# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> instead."
21#endif
22
23#include <signal.h>
24#include <sys/ucontext.h>
25
26/* These definitions are normally provided by ucontext.h via
27 asm/sigcontext.h, asm/ptrace.h, and asm/elf.h. Otherwise we define
28 them here. */
29#if !defined __PPC64_ELF_H && !defined _ASM_POWERPC_ELF_H
30#define ELF_NGREG 48 /* includes nip, msr, lr, etc. */
31#define ELF_NFPREG 33 /* includes fpscr */
32#if __WORDSIZE == 32
33# define ELF_NVRREG 33 /* includes vscr */
34#else
35# define ELF_NVRREG 34 /* includes vscr */
36#endif
37
38typedef unsigned long elf_greg_t;
39typedef elf_greg_t elf_gregset_t[ELF_NGREG];
40
41typedef double elf_fpreg_t;
42typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
43
44/* Altivec registers */
45typedef struct {
46 unsigned int u[4];
47} __attribute__ ((__aligned__ (16))) elf_vrreg_t;
48typedef elf_vrreg_t elf_vrregset_t[ELF_NVRREG];
49#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/pthread_stack_min.h created+21
...@@ -0,0 +1,21 @@
1/* Definition of PTHREAD_STACK_MIN. Linux/PPC version.
2 Copyright (C) 2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public License as
7 published by the Free Software Foundation; either version 2.1 of the
8 License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; see the file COPYING.LIB. If
17 not, see <https://www.gnu.org/licenses/>. */
18
19/* Minimum size for a thread. At least two pages for systems with 64k
20 pages. */
21#define PTHREAD_STACK_MIN 131072
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/setjmp.h created+50
...@@ -0,0 +1,50 @@
1/* Copyright (C) 1997-2021 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18/* Define the machine-dependent type `jmp_buf'. PowerPC version. */
19#ifndef _BITS_SETJMP_H
20#define _BITS_SETJMP_H 1
21
22#if !defined _SETJMP_H && !defined _PTHREAD_H
23# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
24#endif
25
26/* The previous bits/setjmp.h had __jmp_buf defined as a structure.
27 We use an array of 'long int' instead, to make writing the
28 assembler easier. Naturally, user code should not depend on
29 either representation. */
30
31#include <bits/wordsize.h>
32
33/* The current powerpc 32-bit Altivec ABI specifies for SVR4 ABI and EABI
34 the vrsave must be at byte 248 & v20 at byte 256. So we must pad this
35 correctly on 32 bit. It also insists that vecregs are only gauranteed
36 4 byte alignment so we need to use vperm in the setjmp/longjmp routines.
37 We have to version the code because members like int __mask_was_saved
38 in the jmp_buf will move as jmp_buf is now larger than 248 bytes. We
39 cannot keep the altivec jmp_buf backward compatible with the jmp_buf. */
40#ifndef _ASM
41# if __WORDSIZE == 64
42typedef long int __jmp_buf[64] __attribute__ ((__aligned__ (16)));
43# else
44/* The alignment is not essential, i.e.the buffer can be copied to a 4 byte
45 aligned buffer as per the ABI it is just added for performance reasons. */
46typedef long int __jmp_buf[64 + (12 * 4)] __attribute__ ((__aligned__ (16)));
47# endif
48#endif
49
50#endif /* bits/setjmp.h */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/sigstack.h created+32
...@@ -0,0 +1,32 @@
1/* sigstack, sigaltstack definitions.
2 Copyright (C) 1998-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_SIGSTACK_H
20#define _BITS_SIGSTACK_H 1
21
22#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
23# error "Never include this file directly. Use <signal.h> instead"
24#endif
25
26/* Minimum stack size for a signal handler. */
27#define MINSIGSTKSZ 4096
28
29/* System default stack size. */
30#define SIGSTKSZ 16384
31
32#endif /* bits/sigstack.h */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/socket-constants.h created+70
...@@ -0,0 +1,70 @@
1/* Socket constants which vary among Linux architectures. Version for POWER.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SOCKET_H
20# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead."
21#endif
22
23#define SOL_SOCKET 1
24#define SO_ACCEPTCONN 30
25#define SO_BROADCAST 6
26#define SO_DONTROUTE 5
27#define SO_ERROR 4
28#define SO_KEEPALIVE 9
29#define SO_LINGER 13
30#define SO_OOBINLINE 10
31#define SO_RCVBUF 8
32#define SO_RCVLOWAT 16
33#define SO_REUSEADDR 2
34#define SO_SNDBUF 7
35#define SO_SNDLOWAT 17
36#define SO_TYPE 3
37
38#if __TIMESIZE == 64
39# define SO_RCVTIMEO 18
40# define SO_SNDTIMEO 19
41# define SO_TIMESTAMP 29
42# define SO_TIMESTAMPNS 35
43# define SO_TIMESTAMPING 37
44#else
45# define SO_RCVTIMEO_OLD 18
46# define SO_SNDTIMEO_OLD 19
47# define SO_RCVTIMEO_NEW 66
48# define SO_SNDTIMEO_NEW 67
49
50# define SO_TIMESTAMP_OLD 29
51# define SO_TIMESTAMPNS_OLD 35
52# define SO_TIMESTAMPING_OLD 37
53# define SO_TIMESTAMP_NEW 63
54# define SO_TIMESTAMPNS_NEW 64
55# define SO_TIMESTAMPING_NEW 65
56
57# ifdef __USE_TIME_BITS64
58# define SO_RCVTIMEO SO_RCVTIMEO_NEW
59# define SO_SNDTIMEO SO_SNDTIMEO_NEW
60# define SO_TIMESTAMP SO_TIMESTAMP_NEW
61# define SO_TIMESTAMPNS SO_TIMESTAMPNS_NEW
62# define SO_TIMESTAMPING SO_TIMESTAMPING_NEW
63# else
64# define SO_RCVTIMEO SO_RCVTIMEO_OLD
65# define SO_SNDTIMEO SO_SNDTIMEO_OLD
66# define SO_TIMESTAMP SO_TIMESTAMP_OLD
67# define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD
68# define SO_TIMESTAMPING SO_TIMESTAMPING_OLD
69# endif
70#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/struct_mutex.h created+63
...@@ -0,0 +1,63 @@
1/* PowerPC internal mutex struct definitions.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <http://www.gnu.org/licenses/>. */
18
19#ifndef _THREAD_MUTEX_INTERNAL_H
20#define _THREAD_MUTEX_INTERNAL_H 1
21
22struct __pthread_mutex_s
23{
24 int __lock;
25 unsigned int __count;
26 int __owner;
27#if __WORDSIZE == 64
28 unsigned int __nusers;
29#endif
30 /* KIND must stay at this position in the structure to maintain
31 binary compatibility with static initializers. */
32 int __kind;
33#if __WORDSIZE == 64
34 short __spins;
35 short __elision;
36 __pthread_list_t __list;
37# define __PTHREAD_MUTEX_HAVE_PREV 1
38#else
39 unsigned int __nusers;
40 __extension__ union
41 {
42 struct
43 {
44 short __espins;
45 short __elision;
46# define __spins __elision_data.__espins
47# define __elision __elision_data.__elision
48 } __elision_data;
49 __pthread_slist_t __list;
50 };
51# define __PTHREAD_MUTEX_HAVE_PREV 0
52#endif
53};
54
55#if __WORDSIZE == 64
56# define __PTHREAD_MUTEX_INITIALIZER(__kind) \
57 0, 0, 0, 0, __kind, 0, 0, { 0, 0 }
58#else
59# define __PTHREAD_MUTEX_INITIALIZER(__kind) \
60 0, 0, 0, __kind, 0, { { 0, 0 } }
61#endif
62
63#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/struct_rwlock.h created+61
...@@ -0,0 +1,61 @@
1/* PowerPC internal rwlock struct definitions.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3
4 This file is part of the GNU C Library.
5
6 The GNU C Library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
10
11 The GNU C Library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
15
16 You should have received a copy of the GNU Lesser General Public
17 License along with the GNU C Library; if not, see
18 <http://www.gnu.org/licenses/>. */
19
20#ifndef _RWLOCK_INTERNAL_H
21#define _RWLOCK_INTERNAL_H
22
23struct __pthread_rwlock_arch_t
24{
25 unsigned int __readers;
26 unsigned int __writers;
27 unsigned int __wrphase_futex;
28 unsigned int __writers_futex;
29 unsigned int __pad3;
30 unsigned int __pad4;
31#if __WORDSIZE == 64
32 int __cur_writer;
33 int __shared;
34 unsigned char __rwelision;
35 unsigned char __pad1[7];
36 unsigned long int __pad2;
37 /* FLAGS must stay at this position in the structure to maintain
38 binary compatibility. */
39 unsigned int __flags;
40# define __PTHREAD_RWLOCK_ELISION_EXTRA 0, {0, 0, 0, 0, 0, 0, 0 }
41#else
42 unsigned char __rwelision;
43 unsigned char __pad2;
44 unsigned char __shared;
45 /* FLAGS must stay at this position in the structure to maintain
46 binary compatibility. */
47 unsigned char __flags;
48 int __cur_writer;
49# define __PTHREAD_RWLOCK_ELISION_EXTRA 0
50#endif
51};
52
53#if __WORDSIZE == 64
54# define __PTHREAD_RWLOCK_INITIALIZER(__flags) \
55 0, 0, 0, 0, 0, 0, 0, 0, __PTHREAD_RWLOCK_ELISION_EXTRA, 0, __flags
56#else
57# define __PTHREAD_RWLOCK_INITIALIZER(__flags) \
58 0, 0, 0, 0, 0, 0, __PTHREAD_RWLOCK_ELISION_EXTRA, 0, 0, __flags, 0
59#endif
60
61#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/struct_stat.h created+231
...@@ -0,0 +1,231 @@
1/* Definition for struct stat.
2 Copyright (C) 2020-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#if !defined _SYS_STAT_H && !defined _FCNTL_H
20# error "Never include <bits/struct_stat.h> directly; use <sys/stat.h> instead."
21#endif
22
23#ifndef _BITS_STRUCT_STAT_H
24#define _BITS_STRUCT_STAT_H 1
25
26#include <bits/wordsize.h>
27
28#if __WORDSIZE == 32
29struct stat
30 {
31# ifdef __USE_TIME_BITS64
32# include <bits/struct_stat_time64_helper.h>
33# else
34 __dev_t st_dev; /* Device. */
35# ifndef __USE_FILE_OFFSET64
36 unsigned short int __pad1;
37 __ino_t st_ino; /* File serial number. */
38# else
39 __ino64_t st_ino; /* File serial number. */
40# endif
41 __mode_t st_mode; /* File mode. */
42 __nlink_t st_nlink; /* Link count. */
43 __uid_t st_uid; /* User ID of the file's owner. */
44 __gid_t st_gid; /* Group ID of the file's group.*/
45 __dev_t st_rdev; /* Device number, if device. */
46 unsigned short int __pad2;
47# ifndef __USE_FILE_OFFSET64
48 __off_t st_size; /* Size of file, in bytes. */
49# else
50 __off64_t st_size; /* Size of file, in bytes. */
51# endif
52 __blksize_t st_blksize; /* Optimal block size for I/O. */
53
54# ifndef __USE_FILE_OFFSET64
55 __blkcnt_t st_blocks; /* Number 512-byte blocks allocated. */
56# else
57 __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
58# endif
59# ifdef __USE_XOPEN2K8
60 /* Nanosecond resolution timestamps are stored in a format
61 equivalent to 'struct timespec'. This is the type used
62 whenever possible but the Unix namespace rules do not allow the
63 identifier 'timespec' to appear in the <sys/stat.h> header.
64 Therefore we have to handle the use of this header in strictly
65 standard-compliant sources special. */
66 struct timespec st_atim; /* Time of last access. */
67 struct timespec st_mtim; /* Time of last modification. */
68 struct timespec st_ctim; /* Time of last status change. */
69# define st_atime st_atim.tv_sec /* Backward compatibility. */
70# define st_mtime st_mtim.tv_sec
71# define st_ctime st_ctim.tv_sec
72# else
73 __time_t st_atime; /* Time of last access. */
74 unsigned long int st_atimensec; /* Nscecs of last access. */
75 __time_t st_mtime; /* Time of last modification. */
76 unsigned long int st_mtimensec; /* Nsecs of last modification. */
77 __time_t st_ctime; /* Time of last status change. */
78 unsigned long int st_ctimensec; /* Nsecs of last status change. */
79# endif
80 unsigned long int __glibc_reserved4;
81 unsigned long int __glibc_reserved5;
82# endif /* __USE_TIME_BITS64 */
83 };
84
85# ifdef __USE_LARGEFILE64
86struct stat64
87 {
88# ifdef __USE_TIME_BITS64
89# include <bits/struct_stat_time64_helper.h>
90# else
91 __dev_t st_dev; /* Device. */
92 __ino64_t st_ino; /* File serial number. */
93 __mode_t st_mode; /* File mode. */
94 __nlink_t st_nlink; /* Link count. */
95 __uid_t st_uid; /* User ID of the file's owner. */
96 __gid_t st_gid; /* Group ID of the file's group.*/
97 __dev_t st_rdev; /* Device number, if device. */
98 unsigned short int __pad2;
99 __off64_t st_size; /* Size of file, in bytes. */
100 __blksize_t st_blksize; /* Optimal block size for I/O. */
101 __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
102# ifdef __USE_XOPEN2K8
103 /* Nanosecond resolution timestamps are stored in a format
104 equivalent to 'struct timespec'. This is the type used
105 whenever possible but the Unix namespace rules do not allow the
106 identifier 'timespec' to appear in the <sys/stat.h> header.
107 Therefore we have to handle the use of this header in strictly
108 standard-compliant sources special. */
109 struct timespec st_atim; /* Time of last access. */
110 struct timespec st_mtim; /* Time of last modification. */
111 struct timespec st_ctim; /* Time of last status change. */
112# define st_atime st_atim.tv_sec /* Backward compatibility. */
113# define st_mtime st_mtim.tv_sec
114# define st_ctime st_ctim.tv_sec
115# else
116 __time_t st_atime; /* Time of last access. */
117 unsigned long int st_atimensec; /* Nscecs of last access. */
118 __time_t st_mtime; /* Time of last modification. */
119 unsigned long int st_mtimensec; /* Nsecs of last modification. */
120 __time_t st_ctime; /* Time of last status change. */
121 unsigned long int st_ctimensec; /* Nsecs of last status change. */
122# endif
123 unsigned long int __glibc_reserved4;
124 unsigned long int __glibc_reserved5;
125# endif /* __USE_TIME_BITS64 */
126 };
127# endif /* __USE_LARGEFILE64 */
128
129#else /* __WORDSIZE == 32 */
130
131struct stat
132 {
133 __dev_t st_dev; /* Device. */
134# ifndef __USE_FILE_OFFSET64
135 __ino_t st_ino; /* File serial number. */
136# else
137 __ino64_t st_ino; /* File serial number. */
138# endif
139 __nlink_t st_nlink; /* Link count. */
140 __mode_t st_mode; /* File mode. */
141 __uid_t st_uid; /* User ID of the file's owner. */
142 __gid_t st_gid; /* Group ID of the file's group.*/
143 int __pad2;
144 __dev_t st_rdev; /* Device number, if device. */
145# ifndef __USE_FILE_OFFSET64
146 __off_t st_size; /* Size of file, in bytes. */
147# else
148 __off64_t st_size; /* Size of file, in bytes. */
149# endif
150 __blksize_t st_blksize; /* Optimal block size for I/O. */
151
152# ifndef __USE_FILE_OFFSET64
153 __blkcnt_t st_blocks; /* Number 512-byte blocks allocated. */
154# else
155 __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
156# endif
157# ifdef __USE_XOPEN2K8
158 /* Nanosecond resolution timestamps are stored in a format
159 equivalent to 'struct timespec'. This is the type used
160 whenever possible but the Unix namespace rules do not allow the
161 identifier 'timespec' to appear in the <sys/stat.h> header.
162 Therefore we have to handle the use of this header in strictly
163 standard-compliant sources special. */
164 struct timespec st_atim; /* Time of last access. */
165 struct timespec st_mtim; /* Time of last modification. */
166 struct timespec st_ctim; /* Time of last status change. */
167# define st_atime st_atim.tv_sec /* Backward compatibility. */
168# define st_mtime st_mtim.tv_sec
169# define st_ctime st_ctim.tv_sec
170# else
171 __time_t st_atime; /* Time of last access. */
172 unsigned long int st_atimensec; /* Nscecs of last access. */
173 __time_t st_mtime; /* Time of last modification. */
174 unsigned long int st_mtimensec; /* Nsecs of last modification. */
175 __time_t st_ctime; /* Time of last status change. */
176 unsigned long int st_ctimensec; /* Nsecs of last status change. */
177# endif
178 unsigned long int __glibc_reserved4;
179 unsigned long int __glibc_reserved5;
180 unsigned long int __glibc_reserved6;
181 };
182
183# ifdef __USE_LARGEFILE64
184struct stat64
185 {
186 __dev_t st_dev; /* Device. */
187 __ino64_t st_ino; /* File serial number. */
188 __nlink_t st_nlink; /* Link count. */
189 __mode_t st_mode; /* File mode. */
190 __uid_t st_uid; /* User ID of the file's owner. */
191 __gid_t st_gid; /* Group ID of the file's group.*/
192 int __pad2;
193 __dev_t st_rdev; /* Device number, if device. */
194 __off64_t st_size; /* Size of file, in bytes. */
195 __blksize_t st_blksize; /* Optimal block size for I/O. */
196 __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
197# ifdef __USE_XOPEN2K8
198 /* Nanosecond resolution timestamps are stored in a format
199 equivalent to 'struct timespec'. This is the type used
200 whenever possible but the Unix namespace rules do not allow the
201 identifier 'timespec' to appear in the <sys/stat.h> header.
202 Therefore we have to handle the use of this header in strictly
203 standard-compliant sources special. */
204 struct timespec st_atim; /* Time of last access. */
205 struct timespec st_mtim; /* Time of last modification. */
206 struct timespec st_ctim; /* Time of last status change. */
207# define st_atime st_atim.tv_sec /* Backward compatibility. */
208# define st_mtime st_mtim.tv_sec
209# define st_ctime st_ctim.tv_sec
210# else
211 __time_t st_atime; /* Time of last access. */
212 unsigned long int st_atimensec; /* Nscecs of last access. */
213 __time_t st_mtime; /* Time of last modification. */
214 unsigned long int st_mtimensec; /* Nsecs of last modification. */
215 __time_t st_ctime; /* Time of last status change. */
216 unsigned long int st_ctimensec; /* Nsecs of last status change. */
217# endif
218 unsigned long int __glibc_reserved4;
219 unsigned long int __glibc_reserved5;
220 unsigned long int __glibc_reserved6;
221 };
222# endif /* __USE_LARGEFILE64 */
223#endif
224
225/* Tell code we have these members. */
226#define _STATBUF_ST_BLKSIZE
227#define _STATBUF_ST_RDEV
228/* Nanosecond resolution time values are supported. */
229#define _STATBUF_ST_NSEC
230
231#endif /* _BITS_STRUCT_STAT_H */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/termios-baud.h created+45
...@@ -0,0 +1,45 @@
1/* termios baud rate selection definitions. Linux/powerpc version.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _TERMIOS_H
20# error "Never include <bits/termios-baud.h> directly; use <termios.h> instead."
21#endif
22
23#ifdef __USE_MISC
24# define CBAUD 0000377
25# define CBAUDEX 0000020
26# define CMSPAR 010000000000 /* mark or space (stick) parity */
27# define CRTSCTS 020000000000 /* flow control */
28#endif
29
30#define B57600 00020
31#define B115200 00021
32#define B230400 00022
33#define B460800 00023
34#define B500000 00024
35#define B576000 00025
36#define B921600 00026
37#define B1000000 00027
38#define B1152000 00030
39#define B1500000 00031
40#define B2000000 00032
41#define B2500000 00033
42#define B3000000 00034
43#define B3500000 00035
44#define B4000000 00036
45#define __MAX_BAUD B4000000
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/termios-c_cc.h created+41
...@@ -0,0 +1,41 @@
1/* termios c_cc symbolic constant definitions. Linux/powerpc version.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _TERMIOS_H
20# error "Never include <bits/termios-c_cc.h> directly; use <termios.h> instead."
21#endif
22
23/* c_cc characters */
24#define VINTR 0
25#define VQUIT 1
26#define VERASE 2
27#define VKILL 3
28#define VEOF 4
29#define VMIN 5
30#define VEOL 6
31#define VTIME 7
32#define VEOL2 8
33#define VSWTC 9
34
35#define VWERASE 10
36#define VREPRINT 11
37#define VSUSP 12
38#define VSTART 13
39#define VSTOP 14
40#define VLNEXT 15
41#define VDISCARD 16
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/termios-c_cflag.h created+35
...@@ -0,0 +1,35 @@
1/* termios control mode definitions. Linux/powerpc version.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _TERMIOS_H
20# error "Never include <bits/termios-c_cflag.h> directly; use <termios.h> instead."
21#endif
22
23#define CSIZE 00001400
24#define CS5 00000000
25#define CS6 00000400
26#define CS7 00001000
27#define CS8 00001400
28
29#define CSTOPB 00002000
30#define CREAD 00004000
31#define PARENB 00010000
32#define PARODD 00020000
33#define HUPCL 00040000
34
35#define CLOCAL 00100000
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/termios-c_iflag.h created+38
...@@ -0,0 +1,38 @@
1/* termios input mode definitions. Linux/powerpc version.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _TERMIOS_H
20# error "Never include <bits/termios-c_iflags.h> directly; use <termios.h> instead."
21#endif
22
23/* c_iflag bits */
24#define IGNBRK 0000001
25#define BRKINT 0000002
26#define IGNPAR 0000004
27#define PARMRK 0000010
28#define INPCK 0000020
29#define ISTRIP 0000040
30#define INLCR 0000100
31#define IGNCR 0000200
32#define ICRNL 0000400
33#define IXON 0001000
34#define IXOFF 0002000
35#define IXANY 0004000
36#define IUCLC 0010000
37#define IMAXBEL 0020000
38#define IUTF8 0040000
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/termios-c_lflag.h created+45
...@@ -0,0 +1,45 @@
1/* termios local mode definitions. Linux/powerpc version.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _TERMIOS_H
20# error "Never include <bits/termios-c_lflag.h> directly; use <termios.h> instead."
21#endif
22
23/* c_lflag bits */
24#define ISIG 0x00000080
25#define ICANON 0x00000100
26#if defined __USE_MISC || (defined __USE_XOPEN && !defined __USE_XOPEN2K)
27# define XCASE 0x00004000
28#endif
29#define ECHO 0x00000008
30#define ECHOE 0x00000002
31#define ECHOK 0x00000004
32#define ECHONL 0x00000010
33#define NOFLSH 0x80000000
34#define TOSTOP 0x00400000
35#ifdef __USE_MISC
36# define ECHOCTL 0x00000040
37# define ECHOPRT 0x00000020
38# define ECHOKE 0x00000001
39# define FLUSHO 0x00800000
40# define PENDIN 0x20000000
41#endif
42#define IEXTEN 0x00000400
43#ifdef __USE_MISC
44# define EXTPROC 0x10000000
45#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/termios-c_oflag.h created+65
...@@ -0,0 +1,65 @@
1/* termios output mode definitions. Linux/powerpc version.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _TERMIOS_H
20# error "Never include <bits/termios-c_oflag.h> directly; use <termios.h> instead."
21#endif
22
23/* c_oflag bits */
24#define OPOST 0000001
25#define ONLCR 0000002
26#define OLCUC 0000004
27
28#define OCRNL 0000010
29#define ONOCR 0000020
30#define ONLRET 0000040
31
32#define OFILL 00000100
33#define OFDEL 00000200
34#if defined __USE_MISC || defined __USE_XOPEN
35# define NLDLY 00001400
36# define NL0 00000000
37# define NL1 00000400
38# if defined __USE_MISC
39# define NL2 00001000
40# define NL3 00001400
41# endif
42# define TABDLY 00006000
43# define TAB0 00000000
44# define TAB1 00002000
45# define TAB2 00004000
46# define TAB3 00006000
47# define CRDLY 00030000
48# define CR0 00000000
49# define CR1 00010000
50# define CR2 00020000
51# define CR3 00030000
52# define FFDLY 00040000
53# define FF0 00000000
54# define FF1 00040000
55# define BSDLY 00100000
56# define BS0 00000000
57# define BS1 00100000
58#endif
59#define VTDLY 00200000
60#define VT0 00000000
61#define VT1 00200000
62
63#ifdef __USE_MISC
64# define XTABS 00006000
65#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/termios-misc.h created+72
...@@ -0,0 +1,72 @@
1/* termios baud platform specific definitions. Linux/powerpc version.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _TERMIOS_H
20# error "Never include <bits/termios-misc.h> directly; use <termios.h> instead."
21#endif
22
23#ifdef __USE_MISC
24
25struct sgttyb {
26 char sg_ispeed;
27 char sg_ospeed;
28 char sg_erase;
29 char sg_kill;
30 short sg_flags;
31};
32
33struct tchars {
34 char t_intrc;
35 char t_quitc;
36 char t_startc;
37 char t_stopc;
38 char t_eofc;
39 char t_brkc;
40};
41
42struct ltchars {
43 char t_suspc;
44 char t_dsuspc;
45 char t_rprntc;
46 char t_flushc;
47 char t_werasc;
48 char t_lnextc;
49};
50
51/* Used for packet mode */
52#define TIOCPKT_DATA 0
53#define TIOCPKT_FLUSHREAD 1
54#define TIOCPKT_FLUSHWRITE 2
55#define TIOCPKT_STOP 4
56#define TIOCPKT_START 8
57#define TIOCPKT_NOSTOP 16
58#define TIOCPKT_DOSTOP 32
59
60/* c_cc characters */
61#define _VINTR 0
62#define _VQUIT 1
63#define _VERASE 2
64#define _VKILL 3
65#define _VEOF 4
66#define _VMIN 5
67#define _VEOL 6
68#define _VTIME 7
69#define _VEOL2 8
70#define _VSWTC 9
71
72#endif /* __USE_MISC */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/types/struct_msqid_ds.h created+53
...@@ -0,0 +1,53 @@
1/* Linux/PowerPC implementation of the SysV message struct msqid_ds.
2 Copyright (C) 2020-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
21#endif
22
23#include <bits/types/time_t.h>
24
25/* Structure of record for one message inside the kernel.
26 The type `struct msg' is opaque. */
27struct msqid_ds
28{
29#ifdef __USE_TIME_BITS64
30# include <bits/types/struct_msqid64_ds_helper.h>
31#else
32 struct ipc_perm msg_perm; /* structure describing operation permission */
33# if __TIMESIZE == 32
34 unsigned long int __msg_stime_high;
35 __time_t msg_stime; /* time of last msgsnd command */
36 unsigned long int __msg_rtime_high;
37 __time_t msg_rtime; /* time of last msgsnd command */
38 unsigned long int __msg_ctime_high;
39 __time_t msg_ctime; /* time of last change */
40# else
41 __time_t msg_stime; /* time of last msgsnd command */
42 __time_t msg_rtime; /* time of last msgsnd command */
43 __time_t msg_ctime; /* time of last change */
44# endif
45 __syscall_ulong_t __msg_cbytes; /* current number of bytes on queue */
46 msgqnum_t msg_qnum; /* number of messages currently on queue */
47 msglen_t msg_qbytes; /* max number of bytes allowed on queue */
48 __pid_t msg_lspid; /* pid of last msgsnd() */
49 __pid_t msg_lrpid; /* pid of last msgrcv() */
50 __syscall_ulong_t __glibc_reserved4;
51 __syscall_ulong_t __glibc_reserved5;
52#endif
53};
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/types/struct_semid_ds.h created+43
...@@ -0,0 +1,43 @@
1/* PowerPC implementation of the semaphore struct semid_ds.
2 Copyright (C) 1995-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead."
21#endif
22
23/* Data structure describing a set of semaphores. */
24struct semid_ds
25{
26#ifdef __USE_TIME_BITS64
27# include <bits/types/struct_semid64_ds_helper.h>
28#else
29 struct ipc_perm sem_perm; /* operation permission struct */
30# if __TIMESIZE == 32
31 __syscall_ulong_t __sem_otime_high;
32 __time_t sem_otime; /* last semop() time */
33 __syscall_ulong_t __sem_ctime_high;
34 __time_t sem_ctime; /* last time changed by semctl() */
35# else
36 __time_t sem_otime; /* last semop() time */
37 __time_t sem_ctime; /* last time changed by semctl() */
38# endif
39 __syscall_ulong_t sem_nsems; /* number of semaphores in set */
40 __syscall_ulong_t __glibc_reserved3;
41 __syscall_ulong_t __glibc_reserved4;
42#endif
43};
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/types/struct_shmid_ds.h created+50
...@@ -0,0 +1,50 @@
1/* Linux/PowerPC implementation of the shared memory struct shmid_ds.
2 Copyright (C) 2020-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never include <bits/types/struct_shmid_ds.h> directly; use <sys/shm.h> instead."
21#endif
22
23/* Data structure describing a shared memory segment. */
24struct shmid_ds
25 {
26#ifdef __USE_TIME_BITS64
27# include <bits/types/struct_shmid64_ds_helper.h>
28#else
29 struct ipc_perm shm_perm; /* operation permission struct */
30# if __TIMESIZE == 32
31 unsigned long int __shm_atime_high;
32 __time_t shm_atime; /* time of last shmat() */
33 unsigned long int __shm_dtime_high;
34 __time_t shm_dtime; /* time of last shmdt() */
35 unsigned long int __shm_ctime_high;
36 __time_t shm_ctime; /* time of last change by shmctl() */
37 unsigned long int __glibc_reserved4;
38# else
39 __time_t shm_atime; /* time of last shmat() */
40 __time_t shm_dtime; /* time of last shmdt() */
41 __time_t shm_ctime; /* time of last change by shmctl() */
42# endif
43 size_t shm_segsz; /* size of segment in bytes */
44 __pid_t shm_cpid; /* pid of creator */
45 __pid_t shm_lpid; /* pid of last shmop */
46 shmatt_t shm_nattch; /* number of current attaches */
47 __syscall_ulong_t __glibc_reserved5;
48 __syscall_ulong_t __glibc_reserved6;
49#endif
50 };
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/bits/wordsize.h created+11
...@@ -0,0 +1,11 @@
1/* Determine the wordsize from the preprocessor defines. */
2
3#if defined __powerpc64__
4# define __WORDSIZE 64
5# define __WORDSIZE_TIME64_COMPAT32 1
6#else
7# define __WORDSIZE 32
8# define __WORDSIZE_TIME64_COMPAT32 0
9# define __WORDSIZE32_SIZE_ULONG 0
10# define __WORDSIZE32_PTRDIFF_LONG 0
11#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/fpu_control.h created+114
...@@ -0,0 +1,114 @@
1/* FPU control word definitions. PowerPC version.
2 Copyright (C) 1996-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _FPU_CONTROL_H
20#define _FPU_CONTROL_H
21
22#if defined __SPE__ || (defined __NO_FPRS__ && !defined _SOFT_FLOAT)
23# error "SPE/e500 is no longer supported"
24#endif
25
26#ifdef _SOFT_FLOAT
27
28# define _FPU_RESERVED 0xffffffff
29# define _FPU_DEFAULT 0x00000000 /* Default value. */
30typedef unsigned int fpu_control_t;
31# define _FPU_GETCW(cw) (cw) = 0
32# define _FPU_SETCW(cw) (void) (cw)
33extern fpu_control_t __fpu_control;
34
35#else /* PowerPC 6xx floating-point. */
36
37/* rounding control */
38# define _FPU_RC_NEAREST 0x00 /* RECOMMENDED */
39# define _FPU_RC_DOWN 0x03
40# define _FPU_RC_UP 0x02
41# define _FPU_RC_ZERO 0x01
42
43# define _FPU_MASK_RC (_FPU_RC_NEAREST|_FPU_RC_DOWN|_FPU_RC_UP|_FPU_RC_ZERO)
44
45# define _FPU_MASK_NI 0x04 /* non-ieee mode */
46
47/* masking of interrupts */
48# define _FPU_MASK_ZM 0x10 /* zero divide */
49# define _FPU_MASK_OM 0x40 /* overflow */
50# define _FPU_MASK_UM 0x20 /* underflow */
51# define _FPU_MASK_XM 0x08 /* inexact */
52# define _FPU_MASK_IM 0x80 /* invalid operation */
53
54# define _FPU_RESERVED 0xffffff00 /* These bits are reserved are not changed. */
55
56/* The fdlibm code requires no interrupts for exceptions. */
57# define _FPU_DEFAULT 0x00000000 /* Default value. */
58
59/* IEEE: same as above, but (some) exceptions;
60 we leave the 'inexact' exception off.
61 */
62# define _FPU_IEEE 0x000000f0
63
64/* Type of the control word. */
65typedef unsigned int fpu_control_t;
66
67/* Macros for accessing the hardware control word. */
68# define _FPU_GETCW(cw) \
69 ({union { double __d; unsigned long long __ll; } __u; \
70 __asm__ __volatile__("mffs %0" : "=f" (__u.__d)); \
71 (cw) = (fpu_control_t) __u.__ll; \
72 (fpu_control_t) __u.__ll; \
73 })
74
75# define _FPU_GET_RC_ISA300() \
76 ({union { double __d; unsigned long long __ll; } __u; \
77 __asm__ __volatile__( \
78 ".machine push; .machine \"power9\"; mffsl %0; .machine pop" \
79 : "=f" (__u.__d)); \
80 (fpu_control_t) (__u.__ll & _FPU_MASK_RC); \
81 })
82
83# ifdef _ARCH_PWR9
84# define _FPU_GET_RC() _FPU_GET_RC_ISA300()
85# elif defined __BUILTIN_CPU_SUPPORTS__
86# define _FPU_GET_RC() \
87 ({fpu_control_t __rc; \
88 __rc = __glibc_likely (__builtin_cpu_supports ("arch_3_00")) \
89 ? _FPU_GET_RC_ISA300 () \
90 : _FPU_GETCW (__rc) & _FPU_MASK_RC; \
91 __rc; \
92 })
93# else
94# define _FPU_GET_RC() \
95 ({fpu_control_t __rc = _FPU_GETCW (__rc) & _FPU_MASK_RC; \
96 __rc; \
97 })
98# endif
99
100# define _FPU_SETCW(cw) \
101 { union { double __d; unsigned long long __ll; } __u; \
102 register double __fr; \
103 __u.__ll = 0xfff80000LL << 32; /* This is a QNaN. */ \
104 __u.__ll |= (cw) & 0xffffffffLL; \
105 __fr = __u.__d; \
106 __asm__ __volatile__("mtfsf 255,%0" : : "f" (__fr)); \
107 }
108
109/* Default control word set at startup. */
110extern fpu_control_t __fpu_control;
111
112#endif /* PowerPC 6xx floating-point. */
113
114#endif /* _FPU_CONTROL_H */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/gnu/lib-names-32.h created+29
...@@ -0,0 +1,29 @@
1/* This file is automatically generated. */
2#ifndef __GNU_LIB_NAMES_H
3# error "Never use <gnu/lib-names-32.h> directly; include <gnu/lib-names.h> instead."
4#endif
5
6#define LD_SO "ld.so.1"
7#define LIBANL_SO "libanl.so.1"
8#define LIBBROKENLOCALE_SO "libBrokenLocale.so.1"
9#define LIBCRYPT_SO "libcrypt.so.1"
10#define LIBC_MALLOC_DEBUG_SO "libc_malloc_debug.so.0"
11#define LIBC_SO "libc.so.6"
12#define LIBDL_SO "libdl.so.2"
13#define LIBGCC_S_SO "libgcc_s.so.1"
14#define LIBMVEC_SO "libmvec.so.1"
15#define LIBM_SO "libm.so.6"
16#define LIBNSL_SO "libnsl.so.1"
17#define LIBNSS_COMPAT_SO "libnss_compat.so.2"
18#define LIBNSS_DB_SO "libnss_db.so.2"
19#define LIBNSS_DNS_SO "libnss_dns.so.2"
20#define LIBNSS_FILES_SO "libnss_files.so.2"
21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"
23#define LIBNSS_TEST1_SO "libnss_test1.so.2"
24#define LIBNSS_TEST2_SO "libnss_test2.so.2"
25#define LIBPTHREAD_SO "libpthread.so.0"
26#define LIBRESOLV_SO "libresolv.so.2"
27#define LIBRT_SO "librt.so.1"
28#define LIBTHREAD_DB_SO "libthread_db.so.1"
29#define LIBUTIL_SO "libutil.so.1"
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/gnu/lib-names.h created+19
...@@ -0,0 +1,19 @@
1/* This file is automatically generated.
2 It defines macros to allow user program to find the shared
3 library files which come as part of GNU libc. */
4#ifndef __GNU_LIB_NAMES_H
5#define __GNU_LIB_NAMES_H 1
6
7#include <bits/wordsize.h>
8
9#if __WORDSIZE == 32
10# include <gnu/lib-names-32.h>
11#endif
12#if __WORDSIZE == 64 && _CALL_ELF != 2
13# include <gnu/lib-names-64-v1.h>
14#endif
15#if __WORDSIZE == 64 && _CALL_ELF == 2
16# include <gnu/lib-names-64-v2.h>
17#endif
18
19#endif /* gnu/lib-names.h */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/gnu/stubs.h created+15
...@@ -0,0 +1,15 @@
1/* This file is automatically generated.
2 This file selects the right generated file of `__stub_FUNCTION' macros
3 based on the architecture being compiled for. */
4
5#include <bits/wordsize.h>
6
7#if __WORDSIZE == 32
8# include <gnu/stubs-32.h>
9#endif
10#if __WORDSIZE == 64 && _CALL_ELF != 2
11# include <gnu/stubs-64-v1.h>
12#endif
13#if __WORDSIZE == 64 && _CALL_ELF == 2
14# include <gnu/stubs-64-v2.h>
15#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/ieee754.h created+197
...@@ -0,0 +1,197 @@
1/* Copyright (C) 1992-2021 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _IEEE754_H
19#define _IEEE754_H 1
20
21#include <features.h>
22
23#include <bits/endian.h>
24#include <bits/floatn.h>
25
26__BEGIN_DECLS
27
28union ieee754_float
29 {
30 float f;
31
32 /* This is the IEEE 754 single-precision format. */
33 struct
34 {
35#if __BYTE_ORDER == __BIG_ENDIAN
36 unsigned int negative:1;
37 unsigned int exponent:8;
38 unsigned int mantissa:23;
39#endif /* Big endian. */
40#if __BYTE_ORDER == __LITTLE_ENDIAN
41 unsigned int mantissa:23;
42 unsigned int exponent:8;
43 unsigned int negative:1;
44#endif /* Little endian. */
45 } ieee;
46
47 /* This format makes it easier to see if a NaN is a signalling NaN. */
48 struct
49 {
50#if __BYTE_ORDER == __BIG_ENDIAN
51 unsigned int negative:1;
52 unsigned int exponent:8;
53 unsigned int quiet_nan:1;
54 unsigned int mantissa:22;
55#endif /* Big endian. */
56#if __BYTE_ORDER == __LITTLE_ENDIAN
57 unsigned int mantissa:22;
58 unsigned int quiet_nan:1;
59 unsigned int exponent:8;
60 unsigned int negative:1;
61#endif /* Little endian. */
62 } ieee_nan;
63 };
64
65#define IEEE754_FLOAT_BIAS 0x7f /* Added to exponent. */
66
67
68union ieee754_double
69 {
70 double d;
71
72 /* This is the IEEE 754 double-precision format. */
73 struct
74 {
75#if __BYTE_ORDER == __BIG_ENDIAN
76 unsigned int negative:1;
77 unsigned int exponent:11;
78 /* Together these comprise the mantissa. */
79 unsigned int mantissa0:20;
80 unsigned int mantissa1:32;
81#endif /* Big endian. */
82#if __BYTE_ORDER == __LITTLE_ENDIAN
83 /* Together these comprise the mantissa. */
84 unsigned int mantissa1:32;
85 unsigned int mantissa0:20;
86 unsigned int exponent:11;
87 unsigned int negative:1;
88#endif /* Little endian. */
89 } ieee;
90
91 /* This format makes it easier to see if a NaN is a signalling NaN. */
92 struct
93 {
94#if __BYTE_ORDER == __BIG_ENDIAN
95 unsigned int negative:1;
96 unsigned int exponent:11;
97 unsigned int quiet_nan:1;
98 /* Together these comprise the mantissa. */
99 unsigned int mantissa0:19;
100 unsigned int mantissa1:32;
101#else
102 /* Together these comprise the mantissa. */
103 unsigned int mantissa1:32;
104 unsigned int mantissa0:19;
105 unsigned int quiet_nan:1;
106 unsigned int exponent:11;
107 unsigned int negative:1;
108#endif
109 } ieee_nan;
110 };
111
112#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */
113
114
115#if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
116/* long double is IEEE 128 bit */
117union ieee854_long_double
118 {
119 long double d;
120
121 /* This is the IEEE 854 quad-precision format. */
122 struct
123 {
124#if __BYTE_ORDER == __BIG_ENDIAN
125 unsigned int negative:1;
126 unsigned int exponent:15;
127 /* Together these comprise the mantissa. */
128 unsigned int mantissa0:16;
129 unsigned int mantissa1:32;
130 unsigned int mantissa2:32;
131 unsigned int mantissa3:32;
132#endif /* Big endian. */
133#if __BYTE_ORDER == __LITTLE_ENDIAN
134 /* Together these comprise the mantissa. */
135 unsigned int mantissa3:32;
136 unsigned int mantissa2:32;
137 unsigned int mantissa1:32;
138 unsigned int mantissa0:16;
139 unsigned int exponent:15;
140 unsigned int negative:1;
141#endif /* Little endian. */
142 } ieee;
143
144 /* This format makes it easier to see if a NaN is a signalling NaN. */
145 struct
146 {
147#if __BYTE_ORDER == __BIG_ENDIAN
148 unsigned int negative:1;
149 unsigned int exponent:15;
150 unsigned int quiet_nan:1;
151 /* Together these comprise the mantissa. */
152 unsigned int mantissa0:15;
153 unsigned int mantissa1:32;
154 unsigned int mantissa2:32;
155 unsigned int mantissa3:32;
156#else
157 /* Together these comprise the mantissa. */
158 unsigned int mantissa3:32;
159 unsigned int mantissa2:32;
160 unsigned int mantissa1:32;
161 unsigned int mantissa0:15;
162 unsigned int quiet_nan:1;
163 unsigned int exponent:15;
164 unsigned int negative:1;
165#endif
166 } ieee_nan;
167 };
168
169#define IEEE854_LONG_DOUBLE_BIAS 0x3fff /* Added to exponent. */
170#endif
171
172
173#if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0 || __GNUC_PREREQ (7, 0)
174/* IBM extended format for long double.
175
176 Each long double is made up of two IEEE doubles. The value of the
177 long double is the sum of the values of the two parts. The most
178 significant part is required to be the value of the long double
179 rounded to the nearest double, as specified by IEEE. For Inf
180 values, the least significant part is required to be one of +0.0 or
181 -0.0. No other requirements are made; so, for example, 1.0 may be
182 represented as (1.0, +0.0) or (1.0, -0.0), and the low part of a
183 NaN is don't-care. */
184union ibm_extended_long_double
185 {
186# if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1 && __GNUC_PREREQ (7, 0)
187 __ibm128 ld;
188# else
189 long double ld;
190# endif
191 union ieee754_double d[2];
192 };
193#endif
194
195__END_DECLS
196
197#endif /* ieee754.h */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/sys/ptrace.h created+272
...@@ -0,0 +1,272 @@
1/* `ptrace' debugger support interface. Linux/PowerPC version.
2 Copyright (C) 2001-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_PTRACE_H
20#define _SYS_PTRACE_H 1
21
22#include <features.h>
23#include <bits/types.h>
24
25__BEGIN_DECLS
26
27#if defined _LINUX_PTRACE_H || defined _ASM_POWERPC_PTRACE_H
28/* Do not let Linux headers macros interfere with enum __ptrace_request. */
29# undef PTRACE_ATTACH
30# undef PTRACE_CONT
31# undef PTRACE_DETACH
32# undef PTRACE_GET_DEBUGREG
33# undef PTRACE_GETEVENTMSG
34# undef PTRACE_GETEVRREGS
35# undef PTRACE_GETFPREGS
36# undef PTRACE_GETREGS
37# undef PTRACE_GETREGS64
38# undef PTRACE_GETREGSET
39# undef PTRACE_GETSIGINFO
40# undef PTRACE_GETSIGMASK
41# undef PTRACE_GET_SYSCALL_INFO
42# undef PTRACE_GETVRREGS
43# undef PTRACE_GETVSRREGS
44# undef PTRACE_INTERRUPT
45# undef PTRACE_KILL
46# undef PTRACE_LISTEN
47# undef PTRACE_PEEKDATA
48# undef PTRACE_PEEKSIGINFO
49# undef PTRACE_PEEKTEXT
50# undef PTRACE_POKEDATA
51# undef PTRACE_POKETEXT
52# undef PTRACE_SECCOMP_GET_FILTER
53# undef PTRACE_SECCOMP_GET_METADATA
54# undef PTRACE_SEIZE
55# undef PTRACE_SET_DEBUGREG
56# undef PTRACE_SETEVRREGS
57# undef PTRACE_SETFPREGS
58# undef PTRACE_SETOPTIONS
59# undef PTRACE_SETREGS
60# undef PTRACE_SETREGS64
61# undef PTRACE_SETREGSET
62# undef PTRACE_SETSIGINFO
63# undef PTRACE_SETSIGMASK
64# undef PTRACE_SETVRREGS
65# undef PTRACE_SETVSRREGS
66# undef PTRACE_SINGLEBLOCK
67# undef PTRACE_SINGLESTEP
68# undef PTRACE_SYSCALL
69# undef PTRACE_SYSCALL_INFO_NONE
70# undef PTRACE_SYSCALL_INFO_ENTRY
71# undef PTRACE_SYSCALL_INFO_EXIT
72# undef PTRACE_SYSCALL_INFO_SECCOMP
73# undef PTRACE_SYSEMU
74# undef PTRACE_SYSEMU_SINGLESTEP
75# undef PTRACE_TRACEME
76#endif
77
78/* Type of the REQUEST argument to `ptrace.' */
79enum __ptrace_request
80{
81 /* Indicate that the process making this request should be traced.
82 All signals received by this process can be intercepted by its
83 parent, and its parent can use the other `ptrace' requests. */
84 PTRACE_TRACEME = 0,
85#define PT_TRACE_ME PTRACE_TRACEME
86
87 /* Return the word in the process's text space at address ADDR. */
88 PTRACE_PEEKTEXT = 1,
89#define PT_READ_I PTRACE_PEEKTEXT
90
91 /* Return the word in the process's data space at address ADDR. */
92 PTRACE_PEEKDATA = 2,
93#define PT_READ_D PTRACE_PEEKDATA
94
95 /* Return the word in the process's user area at offset ADDR. */
96 PTRACE_PEEKUSER = 3,
97#define PT_READ_U PTRACE_PEEKUSER
98
99 /* Write the word DATA into the process's text space at address ADDR. */
100 PTRACE_POKETEXT = 4,
101#define PT_WRITE_I PTRACE_POKETEXT
102
103 /* Write the word DATA into the process's data space at address ADDR. */
104 PTRACE_POKEDATA = 5,
105#define PT_WRITE_D PTRACE_POKEDATA
106
107 /* Write the word DATA into the process's user area at offset ADDR. */
108 PTRACE_POKEUSER = 6,
109#define PT_WRITE_U PTRACE_POKEUSER
110
111 /* Continue the process. */
112 PTRACE_CONT = 7,
113#define PT_CONTINUE PTRACE_CONT
114
115 /* Kill the process. */
116 PTRACE_KILL = 8,
117#define PT_KILL PTRACE_KILL
118
119 /* Single step the process. */
120 PTRACE_SINGLESTEP = 9,
121#define PT_STEP PTRACE_SINGLESTEP
122
123 /* Get all general purpose registers used by a process. */
124 PTRACE_GETREGS = 12,
125#define PT_GETREGS PTRACE_GETREGS
126
127 /* Set all general purpose registers used by a process. */
128 PTRACE_SETREGS = 13,
129#define PT_SETREGS PTRACE_SETREGS
130
131 /* Get all floating point registers used by a process. */
132 PTRACE_GETFPREGS = 14,
133#define PT_GETFPREGS PTRACE_GETFPREGS
134
135 /* Set all floating point registers used by a process. */
136 PTRACE_SETFPREGS = 15,
137#define PT_SETFPREGS PTRACE_SETFPREGS
138
139 /* Attach to a process that is already running. */
140 PTRACE_ATTACH = 16,
141#define PT_ATTACH PTRACE_ATTACH
142
143 /* Detach from a process attached to with PTRACE_ATTACH. */
144 PTRACE_DETACH = 17,
145#define PT_DETACH PTRACE_DETACH
146
147 /* Get all altivec registers used by a process. */
148 PTRACE_GETVRREGS = 18,
149#define PT_GETVRREGS PTRACE_GETVRREGS
150
151 /* Set all altivec registers used by a process. */
152 PTRACE_SETVRREGS = 19,
153#define PT_SETVRREGS PTRACE_SETVRREGS
154
155 /* Get all SPE registers used by a process. */
156 PTRACE_GETEVRREGS = 20,
157#define PT_GETEVRREGS PTRACE_GETEVRREGS
158
159 /* Set all SPE registers used by a process. */
160 PTRACE_SETEVRREGS = 21,
161#define PT_SETEVRREGS PTRACE_SETEVRREGS
162
163 /* Same as PTRACE_GETREGS except a 32-bit process will obtain
164 the full 64-bit registers. Implemented by 64-bit kernels only. */
165 PTRACE_GETREGS64 = 22,
166#define PT_GETREGS64 PTRACE_GETREGS64
167
168 /* Same as PTRACE_SETREGS except a 32-bit process will set
169 the full 64-bit registers. Implemented by 64-bit kernels only. */
170 PTRACE_SETREGS64 = 23,
171#define PT_SETREGS64 PTRACE_SETREGS64
172
173 /* Continue and stop at the next entry to or return from syscall. */
174 PTRACE_SYSCALL = 24,
175#define PT_SYSCALL PTRACE_SYSCALL
176
177 /* Get a debug register of a process. */
178 PTRACE_GET_DEBUGREG = 25,
179#define PT_GET_DEBUGREG PTRACE_GET_DEBUGREG
180
181 /* Set a debug register of a process. */
182 PTRACE_SET_DEBUGREG = 26,
183#define PT_SET_DEBUGREG PTRACE_SET_DEBUGREG
184
185 /* Get the first 32 VSX registers of a process. */
186 PTRACE_GETVSRREGS = 27,
187#define PT_GETVSRREGS PTRACE_GETVSRREGS
188
189 /* Set the first 32 VSX registers of a process. */
190 PTRACE_SETVSRREGS = 28,
191#define PT_SETVSRREGS PTRACE_SETVSRREGS
192
193 /* Continue and stop at the next syscall, it will not be executed. */
194 PTRACE_SYSEMU = 29,
195#define PT_SYSEMU PTRACE_SYSEMU
196
197 /* Single step the process, the next syscall will not be executed. */
198 PTRACE_SYSEMU_SINGLESTEP = 30,
199#define PT_SYSEMU_SINGLESTEP PTRACE_SYSEMU_SINGLESTEP
200
201 /* Execute process until next taken branch. */
202 PTRACE_SINGLEBLOCK = 256,
203#define PT_STEPBLOCK PTRACE_SINGLEBLOCK
204
205 /* Set ptrace filter options. */
206 PTRACE_SETOPTIONS = 0x4200,
207#define PT_SETOPTIONS PTRACE_SETOPTIONS
208
209 /* Get last ptrace message. */
210 PTRACE_GETEVENTMSG = 0x4201,
211#define PT_GETEVENTMSG PTRACE_GETEVENTMSG
212
213 /* Get siginfo for process. */
214 PTRACE_GETSIGINFO = 0x4202,
215#define PT_GETSIGINFO PTRACE_GETSIGINFO
216
217 /* Set new siginfo for process. */
218 PTRACE_SETSIGINFO = 0x4203,
219#define PT_SETSIGINFO PTRACE_SETSIGINFO
220
221 /* Get register content. */
222 PTRACE_GETREGSET = 0x4204,
223#define PTRACE_GETREGSET PTRACE_GETREGSET
224
225 /* Set register content. */
226 PTRACE_SETREGSET = 0x4205,
227#define PTRACE_SETREGSET PTRACE_SETREGSET
228
229 /* Like PTRACE_ATTACH, but do not force tracee to trap and do not affect
230 signal or group stop state. */
231 PTRACE_SEIZE = 0x4206,
232#define PTRACE_SEIZE PTRACE_SEIZE
233
234 /* Trap seized tracee. */
235 PTRACE_INTERRUPT = 0x4207,
236#define PTRACE_INTERRUPT PTRACE_INTERRUPT
237
238 /* Wait for next group event. */
239 PTRACE_LISTEN = 0x4208,
240#define PTRACE_LISTEN PTRACE_LISTEN
241
242 /* Retrieve siginfo_t structures without removing signals from a queue. */
243 PTRACE_PEEKSIGINFO = 0x4209,
244#define PTRACE_PEEKSIGINFO PTRACE_PEEKSIGINFO
245
246 /* Get the mask of blocked signals. */
247 PTRACE_GETSIGMASK = 0x420a,
248#define PTRACE_GETSIGMASK PTRACE_GETSIGMASK
249
250 /* Change the mask of blocked signals. */
251 PTRACE_SETSIGMASK = 0x420b,
252#define PTRACE_SETSIGMASK PTRACE_SETSIGMASK
253
254 /* Get seccomp BPF filters. */
255 PTRACE_SECCOMP_GET_FILTER = 0x420c,
256#define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER
257
258 /* Get seccomp BPF filter metadata. */
259 PTRACE_SECCOMP_GET_METADATA = 0x420d,
260#define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
261
262 /* Get information about system call. */
263 PTRACE_GET_SYSCALL_INFO = 0x420e
264#define PTRACE_GET_SYSCALL_INFO PTRACE_GET_SYSCALL_INFO
265};
266
267
268#include <bits/ptrace-shared.h>
269
270__END_DECLS
271
272#endif /* _SYS_PTRACE_H */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/sys/ucontext.h created+200
...@@ -0,0 +1,200 @@
1/* Copyright (C) 1998-2021 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _SYS_UCONTEXT_H
19#define _SYS_UCONTEXT_H 1
20
21#include <features.h>
22
23#include <bits/types/sigset_t.h>
24#include <bits/types/stack_t.h>
25
26
27#ifdef __USE_MISC
28# define __ctx(fld) fld
29#else
30# define __ctx(fld) __ ## fld
31#endif
32
33struct __ctx(pt_regs);
34
35#if __WORDSIZE == 32
36
37/* Number of general registers. */
38# define __NGREG 48
39# ifdef __USE_MISC
40# define NGREG __NGREG
41# endif
42
43/* Container for all general registers. */
44typedef unsigned long gregset_t[__NGREG];
45
46/* Container for floating-point registers and status */
47typedef struct _libc_fpstate
48{
49 double __ctx(fpregs)[32];
50 double __ctx(fpscr);
51 unsigned int _pad[2];
52} fpregset_t;
53
54/* Container for Altivec/VMX registers and status.
55 Needs to be aligned on a 16-byte boundary. */
56typedef struct _libc_vrstate
57{
58 unsigned int __ctx(vrregs)[32][4];
59 unsigned int __ctx(vrsave);
60 unsigned int _pad[2];
61 unsigned int __ctx(vscr);
62} vrregset_t;
63
64/* Context to describe whole processor state. */
65typedef struct
66{
67 gregset_t __ctx(gregs);
68 fpregset_t __ctx(fpregs);
69 vrregset_t __ctx(vrregs) __attribute__((__aligned__(16)));
70} mcontext_t;
71
72#else
73
74/* For 64-bit kernels with Altivec support, a machine context is exactly
75 * a sigcontext. For older kernel (without Altivec) the sigcontext matches
76 * the mcontext upto but not including the v_regs field. For kernels that
77 * don't set AT_HWCAP or return AT_HWCAP without PPC_FEATURE_HAS_ALTIVEC the
78 * v_regs field may not exist and should not be referenced. The v_regs field
79 * can be referenced safely only after verifying that PPC_FEATURE_HAS_ALTIVEC
80 * is set in AT_HWCAP. */
81
82/* Number of general registers. */
83# define __NGREG 48 /* includes r0-r31, nip, msr, lr, etc. */
84# define __NFPREG 33 /* includes fp0-fp31 &fpscr. */
85# define __NVRREG 34 /* includes v0-v31, vscr, & vrsave in
86 split vectors */
87# ifdef __USE_MISC
88# define NGREG __NGREG
89# define NFPREG __NFPREG
90# define NVRREG __NVRREG
91# endif
92
93typedef unsigned long gregset_t[__NGREG];
94typedef double fpregset_t[__NFPREG];
95
96/* Container for Altivec/VMX Vector Status and Control Register. Only 32-bits
97 but can only be copied to/from a 128-bit vector register. So we allocated
98 a whole quadword speedup save/restore. */
99typedef struct _libc_vscr
100{
101#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
102 unsigned int __pad[3];
103 unsigned int __ctx(vscr_word);
104#else
105 unsigned int __ctx(vscr_word);
106 unsigned int __pad[3];
107#endif
108} vscr_t;
109
110/* Container for Altivec/VMX registers and status.
111 Must to be aligned on a 16-byte boundary. */
112typedef struct _libc_vrstate
113{
114 unsigned int __ctx(vrregs)[32][4];
115 vscr_t __ctx(vscr);
116 unsigned int __ctx(vrsave);
117 unsigned int __pad[3];
118} vrregset_t __attribute__((__aligned__(16)));
119
120typedef struct {
121 unsigned long __glibc_reserved[4];
122 int __ctx(signal);
123 int __pad0;
124 unsigned long __ctx(handler);
125 unsigned long __ctx(oldmask);
126 struct __ctx(pt_regs) *__ctx(regs);
127 gregset_t __ctx(gp_regs);
128 fpregset_t __ctx(fp_regs);
129/*
130 * To maintain compatibility with current implementations the sigcontext is
131 * extended by appending a pointer (v_regs) to a quadword type (elf_vrreg_t)
132 * followed by an unstructured (vmx_reserve) field of 69 doublewords. This
133 * allows the array of vector registers to be quadword aligned independent of
134 * the alignment of the containing sigcontext or ucontext. It is the
135 * responsibility of the code setting the sigcontext to set this pointer to
136 * either NULL (if this processor does not support the VMX feature) or the
137 * address of the first quadword within the allocated (vmx_reserve) area.
138 *
139 * The pointer (v_regs) of vector type (elf_vrreg_t) is essentially
140 * an array of 34 quadword entries. The entries with
141 * indexes 0-31 contain the corresponding vector registers. The entry with
142 * index 32 contains the vscr as the last word (offset 12) within the
143 * quadword. This allows the vscr to be stored as either a quadword (since
144 * it must be copied via a vector register to/from storage) or as a word.
145 * The entry with index 33 contains the vrsave as the first word (offset 0)
146 * within the quadword.
147 */
148 vrregset_t *__ctx(v_regs);
149 long __ctx(vmx_reserve)[__NVRREG+__NVRREG+1];
150} mcontext_t;
151
152#endif
153
154/* Userlevel context. */
155typedef struct ucontext_t
156 {
157 unsigned long int __ctx(uc_flags);
158 struct ucontext_t *uc_link;
159 stack_t uc_stack;
160#if __WORDSIZE == 32
161 /*
162 * These fields are set up this way to maximize source and
163 * binary compatibility with code written for the old
164 * ucontext_t definition, which didn't include space for the
165 * registers.
166 *
167 * Different versions of the kernel have stored the registers on
168 * signal delivery at different offsets from the ucontext struct.
169 * Programs should thus use the uc_mcontext.uc_regs pointer to
170 * find where the registers are actually stored. The registers
171 * will be stored within the ucontext_t struct but not necessarily
172 * at a fixed address. As a side-effect, this lets us achieve
173 * 16-byte alignment for the register storage space if the
174 * Altivec registers are to be saved, without requiring 16-byte
175 * alignment on the whole ucontext_t.
176 *
177 * The uc_mcontext.regs field is included for source compatibility
178 * with programs written against the older ucontext_t definition,
179 * and its name should therefore not change. The uc_pad field
180 * is for binary compatibility with programs compiled against the
181 * old ucontext_t; it ensures that uc_mcontext.regs and uc_sigmask
182 * are at the same offset as previously.
183 */
184 int __glibc_reserved1[7];
185 union __ctx(uc_regs_ptr) {
186 struct __ctx(pt_regs) *__ctx(regs);
187 mcontext_t *__ctx(uc_regs);
188 } uc_mcontext;
189 sigset_t uc_sigmask;
190 /* last for extensibility */
191 char __ctx(uc_reg_space)[sizeof (mcontext_t) + 12];
192#else /* 64-bit */
193 sigset_t uc_sigmask;
194 mcontext_t uc_mcontext; /* last for extensibility */
195#endif
196 } ucontext_t;
197
198#undef __ctx
199
200#endif /* sys/ucontext.h */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabi/sys/user.h created+40
...@@ -0,0 +1,40 @@
1/* Copyright (C) 1998-2021 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _SYS_USER_H
19
20#define _SYS_USER_H 1
21#include <stddef.h>
22#include <features.h>
23
24#include <asm/ptrace.h>
25
26struct user {
27 struct pt_regs regs; /* entire machine state */
28 size_t u_tsize; /* text size (pages) */
29 size_t u_dsize; /* data size (pages) */
30 size_t u_ssize; /* stack size (pages) */
31 unsigned long start_code; /* text starting address */
32 unsigned long start_data; /* data starting address */
33 unsigned long start_stack; /* stack starting address */
34 long int signal; /* signal causing core dump */
35 struct regs * u_ar0; /* help gdb find registers */
36 unsigned long magic; /* identifies a core file */
37 char u_comm[32]; /* user command name */
38};
39
40#endif /* sys/user.h */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/endianness.h created+16
...@@ -0,0 +1,16 @@
1#ifndef _BITS_ENDIANNESS_H
2#define _BITS_ENDIANNESS_H 1
3
4#ifndef _BITS_ENDIAN_H
5# error "Never use <bits/endianness.h> directly; include <endian.h> instead."
6#endif
7
8/* PowerPC has selectable endianness. */
9#if defined __BIG_ENDIAN__ || defined _BIG_ENDIAN
10# define __BYTE_ORDER __BIG_ENDIAN
11#endif
12#if defined __LITTLE_ENDIAN__ || defined _LITTLE_ENDIAN
13# define __BYTE_ORDER __LITTLE_ENDIAN
14#endif
15
16#endif /* bits/endianness.h */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/environments.h created+96
...@@ -0,0 +1,96 @@
1/* Copyright (C) 1999-2021 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _UNISTD_H
19# error "Never include this file directly. Use <unistd.h> instead"
20#endif
21
22#include <bits/wordsize.h>
23
24/* This header should define the following symbols under the described
25 situations. A value `1' means that the model is always supported,
26 `-1' means it is never supported. Undefined means it cannot be
27 statically decided.
28
29 _POSIX_V7_ILP32_OFF32 32bit int, long, pointers, and off_t type
30 _POSIX_V7_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type
31
32 _POSIX_V7_LP64_OFF32 64bit long and pointers and 32bit off_t type
33 _POSIX_V7_LPBIG_OFFBIG 64bit long and pointers and large off_t type
34
35 The macros _POSIX_V6_ILP32_OFF32, _POSIX_V6_ILP32_OFFBIG,
36 _POSIX_V6_LP64_OFF32, _POSIX_V6_LPBIG_OFFBIG, _XBS5_ILP32_OFF32,
37 _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and _XBS5_LPBIG_OFFBIG were
38 used in previous versions of the Unix standard and are available
39 only for compatibility.
40*/
41
42#if __WORDSIZE == 64
43
44/* Environments with 32-bit wide pointers are optionally provided.
45 Therefore following macros aren't defined:
46 # undef _POSIX_V7_ILP32_OFF32
47 # undef _POSIX_V7_ILP32_OFFBIG
48 # undef _POSIX_V6_ILP32_OFF32
49 # undef _POSIX_V6_ILP32_OFFBIG
50 # undef _XBS5_ILP32_OFF32
51 # undef _XBS5_ILP32_OFFBIG
52 and users need to check at runtime. */
53
54/* We also have no use (for now) for an environment with bigger pointers
55 and offsets. */
56# define _POSIX_V7_LPBIG_OFFBIG -1
57# define _POSIX_V6_LPBIG_OFFBIG -1
58# define _XBS5_LPBIG_OFFBIG -1
59
60/* By default we have 64-bit wide `long int', pointers and `off_t'. */
61# define _POSIX_V7_LP64_OFF64 1
62# define _POSIX_V6_LP64_OFF64 1
63# define _XBS5_LP64_OFF64 1
64
65#else /* __WORDSIZE == 32 */
66
67/* By default we have 32-bit wide `int', `long int', pointers and `off_t'
68 and all platforms support LFS. */
69# define _POSIX_V7_ILP32_OFF32 1
70# define _POSIX_V7_ILP32_OFFBIG 1
71# define _POSIX_V6_ILP32_OFF32 1
72# define _POSIX_V6_ILP32_OFFBIG 1
73# define _XBS5_ILP32_OFF32 1
74# define _XBS5_ILP32_OFFBIG 1
75
76/* We optionally provide an environment with the above size but an 64-bit
77 side `off_t'. Therefore we don't define _POSIX_V7_ILP32_OFFBIG. */
78
79/* Environments with 64-bit wide pointers can be provided,
80 so these macros aren't defined:
81 # undef _POSIX_V7_LP64_OFF64
82 # undef _POSIX_V7_LPBIG_OFFBIG
83 # undef _POSIX_V6_LP64_OFF64
84 # undef _POSIX_V6_LPBIG_OFFBIG
85 # undef _XBS5_LP64_OFF64
86 # undef _XBS5_LPBIG_OFFBIG
87 and sysconf tests for it at runtime. */
88
89#endif /* __WORDSIZE == 32 */
90
91#define __ILP32_OFF32_CFLAGS "-m32"
92#define __ILP32_OFFBIG_CFLAGS "-m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
93#define __ILP32_OFF32_LDFLAGS "-m32"
94#define __ILP32_OFFBIG_LDFLAGS "-m32"
95#define __LP64_OFF64_CFLAGS "-m64"
96#define __LP64_OFF64_LDFLAGS "-m64"
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/fcntl.h created+62
...@@ -0,0 +1,62 @@
1/* O_*, F_*, FD_* bit values for Linux/PowerPC.
2 Copyright (C) 1995-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _FCNTL_H
20# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
21#endif
22
23#include <bits/wordsize.h>
24
25#define __O_DIRECTORY 040000 /* Must be a directory. */
26#define __O_NOFOLLOW 0100000 /* Do not follow links. */
27#define __O_DIRECT 0400000 /* Direct disk access. */
28
29#if __WORDSIZE == 64
30/* Not necessary, files are always with 64bit off_t. */
31# define __O_LARGEFILE 0
32#else
33# define __O_LARGEFILE 0200000
34#endif
35
36struct flock
37 {
38 short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
39 short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
40#ifndef __USE_FILE_OFFSET64
41 __off_t l_start; /* Offset where the lock begins. */
42 __off_t l_len; /* Size of the locked area; zero means until EOF. */
43#else
44 __off64_t l_start; /* Offset where the lock begins. */
45 __off64_t l_len; /* Size of the locked area; zero means until EOF. */
46#endif
47 __pid_t l_pid; /* Process holding the lock. */
48 };
49
50#ifdef __USE_LARGEFILE64
51struct flock64
52 {
53 short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
54 short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
55 __off64_t l_start; /* Offset where the lock begins. */
56 __off64_t l_len; /* Size of the locked area; zero means until EOF. */
57 __pid_t l_pid; /* Process holding the lock. */
58 };
59#endif
60
61/* Include generic Linux declarations. */
62#include <bits/fcntl-linux.h>
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/fenv.h created+180
...@@ -0,0 +1,180 @@
1/* Copyright (C) 1997-2021 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _FENV_H
19# error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
20#endif
21
22
23/* Define bits representing the exception. We use the bit positions of
24 the appropriate bits in the FPSCR... */
25enum
26 {
27 FE_INEXACT =
28#define FE_INEXACT (1 << (31 - 6))
29 FE_INEXACT,
30 FE_DIVBYZERO =
31#define FE_DIVBYZERO (1 << (31 - 5))
32 FE_DIVBYZERO,
33 FE_UNDERFLOW =
34#define FE_UNDERFLOW (1 << (31 - 4))
35 FE_UNDERFLOW,
36 FE_OVERFLOW =
37#define FE_OVERFLOW (1 << (31 - 3))
38 FE_OVERFLOW,
39
40 /* ... except for FE_INVALID, for which we use bit 31. FE_INVALID
41 actually corresponds to bits 7 through 12 and 21 through 23
42 in the FPSCR, but we can't use that because the current draft
43 says that it must be a power of 2. Instead we use bit 2 which
44 is the summary bit for all the FE_INVALID exceptions, which
45 kind of makes sense. */
46 FE_INVALID =
47#define FE_INVALID (1 << (31 - 2))
48 FE_INVALID,
49
50#ifdef __USE_GNU
51 /* Breakdown of the FE_INVALID bits. Setting FE_INVALID on an
52 input to a routine is equivalent to setting all of these bits;
53 FE_INVALID will be set on output from a routine iff one of
54 these bits is set. Note, though, that you can't disable or
55 enable these exceptions individually. */
56
57 /* Operation with a sNaN. */
58 FE_INVALID_SNAN =
59# define FE_INVALID_SNAN (1 << (31 - 7))
60 FE_INVALID_SNAN,
61
62 /* Inf - Inf */
63 FE_INVALID_ISI =
64# define FE_INVALID_ISI (1 << (31 - 8))
65 FE_INVALID_ISI,
66
67 /* Inf / Inf */
68 FE_INVALID_IDI =
69# define FE_INVALID_IDI (1 << (31 - 9))
70 FE_INVALID_IDI,
71
72 /* 0 / 0 */
73 FE_INVALID_ZDZ =
74# define FE_INVALID_ZDZ (1 << (31 - 10))
75 FE_INVALID_ZDZ,
76
77 /* Inf * 0 */
78 FE_INVALID_IMZ =
79# define FE_INVALID_IMZ (1 << (31 - 11))
80 FE_INVALID_IMZ,
81
82 /* Comparison with a NaN. */
83 FE_INVALID_COMPARE =
84# define FE_INVALID_COMPARE (1 << (31 - 12))
85 FE_INVALID_COMPARE,
86
87 /* Invalid operation flag for software (not set by hardware). */
88 /* Note that some chips don't have this implemented, presumably
89 because no-one expected anyone to write software for them %-). */
90 FE_INVALID_SOFTWARE =
91# define FE_INVALID_SOFTWARE (1 << (31 - 21))
92 FE_INVALID_SOFTWARE,
93
94 /* Square root of negative number (including -Inf). */
95 /* Note that some chips don't have this implemented. */
96 FE_INVALID_SQRT =
97# define FE_INVALID_SQRT (1 << (31 - 22))
98 FE_INVALID_SQRT,
99
100 /* Conversion-to-integer of a NaN or a number too large or too small. */
101 FE_INVALID_INTEGER_CONVERSION =
102# define FE_INVALID_INTEGER_CONVERSION (1 << (31 - 23))
103 FE_INVALID_INTEGER_CONVERSION
104
105# define FE_ALL_INVALID \
106 (FE_INVALID_SNAN | FE_INVALID_ISI | FE_INVALID_IDI | FE_INVALID_ZDZ \
107 | FE_INVALID_IMZ | FE_INVALID_COMPARE | FE_INVALID_SOFTWARE \
108 | FE_INVALID_SQRT | FE_INVALID_INTEGER_CONVERSION)
109#endif
110 };
111
112#define FE_ALL_EXCEPT \
113 (FE_INEXACT | FE_DIVBYZERO | FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID)
114
115/* PowerPC chips support all of the four defined rounding modes. We
116 use the bit pattern in the FPSCR as the values for the
117 appropriate macros. */
118enum
119 {
120 FE_TONEAREST =
121#define FE_TONEAREST 0
122 FE_TONEAREST,
123 FE_TOWARDZERO =
124#define FE_TOWARDZERO 1
125 FE_TOWARDZERO,
126 FE_UPWARD =
127#define FE_UPWARD 2
128 FE_UPWARD,
129 FE_DOWNWARD =
130#define FE_DOWNWARD 3
131 FE_DOWNWARD
132 };
133
134/* Type representing exception flags. */
135typedef unsigned int fexcept_t;
136
137/* Type representing floating-point environment. We leave it as 'double'
138 for efficiency reasons (rather than writing it to a 32-bit integer). */
139typedef double fenv_t;
140
141/* If the default argument is used we use this value. */
142extern const fenv_t __fe_dfl_env;
143#define FE_DFL_ENV (&__fe_dfl_env)
144
145#ifdef __USE_GNU
146/* Floating-point environment where all exceptions are enabled. Note that
147 this is not sufficient to give you SIGFPE. */
148extern const fenv_t __fe_enabled_env;
149# define FE_ENABLED_ENV (&__fe_enabled_env)
150
151/* Floating-point environment with (processor-dependent) non-IEEE floating
152 point. */
153extern const fenv_t __fe_nonieee_env;
154# define FE_NONIEEE_ENV (&__fe_nonieee_env)
155
156/* Floating-point environment with all exceptions enabled. Note that
157 just evaluating this value does not change the processor exception mode.
158 Passing this mask to fesetenv will result in a prctl syscall to change
159 the MSR FE0/FE1 bits to "Precise Mode". On some processors this will
160 result in slower floating point execution. This will last until an
161 fenv or exception mask is installed that disables all FP exceptions. */
162# define FE_NOMASK_ENV FE_ENABLED_ENV
163
164/* Floating-point environment with all exceptions disabled. Note that
165 just evaluating this value does not change the processor exception mode.
166 Passing this mask to fesetenv will result in a prctl syscall to change
167 the MSR FE0/FE1 bits to "Ignore Exceptions Mode". On most processors
168 this allows the fastest possible floating point execution.*/
169# define FE_MASK_ENV FE_DFL_ENV
170
171#endif
172
173#if __GLIBC_USE (IEC_60559_BFP_EXT_C2X)
174/* Type representing floating-point control modes. */
175typedef double femode_t;
176
177/* Default floating-point control modes. */
178extern const femode_t __fe_dfl_mode;
179# define FE_DFL_MODE (&__fe_dfl_mode)
180#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/floatn.h created+122
...@@ -0,0 +1,122 @@
1/* Macros to control TS 18661-3 glibc features on powerpc.
2 Copyright (C) 2017-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_FLOATN_H
20#define _BITS_FLOATN_H
21
22#include <features.h>
23#include <bits/long-double.h>
24
25/* Defined to 1 if the current compiler invocation provides a
26 floating-point type with the IEEE 754 binary128 format, and this glibc
27 includes corresponding *f128 interfaces for it. */
28#if defined _ARCH_PWR8 && defined __LITTLE_ENDIAN__ && (_CALL_ELF == 2) \
29 && defined __FLOAT128__ && !defined __NO_LONG_DOUBLE_MATH
30# define __HAVE_FLOAT128 1
31#else
32# define __HAVE_FLOAT128 0
33#endif
34
35/* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
36 from the default float, double and long double types in this glibc, i.e.
37 calls to the binary128 functions go to *f128 symbols instead of *l. */
38#if __HAVE_FLOAT128
39# define __HAVE_DISTINCT_FLOAT128 1
40#else
41# define __HAVE_DISTINCT_FLOAT128 0
42#endif
43
44/* Defined to 1 if the current compiler invocation provides a
45 floating-point type with the right format for _Float64x, and this
46 glibc includes corresponding *f64x interfaces for it. */
47#define __HAVE_FLOAT64X __HAVE_FLOAT128
48
49/* Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format
50 of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has
51 the format of _Float128, which must be different from that of long
52 double. */
53#define __HAVE_FLOAT64X_LONG_DOUBLE 0
54
55#ifndef __ASSEMBLER__
56
57/* Defined to concatenate the literal suffix to be used with _Float128
58 types, if __HAVE_FLOAT128 is 1. */
59# if __HAVE_FLOAT128
60# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
61/* The literal suffix (f128) exist for powerpc only since GCC 7.0. */
62# if __LDBL_MANT_DIG__ == 113
63# define __f128(x) x##l
64# else
65# define __f128(x) x##q
66# endif
67# else
68# define __f128(x) x##f128
69# endif
70# endif
71
72/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */
73# if __HAVE_FLOAT128
74# if __LDBL_MANT_DIG__ == 113 && defined __cplusplus
75typedef long double _Float128;
76# define __CFLOAT128 _Complex long double
77# elif !__GNUC_PREREQ (7, 0) || defined __cplusplus
78/* The type _Float128 exist for powerpc only since GCC 7.0. */
79typedef __float128 _Float128;
80/* Add a typedef for older GCC and C++ compilers which don't natively support
81 _Complex _Float128. */
82typedef _Complex float __cfloat128 __attribute__ ((__mode__ (__KC__)));
83# define __CFLOAT128 __cfloat128
84# else
85# define __CFLOAT128 _Complex _Float128
86# endif
87# endif
88
89/* The remaining of this file provides support for older compilers. */
90# if __HAVE_FLOAT128
91/* Builtin __builtin_huge_valf128 doesn't exist before GCC 7.0. */
92# if !__GNUC_PREREQ (7, 0)
93# define __builtin_huge_valf128() ((_Float128) __builtin_huge_val ())
94# endif
95
96/* The following builtins (suffixed with 'q') are available in GCC >= 6.2,
97 which is the minimum version required for float128 support on powerpc64le.
98 Since GCC 7.0 the builtins suffixed with f128 are also available, then
99 there is no need to redefined them. */
100# if !__GNUC_PREREQ (7, 0)
101# define __builtin_copysignf128 __builtin_copysignq
102# define __builtin_fabsf128 __builtin_fabsq
103# define __builtin_inff128 __builtin_infq
104# define __builtin_nanf128 __builtin_nanq
105# define __builtin_nansf128 __builtin_nansq
106# endif
107
108/* In math/math.h, __MATH_TG will expand signbit to __builtin_signbit*,
109 e.g.: __builtin_signbitf128, before GCC 6. However, there has never
110 been a __builtin_signbitf128 in GCC and the type-generic builtin is
111 only available since GCC 6. */
112# if !__GNUC_PREREQ (6, 0)
113# define __builtin_signbitf128 __signbitf128
114# endif
115
116# endif
117
118#endif /* !__ASSEMBLER__. */
119
120#include <bits/floatn-common.h>
121
122#endif /* _BITS_FLOATN_H */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/fp-fast.h created+39
...@@ -0,0 +1,39 @@
1/* Define FP_FAST_* macros. PowerPC version.
2 Copyright (C) 2016-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _MATH_H
20# error "Never use <bits/fp-fast.h> directly; include <math.h> instead."
21#endif
22
23#ifdef __USE_ISOC99
24
25/* The GCC 4.6 compiler will define __FP_FAST_FMA{,F,L} if the fma{,f,l}
26 builtins are supported. */
27# if (!defined _SOFT_FLOAT && !defined __NO_FPRS__) || defined __FP_FAST_FMA
28# define FP_FAST_FMA 1
29# endif
30
31# if (!defined _SOFT_FLOAT && !defined __NO_FPRS__) || defined __FP_FAST_FMAF
32# define FP_FAST_FMAF 1
33# endif
34
35# ifdef __FP_FAST_FMAL
36# define FP_FAST_FMAL 1
37# endif
38
39#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/hwcap.h created+78
...@@ -0,0 +1,78 @@
1/* Defines for bits in AT_HWCAP and AT_HWCAP2.
2 Copyright (C) 2012-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#if !defined(_SYS_AUXV_H) && !defined(_SYSDEPS_SYSDEP_H)
20# error "Never include <bits/hwcap.h> directly; use <sys/auxv.h> instead."
21#endif
22
23/* The bit numbers must match those in the kernel's asm/cputable.h. */
24
25/* Feature definitions in AT_HWCAP. */
26#define PPC_FEATURE_32 0x80000000 /* 32-bit mode. */
27#define PPC_FEATURE_64 0x40000000 /* 64-bit mode. */
28#define PPC_FEATURE_601_INSTR 0x20000000 /* 601 chip, Old POWER ISA. */
29#define PPC_FEATURE_HAS_ALTIVEC 0x10000000 /* SIMD/Vector Unit. */
30#define PPC_FEATURE_HAS_FPU 0x08000000 /* Floating Point Unit. */
31#define PPC_FEATURE_HAS_MMU 0x04000000 /* Memory Management Unit. */
32#define PPC_FEATURE_HAS_4xxMAC 0x02000000 /* 4xx Multiply Accumulator. */
33#define PPC_FEATURE_UNIFIED_CACHE 0x01000000 /* Unified I/D cache. */
34#define PPC_FEATURE_HAS_SPE 0x00800000 /* Signal Processing ext. */
35#define PPC_FEATURE_HAS_EFP_SINGLE 0x00400000 /* SPE Float. */
36#define PPC_FEATURE_HAS_EFP_DOUBLE 0x00200000 /* SPE Double. */
37#define PPC_FEATURE_NO_TB 0x00100000 /* 601/403gx have no timebase */
38#define PPC_FEATURE_POWER4 0x00080000 /* POWER4 ISA 2.00 */
39#define PPC_FEATURE_POWER5 0x00040000 /* POWER5 ISA 2.02 */
40#define PPC_FEATURE_POWER5_PLUS 0x00020000 /* POWER5+ ISA 2.03 */
41#define PPC_FEATURE_CELL_BE 0x00010000 /* CELL Broadband Engine */
42#define PPC_FEATURE_BOOKE 0x00008000 /* ISA Category Embedded */
43#define PPC_FEATURE_SMT 0x00004000 /* Simultaneous
44 Multi-Threading */
45#define PPC_FEATURE_ICACHE_SNOOP 0x00002000
46#define PPC_FEATURE_ARCH_2_05 0x00001000 /* ISA 2.05 */
47#define PPC_FEATURE_PA6T 0x00000800 /* PA Semi 6T Core */
48#define PPC_FEATURE_HAS_DFP 0x00000400 /* Decimal FP Unit */
49#define PPC_FEATURE_POWER6_EXT 0x00000200 /* P6 + mffgpr/mftgpr */
50#define PPC_FEATURE_ARCH_2_06 0x00000100 /* ISA 2.06 */
51#define PPC_FEATURE_HAS_VSX 0x00000080 /* P7 Vector Extension. */
52#define PPC_FEATURE_PSERIES_PERFMON_COMPAT 0x00000040
53/* Reserved by the kernel. 0x00000004 Do not use. */
54#define PPC_FEATURE_TRUE_LE 0x00000002
55#define PPC_FEATURE_PPC_LE 0x00000001
56
57/* Feature definitions in AT_HWCAP2. */
58#define PPC_FEATURE2_ARCH_2_07 0x80000000 /* ISA 2.07 */
59#define PPC_FEATURE2_HAS_HTM 0x40000000 /* Hardware Transactional
60 Memory */
61#define PPC_FEATURE2_HAS_DSCR 0x20000000 /* Data Stream Control
62 Register */
63#define PPC_FEATURE2_HAS_EBB 0x10000000 /* Event Base Branching */
64#define PPC_FEATURE2_HAS_ISEL 0x08000000 /* Integer Select */
65#define PPC_FEATURE2_HAS_TAR 0x04000000 /* Target Address Register */
66#define PPC_FEATURE2_HAS_VEC_CRYPTO 0x02000000 /* Target supports vector
67 instruction. */
68#define PPC_FEATURE2_HTM_NOSC 0x01000000 /* Kernel aborts transaction
69 when a syscall is made. */
70#define PPC_FEATURE2_ARCH_3_00 0x00800000 /* ISA 3.0 */
71#define PPC_FEATURE2_HAS_IEEE128 0x00400000 /* VSX IEEE Binary Float
72 128-bit */
73#define PPC_FEATURE2_DARN 0x00200000 /* darn instruction. */
74#define PPC_FEATURE2_SCV 0x00100000 /* scv syscall. */
75#define PPC_FEATURE2_HTM_NO_SUSPEND 0x00080000 /* TM without suspended
76 state. */
77#define PPC_FEATURE2_ARCH_3_1 0x00040000 /* ISA 3.1. */
78#define PPC_FEATURE2_MMA 0x00020000 /* Matrix-Multiply Assist. */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/ioctl-types.h created+77
...@@ -0,0 +1,77 @@
1/* Structure types for pre-termios terminal ioctls. Linux/powerpc version.
2 Copyright (C) 2014-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_IOCTL_H
20# error "Never use <bits/ioctl-types.h> directly; include <sys/ioctl.h> instead."
21#endif
22
23/* Get definition of constants for use with `ioctl'. */
24#include <asm/ioctls.h>
25
26
27struct winsize
28 {
29 unsigned short int ws_row;
30 unsigned short int ws_col;
31 unsigned short int ws_xpixel;
32 unsigned short int ws_ypixel;
33 };
34
35#define NCC 10
36struct termio
37 {
38 unsigned short int c_iflag; /* input mode flags */
39 unsigned short int c_oflag; /* output mode flags */
40 unsigned short int c_cflag; /* control mode flags */
41 unsigned short int c_lflag; /* local mode flags */
42 unsigned char c_line; /* line discipline */
43 unsigned char c_cc[NCC]; /* control characters */
44};
45
46/* modem lines */
47#define TIOCM_LE 0x001
48#define TIOCM_DTR 0x002
49#define TIOCM_RTS 0x004
50#define TIOCM_ST 0x008
51#define TIOCM_SR 0x010
52#define TIOCM_CTS 0x020
53#define TIOCM_CAR 0x040
54#define TIOCM_RNG 0x080
55#define TIOCM_DSR 0x100
56#define TIOCM_CD TIOCM_CAR
57#define TIOCM_RI TIOCM_RNG
58
59/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
60
61/* line disciplines */
62#define N_TTY 0
63#define N_SLIP 1
64#define N_MOUSE 2
65#define N_PPP 3
66#define N_STRIP 4
67#define N_AX25 5
68#define N_X25 6 /* X.25 async */
69#define N_6PACK 7
70#define N_MASC 8 /* Mobitex module */
71#define N_R3964 9 /* Simatic R3964 module */
72#define N_PROFIBUS_FDL 10 /* Profibus */
73#define N_IRDA 11 /* Linux IR */
74#define N_SMSBLOCK 12 /* SMS block mode */
75#define N_HDLC 13 /* synchronous HDLC */
76#define N_SYNC_PPP 14 /* synchronous PPP */
77#define N_HCI 15 /* Bluetooth HCI UART */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/ipc-perm.h created+36
...@@ -0,0 +1,36 @@
1/* struct ipc_perm definition. Linux/powerpc version.
2 Copyright (C) 1995-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_IPC_H
20# error "Never use <bits/ipc-perm.h> directly; include <sys/ipc.h> instead."
21#endif
22
23/* Data structure used to pass permission information to IPC operations. */
24struct ipc_perm
25 {
26 __key_t __key; /* Key. */
27 __uid_t uid; /* Owner's user ID. */
28 __gid_t gid; /* Owner's group ID. */
29 __uid_t cuid; /* Creator's user ID. */
30 __gid_t cgid; /* Creator's group ID. */
31 __mode_t mode; /* Read/write permission. */
32 __uint32_t __seq; /* Sequence number. */
33 __uint32_t __pad1;
34 __uint64_t __glibc_reserved1;
35 __uint64_t __glibc_reserved2;
36 };
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/iscanonical.h created+58
...@@ -0,0 +1,58 @@
1/* Define iscanonical macro. ldbl-128ibm version.
2 Copyright (C) 2016-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _MATH_H
20# error "Never use <bits/iscanonical.h> directly; include <math.h> instead."
21#endif
22
23#if defined (__NO_LONG_DOUBLE_MATH) || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
24# define iscanonical(x) ((void) (__typeof (x)) (x), 1)
25#else
26extern int __iscanonicall (long double __x)
27 __THROW __attribute__ ((__const__));
28# define __iscanonicalf(x) ((void) (__typeof (x)) (x), 1)
29# define __iscanonical(x) ((void) (__typeof (x)) (x), 1)
30# if __HAVE_DISTINCT_FLOAT128
31# define __iscanonicalf128(x) ((void) (__typeof (x)) (x), 1)
32# endif
33
34/* Return nonzero value if X is canonical. In IEEE interchange binary
35 formats, all values are canonical, but the argument must still be
36 converted to its semantic type for any exceptions arising from the
37 conversion, before being discarded; in IBM long double, there are
38 encodings that are not consistently handled as corresponding to any
39 particular value of the type, and we return 0 for those. */
40# ifndef __cplusplus
41# define iscanonical(x) __MATH_TG ((x), __iscanonical, (x))
42# else
43/* In C++ mode, __MATH_TG cannot be used, because it relies on
44 __builtin_types_compatible_p, which is a C-only builtin. On the
45 other hand, overloading provides the means to distinguish between
46 the floating-point types. The overloading resolution will match
47 the correct parameter (regardless of type qualifiers (i.e.: const
48 and volatile)). */
49extern "C++" {
50inline int iscanonical (float __val) { return __iscanonicalf (__val); }
51inline int iscanonical (double __val) { return __iscanonical (__val); }
52inline int iscanonical (long double __val) { return __iscanonicall (__val); }
53# if __HAVE_DISTINCT_FLOAT128
54inline int iscanonical (_Float128 __val) { return __iscanonicalf128 (__val); }
55# endif
56}
57# endif /* __cplusplus */
58#endif /* __NO_LONG_DOUBLE_MATH */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/link.h created+156
...@@ -0,0 +1,156 @@
1/* Machine-specific declarations for dynamic linker interface. PowerPC version
2 Copyright (C) 2004-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _LINK_H
20# error "Never include <bits/link.h> directly; use <link.h> instead."
21#endif
22
23
24#if __ELF_NATIVE_CLASS == 32
25
26/* Registers for entry into PLT on PPC32. */
27typedef struct La_ppc32_regs
28{
29 uint32_t lr_reg[8];
30 double lr_fp[8];
31 uint32_t lr_vreg[12][4];
32 uint32_t lr_r1;
33 uint32_t lr_lr;
34} La_ppc32_regs;
35
36/* Return values for calls from PLT on PPC32. */
37typedef struct La_ppc32_retval
38{
39 uint32_t lrv_r3;
40 uint32_t lrv_r4;
41 double lrv_fp[8];
42 uint32_t lrv_v2[4];
43} La_ppc32_retval;
44
45
46__BEGIN_DECLS
47
48extern Elf32_Addr la_ppc32_gnu_pltenter (Elf32_Sym *__sym,
49 unsigned int __ndx,
50 uintptr_t *__refcook,
51 uintptr_t *__defcook,
52 La_ppc32_regs *__regs,
53 unsigned int *__flags,
54 const char *__symname,
55 long int *__framesizep);
56extern unsigned int la_ppc32_gnu_pltexit (Elf32_Sym *__sym,
57 unsigned int __ndx,
58 uintptr_t *__refcook,
59 uintptr_t *__defcook,
60 const La_ppc32_regs *__inregs,
61 La_ppc32_retval *__outregs,
62 const char *__symname);
63
64__END_DECLS
65
66#elif __ELF_NATIVE_CLASS == 64
67# if _CALL_ELF != 2
68
69/* Registers for entry into PLT on PPC64. */
70typedef struct La_ppc64_regs
71{
72 uint64_t lr_reg[8];
73 double lr_fp[13];
74 uint32_t __padding;
75 uint32_t lr_vrsave;
76 uint32_t lr_vreg[12][4];
77 uint64_t lr_r1;
78 uint64_t lr_lr;
79} La_ppc64_regs;
80
81/* Return values for calls from PLT on PPC64. */
82typedef struct La_ppc64_retval
83{
84 uint64_t lrv_r3;
85 uint64_t lrv_r4;
86 double lrv_fp[4]; /* f1-f4, float - complex long double. */
87 uint32_t lrv_v2[4]; /* v2. */
88} La_ppc64_retval;
89
90
91__BEGIN_DECLS
92
93extern Elf64_Addr la_ppc64_gnu_pltenter (Elf64_Sym *__sym,
94 unsigned int __ndx,
95 uintptr_t *__refcook,
96 uintptr_t *__defcook,
97 La_ppc64_regs *__regs,
98 unsigned int *__flags,
99 const char *__symname,
100 long int *__framesizep);
101extern unsigned int la_ppc64_gnu_pltexit (Elf64_Sym *__sym,
102 unsigned int __ndx,
103 uintptr_t *__refcook,
104 uintptr_t *__defcook,
105 const La_ppc64_regs *__inregs,
106 La_ppc64_retval *__outregs,
107 const char *__symname);
108
109__END_DECLS
110
111# else
112
113/* Registers for entry into PLT on PPC64 in the ELFv2 ABI. */
114typedef struct La_ppc64v2_regs
115{
116 uint64_t lr_reg[8];
117 double lr_fp[13];
118 uint32_t __padding;
119 uint32_t lr_vrsave;
120 uint32_t lr_vreg[12][4] __attribute__ ((aligned (16)));
121 uint64_t lr_r1;
122 uint64_t lr_lr;
123} La_ppc64v2_regs;
124
125/* Return values for calls from PLT on PPC64 in the ELFv2 ABI. */
126typedef struct La_ppc64v2_retval
127{
128 uint64_t lrv_r3;
129 uint64_t lrv_r4;
130 double lrv_fp[10];
131 uint32_t lrv_vreg[8][4] __attribute__ ((aligned (16)));
132} La_ppc64v2_retval;
133
134
135__BEGIN_DECLS
136
137extern Elf64_Addr la_ppc64v2_gnu_pltenter (Elf64_Sym *__sym,
138 unsigned int __ndx,
139 uintptr_t *__refcook,
140 uintptr_t *__defcook,
141 La_ppc64v2_regs *__regs,
142 unsigned int *__flags,
143 const char *__symname,
144 long int *__framesizep);
145extern unsigned int la_ppc64v2_gnu_pltexit (Elf64_Sym *__sym,
146 unsigned int __ndx,
147 uintptr_t *__refcook,
148 uintptr_t *__defcook,
149 const La_ppc64v2_regs *__inregs,
150 La_ppc64v2_retval *__outregs,
151 const char *__symname);
152
153__END_DECLS
154
155# endif
156#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/long-double.h created+25
...@@ -0,0 +1,25 @@
1/* Properties of long double type. ldbl-opt version.
2 Copyright (C) 2016-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef __NO_LONG_DOUBLE_MATH
20# define __LONG_DOUBLE_MATH_OPTIONAL 1
21# ifndef __LONG_DOUBLE_128__
22# define __NO_LONG_DOUBLE_MATH 1
23# endif
24#endif
25#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/mman.h created+53
...@@ -0,0 +1,53 @@
1/* Definitions for POSIX memory map interface. Linux/PowerPC version.
2 Copyright (C) 1997-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MMAN_H
20# error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
21#endif
22
23/* The following definitions basically come from the kernel headers.
24 But the kernel header is not namespace clean. */
25
26#define PROT_SAO 0x10 /* Strong Access Ordering. */
27
28/* These are Linux-specific. */
29#ifdef __USE_MISC
30# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
31# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
32# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
33# define MAP_LOCKED 0x00080 /* Lock the mapping. */
34# define MAP_NORESERVE 0x00040 /* Don't check for reservations. */
35# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
36# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
37# define MAP_STACK 0x20000 /* Allocation is for a stack. */
38# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */
39# define MAP_SYNC 0x80000 /* Perform synchronous page
40 faults for the mapping. */
41# define MAP_FIXED_NOREPLACE 0x100000 /* MAP_FIXED but do not unmap
42 underlying mapping. */
43#endif
44
45/* Flags for `mlockall'. */
46#define MCL_CURRENT 0x2000 /* Lock all currently mapped pages. */
47#define MCL_FUTURE 0x4000 /* Lock all additions to address
48 space. */
49#define MCL_ONFAULT 0x8000 /* Lock all pages that are
50 faulted in. */
51
52/* Include generic Linux declarations. */
53#include <bits/mman-linux.h>
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/procfs.h created+49
...@@ -0,0 +1,49 @@
1/* Types for registers for sys/procfs.h. PowerPC version.
2 Copyright (C) 1996-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_PROCFS_H
20# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> instead."
21#endif
22
23#include <signal.h>
24#include <sys/ucontext.h>
25
26/* These definitions are normally provided by ucontext.h via
27 asm/sigcontext.h, asm/ptrace.h, and asm/elf.h. Otherwise we define
28 them here. */
29#if !defined __PPC64_ELF_H && !defined _ASM_POWERPC_ELF_H
30#define ELF_NGREG 48 /* includes nip, msr, lr, etc. */
31#define ELF_NFPREG 33 /* includes fpscr */
32#if __WORDSIZE == 32
33# define ELF_NVRREG 33 /* includes vscr */
34#else
35# define ELF_NVRREG 34 /* includes vscr */
36#endif
37
38typedef unsigned long elf_greg_t;
39typedef elf_greg_t elf_gregset_t[ELF_NGREG];
40
41typedef double elf_fpreg_t;
42typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
43
44/* Altivec registers */
45typedef struct {
46 unsigned int u[4];
47} __attribute__ ((__aligned__ (16))) elf_vrreg_t;
48typedef elf_vrreg_t elf_vrregset_t[ELF_NVRREG];
49#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/pthread_stack_min.h created+21
...@@ -0,0 +1,21 @@
1/* Definition of PTHREAD_STACK_MIN. Linux/PPC version.
2 Copyright (C) 2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public License as
7 published by the Free Software Foundation; either version 2.1 of the
8 License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; see the file COPYING.LIB. If
17 not, see <https://www.gnu.org/licenses/>. */
18
19/* Minimum size for a thread. At least two pages for systems with 64k
20 pages. */
21#define PTHREAD_STACK_MIN 131072
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/setjmp.h created+50
...@@ -0,0 +1,50 @@
1/* Copyright (C) 1997-2021 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18/* Define the machine-dependent type `jmp_buf'. PowerPC version. */
19#ifndef _BITS_SETJMP_H
20#define _BITS_SETJMP_H 1
21
22#if !defined _SETJMP_H && !defined _PTHREAD_H
23# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
24#endif
25
26/* The previous bits/setjmp.h had __jmp_buf defined as a structure.
27 We use an array of 'long int' instead, to make writing the
28 assembler easier. Naturally, user code should not depend on
29 either representation. */
30
31#include <bits/wordsize.h>
32
33/* The current powerpc 32-bit Altivec ABI specifies for SVR4 ABI and EABI
34 the vrsave must be at byte 248 & v20 at byte 256. So we must pad this
35 correctly on 32 bit. It also insists that vecregs are only gauranteed
36 4 byte alignment so we need to use vperm in the setjmp/longjmp routines.
37 We have to version the code because members like int __mask_was_saved
38 in the jmp_buf will move as jmp_buf is now larger than 248 bytes. We
39 cannot keep the altivec jmp_buf backward compatible with the jmp_buf. */
40#ifndef _ASM
41# if __WORDSIZE == 64
42typedef long int __jmp_buf[64] __attribute__ ((__aligned__ (16)));
43# else
44/* The alignment is not essential, i.e.the buffer can be copied to a 4 byte
45 aligned buffer as per the ABI it is just added for performance reasons. */
46typedef long int __jmp_buf[64 + (12 * 4)] __attribute__ ((__aligned__ (16)));
47# endif
48#endif
49
50#endif /* bits/setjmp.h */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/sigstack.h created+32
...@@ -0,0 +1,32 @@
1/* sigstack, sigaltstack definitions.
2 Copyright (C) 1998-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_SIGSTACK_H
20#define _BITS_SIGSTACK_H 1
21
22#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
23# error "Never include this file directly. Use <signal.h> instead"
24#endif
25
26/* Minimum stack size for a signal handler. */
27#define MINSIGSTKSZ 4096
28
29/* System default stack size. */
30#define SIGSTKSZ 16384
31
32#endif /* bits/sigstack.h */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/socket-constants.h created+70
...@@ -0,0 +1,70 @@
1/* Socket constants which vary among Linux architectures. Version for POWER.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SOCKET_H
20# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead."
21#endif
22
23#define SOL_SOCKET 1
24#define SO_ACCEPTCONN 30
25#define SO_BROADCAST 6
26#define SO_DONTROUTE 5
27#define SO_ERROR 4
28#define SO_KEEPALIVE 9
29#define SO_LINGER 13
30#define SO_OOBINLINE 10
31#define SO_RCVBUF 8
32#define SO_RCVLOWAT 16
33#define SO_REUSEADDR 2
34#define SO_SNDBUF 7
35#define SO_SNDLOWAT 17
36#define SO_TYPE 3
37
38#if __TIMESIZE == 64
39# define SO_RCVTIMEO 18
40# define SO_SNDTIMEO 19
41# define SO_TIMESTAMP 29
42# define SO_TIMESTAMPNS 35
43# define SO_TIMESTAMPING 37
44#else
45# define SO_RCVTIMEO_OLD 18
46# define SO_SNDTIMEO_OLD 19
47# define SO_RCVTIMEO_NEW 66
48# define SO_SNDTIMEO_NEW 67
49
50# define SO_TIMESTAMP_OLD 29
51# define SO_TIMESTAMPNS_OLD 35
52# define SO_TIMESTAMPING_OLD 37
53# define SO_TIMESTAMP_NEW 63
54# define SO_TIMESTAMPNS_NEW 64
55# define SO_TIMESTAMPING_NEW 65
56
57# ifdef __USE_TIME_BITS64
58# define SO_RCVTIMEO SO_RCVTIMEO_NEW
59# define SO_SNDTIMEO SO_SNDTIMEO_NEW
60# define SO_TIMESTAMP SO_TIMESTAMP_NEW
61# define SO_TIMESTAMPNS SO_TIMESTAMPNS_NEW
62# define SO_TIMESTAMPING SO_TIMESTAMPING_NEW
63# else
64# define SO_RCVTIMEO SO_RCVTIMEO_OLD
65# define SO_SNDTIMEO SO_SNDTIMEO_OLD
66# define SO_TIMESTAMP SO_TIMESTAMP_OLD
67# define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD
68# define SO_TIMESTAMPING SO_TIMESTAMPING_OLD
69# endif
70#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/struct_mutex.h created+63
...@@ -0,0 +1,63 @@
1/* PowerPC internal mutex struct definitions.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <http://www.gnu.org/licenses/>. */
18
19#ifndef _THREAD_MUTEX_INTERNAL_H
20#define _THREAD_MUTEX_INTERNAL_H 1
21
22struct __pthread_mutex_s
23{
24 int __lock;
25 unsigned int __count;
26 int __owner;
27#if __WORDSIZE == 64
28 unsigned int __nusers;
29#endif
30 /* KIND must stay at this position in the structure to maintain
31 binary compatibility with static initializers. */
32 int __kind;
33#if __WORDSIZE == 64
34 short __spins;
35 short __elision;
36 __pthread_list_t __list;
37# define __PTHREAD_MUTEX_HAVE_PREV 1
38#else
39 unsigned int __nusers;
40 __extension__ union
41 {
42 struct
43 {
44 short __espins;
45 short __elision;
46# define __spins __elision_data.__espins
47# define __elision __elision_data.__elision
48 } __elision_data;
49 __pthread_slist_t __list;
50 };
51# define __PTHREAD_MUTEX_HAVE_PREV 0
52#endif
53};
54
55#if __WORDSIZE == 64
56# define __PTHREAD_MUTEX_INITIALIZER(__kind) \
57 0, 0, 0, 0, __kind, 0, 0, { 0, 0 }
58#else
59# define __PTHREAD_MUTEX_INITIALIZER(__kind) \
60 0, 0, 0, __kind, 0, { { 0, 0 } }
61#endif
62
63#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/struct_rwlock.h created+61
...@@ -0,0 +1,61 @@
1/* PowerPC internal rwlock struct definitions.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3
4 This file is part of the GNU C Library.
5
6 The GNU C Library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
10
11 The GNU C Library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
15
16 You should have received a copy of the GNU Lesser General Public
17 License along with the GNU C Library; if not, see
18 <http://www.gnu.org/licenses/>. */
19
20#ifndef _RWLOCK_INTERNAL_H
21#define _RWLOCK_INTERNAL_H
22
23struct __pthread_rwlock_arch_t
24{
25 unsigned int __readers;
26 unsigned int __writers;
27 unsigned int __wrphase_futex;
28 unsigned int __writers_futex;
29 unsigned int __pad3;
30 unsigned int __pad4;
31#if __WORDSIZE == 64
32 int __cur_writer;
33 int __shared;
34 unsigned char __rwelision;
35 unsigned char __pad1[7];
36 unsigned long int __pad2;
37 /* FLAGS must stay at this position in the structure to maintain
38 binary compatibility. */
39 unsigned int __flags;
40# define __PTHREAD_RWLOCK_ELISION_EXTRA 0, {0, 0, 0, 0, 0, 0, 0 }
41#else
42 unsigned char __rwelision;
43 unsigned char __pad2;
44 unsigned char __shared;
45 /* FLAGS must stay at this position in the structure to maintain
46 binary compatibility. */
47 unsigned char __flags;
48 int __cur_writer;
49# define __PTHREAD_RWLOCK_ELISION_EXTRA 0
50#endif
51};
52
53#if __WORDSIZE == 64
54# define __PTHREAD_RWLOCK_INITIALIZER(__flags) \
55 0, 0, 0, 0, 0, 0, 0, 0, __PTHREAD_RWLOCK_ELISION_EXTRA, 0, __flags
56#else
57# define __PTHREAD_RWLOCK_INITIALIZER(__flags) \
58 0, 0, 0, 0, 0, 0, __PTHREAD_RWLOCK_ELISION_EXTRA, 0, 0, __flags, 0
59#endif
60
61#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/struct_stat.h created+231
...@@ -0,0 +1,231 @@
1/* Definition for struct stat.
2 Copyright (C) 2020-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#if !defined _SYS_STAT_H && !defined _FCNTL_H
20# error "Never include <bits/struct_stat.h> directly; use <sys/stat.h> instead."
21#endif
22
23#ifndef _BITS_STRUCT_STAT_H
24#define _BITS_STRUCT_STAT_H 1
25
26#include <bits/wordsize.h>
27
28#if __WORDSIZE == 32
29struct stat
30 {
31# ifdef __USE_TIME_BITS64
32# include <bits/struct_stat_time64_helper.h>
33# else
34 __dev_t st_dev; /* Device. */
35# ifndef __USE_FILE_OFFSET64
36 unsigned short int __pad1;
37 __ino_t st_ino; /* File serial number. */
38# else
39 __ino64_t st_ino; /* File serial number. */
40# endif
41 __mode_t st_mode; /* File mode. */
42 __nlink_t st_nlink; /* Link count. */
43 __uid_t st_uid; /* User ID of the file's owner. */
44 __gid_t st_gid; /* Group ID of the file's group.*/
45 __dev_t st_rdev; /* Device number, if device. */
46 unsigned short int __pad2;
47# ifndef __USE_FILE_OFFSET64
48 __off_t st_size; /* Size of file, in bytes. */
49# else
50 __off64_t st_size; /* Size of file, in bytes. */
51# endif
52 __blksize_t st_blksize; /* Optimal block size for I/O. */
53
54# ifndef __USE_FILE_OFFSET64
55 __blkcnt_t st_blocks; /* Number 512-byte blocks allocated. */
56# else
57 __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
58# endif
59# ifdef __USE_XOPEN2K8
60 /* Nanosecond resolution timestamps are stored in a format
61 equivalent to 'struct timespec'. This is the type used
62 whenever possible but the Unix namespace rules do not allow the
63 identifier 'timespec' to appear in the <sys/stat.h> header.
64 Therefore we have to handle the use of this header in strictly
65 standard-compliant sources special. */
66 struct timespec st_atim; /* Time of last access. */
67 struct timespec st_mtim; /* Time of last modification. */
68 struct timespec st_ctim; /* Time of last status change. */
69# define st_atime st_atim.tv_sec /* Backward compatibility. */
70# define st_mtime st_mtim.tv_sec
71# define st_ctime st_ctim.tv_sec
72# else
73 __time_t st_atime; /* Time of last access. */
74 unsigned long int st_atimensec; /* Nscecs of last access. */
75 __time_t st_mtime; /* Time of last modification. */
76 unsigned long int st_mtimensec; /* Nsecs of last modification. */
77 __time_t st_ctime; /* Time of last status change. */
78 unsigned long int st_ctimensec; /* Nsecs of last status change. */
79# endif
80 unsigned long int __glibc_reserved4;
81 unsigned long int __glibc_reserved5;
82# endif /* __USE_TIME_BITS64 */
83 };
84
85# ifdef __USE_LARGEFILE64
86struct stat64
87 {
88# ifdef __USE_TIME_BITS64
89# include <bits/struct_stat_time64_helper.h>
90# else
91 __dev_t st_dev; /* Device. */
92 __ino64_t st_ino; /* File serial number. */
93 __mode_t st_mode; /* File mode. */
94 __nlink_t st_nlink; /* Link count. */
95 __uid_t st_uid; /* User ID of the file's owner. */
96 __gid_t st_gid; /* Group ID of the file's group.*/
97 __dev_t st_rdev; /* Device number, if device. */
98 unsigned short int __pad2;
99 __off64_t st_size; /* Size of file, in bytes. */
100 __blksize_t st_blksize; /* Optimal block size for I/O. */
101 __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
102# ifdef __USE_XOPEN2K8
103 /* Nanosecond resolution timestamps are stored in a format
104 equivalent to 'struct timespec'. This is the type used
105 whenever possible but the Unix namespace rules do not allow the
106 identifier 'timespec' to appear in the <sys/stat.h> header.
107 Therefore we have to handle the use of this header in strictly
108 standard-compliant sources special. */
109 struct timespec st_atim; /* Time of last access. */
110 struct timespec st_mtim; /* Time of last modification. */
111 struct timespec st_ctim; /* Time of last status change. */
112# define st_atime st_atim.tv_sec /* Backward compatibility. */
113# define st_mtime st_mtim.tv_sec
114# define st_ctime st_ctim.tv_sec
115# else
116 __time_t st_atime; /* Time of last access. */
117 unsigned long int st_atimensec; /* Nscecs of last access. */
118 __time_t st_mtime; /* Time of last modification. */
119 unsigned long int st_mtimensec; /* Nsecs of last modification. */
120 __time_t st_ctime; /* Time of last status change. */
121 unsigned long int st_ctimensec; /* Nsecs of last status change. */
122# endif
123 unsigned long int __glibc_reserved4;
124 unsigned long int __glibc_reserved5;
125# endif /* __USE_TIME_BITS64 */
126 };
127# endif /* __USE_LARGEFILE64 */
128
129#else /* __WORDSIZE == 32 */
130
131struct stat
132 {
133 __dev_t st_dev; /* Device. */
134# ifndef __USE_FILE_OFFSET64
135 __ino_t st_ino; /* File serial number. */
136# else
137 __ino64_t st_ino; /* File serial number. */
138# endif
139 __nlink_t st_nlink; /* Link count. */
140 __mode_t st_mode; /* File mode. */
141 __uid_t st_uid; /* User ID of the file's owner. */
142 __gid_t st_gid; /* Group ID of the file's group.*/
143 int __pad2;
144 __dev_t st_rdev; /* Device number, if device. */
145# ifndef __USE_FILE_OFFSET64
146 __off_t st_size; /* Size of file, in bytes. */
147# else
148 __off64_t st_size; /* Size of file, in bytes. */
149# endif
150 __blksize_t st_blksize; /* Optimal block size for I/O. */
151
152# ifndef __USE_FILE_OFFSET64
153 __blkcnt_t st_blocks; /* Number 512-byte blocks allocated. */
154# else
155 __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
156# endif
157# ifdef __USE_XOPEN2K8
158 /* Nanosecond resolution timestamps are stored in a format
159 equivalent to 'struct timespec'. This is the type used
160 whenever possible but the Unix namespace rules do not allow the
161 identifier 'timespec' to appear in the <sys/stat.h> header.
162 Therefore we have to handle the use of this header in strictly
163 standard-compliant sources special. */
164 struct timespec st_atim; /* Time of last access. */
165 struct timespec st_mtim; /* Time of last modification. */
166 struct timespec st_ctim; /* Time of last status change. */
167# define st_atime st_atim.tv_sec /* Backward compatibility. */
168# define st_mtime st_mtim.tv_sec
169# define st_ctime st_ctim.tv_sec
170# else
171 __time_t st_atime; /* Time of last access. */
172 unsigned long int st_atimensec; /* Nscecs of last access. */
173 __time_t st_mtime; /* Time of last modification. */
174 unsigned long int st_mtimensec; /* Nsecs of last modification. */
175 __time_t st_ctime; /* Time of last status change. */
176 unsigned long int st_ctimensec; /* Nsecs of last status change. */
177# endif
178 unsigned long int __glibc_reserved4;
179 unsigned long int __glibc_reserved5;
180 unsigned long int __glibc_reserved6;
181 };
182
183# ifdef __USE_LARGEFILE64
184struct stat64
185 {
186 __dev_t st_dev; /* Device. */
187 __ino64_t st_ino; /* File serial number. */
188 __nlink_t st_nlink; /* Link count. */
189 __mode_t st_mode; /* File mode. */
190 __uid_t st_uid; /* User ID of the file's owner. */
191 __gid_t st_gid; /* Group ID of the file's group.*/
192 int __pad2;
193 __dev_t st_rdev; /* Device number, if device. */
194 __off64_t st_size; /* Size of file, in bytes. */
195 __blksize_t st_blksize; /* Optimal block size for I/O. */
196 __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
197# ifdef __USE_XOPEN2K8
198 /* Nanosecond resolution timestamps are stored in a format
199 equivalent to 'struct timespec'. This is the type used
200 whenever possible but the Unix namespace rules do not allow the
201 identifier 'timespec' to appear in the <sys/stat.h> header.
202 Therefore we have to handle the use of this header in strictly
203 standard-compliant sources special. */
204 struct timespec st_atim; /* Time of last access. */
205 struct timespec st_mtim; /* Time of last modification. */
206 struct timespec st_ctim; /* Time of last status change. */
207# define st_atime st_atim.tv_sec /* Backward compatibility. */
208# define st_mtime st_mtim.tv_sec
209# define st_ctime st_ctim.tv_sec
210# else
211 __time_t st_atime; /* Time of last access. */
212 unsigned long int st_atimensec; /* Nscecs of last access. */
213 __time_t st_mtime; /* Time of last modification. */
214 unsigned long int st_mtimensec; /* Nsecs of last modification. */
215 __time_t st_ctime; /* Time of last status change. */
216 unsigned long int st_ctimensec; /* Nsecs of last status change. */
217# endif
218 unsigned long int __glibc_reserved4;
219 unsigned long int __glibc_reserved5;
220 unsigned long int __glibc_reserved6;
221 };
222# endif /* __USE_LARGEFILE64 */
223#endif
224
225/* Tell code we have these members. */
226#define _STATBUF_ST_BLKSIZE
227#define _STATBUF_ST_RDEV
228/* Nanosecond resolution time values are supported. */
229#define _STATBUF_ST_NSEC
230
231#endif /* _BITS_STRUCT_STAT_H */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/termios-baud.h created+45
...@@ -0,0 +1,45 @@
1/* termios baud rate selection definitions. Linux/powerpc version.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _TERMIOS_H
20# error "Never include <bits/termios-baud.h> directly; use <termios.h> instead."
21#endif
22
23#ifdef __USE_MISC
24# define CBAUD 0000377
25# define CBAUDEX 0000020
26# define CMSPAR 010000000000 /* mark or space (stick) parity */
27# define CRTSCTS 020000000000 /* flow control */
28#endif
29
30#define B57600 00020
31#define B115200 00021
32#define B230400 00022
33#define B460800 00023
34#define B500000 00024
35#define B576000 00025
36#define B921600 00026
37#define B1000000 00027
38#define B1152000 00030
39#define B1500000 00031
40#define B2000000 00032
41#define B2500000 00033
42#define B3000000 00034
43#define B3500000 00035
44#define B4000000 00036
45#define __MAX_BAUD B4000000
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/termios-c_cc.h created+41
...@@ -0,0 +1,41 @@
1/* termios c_cc symbolic constant definitions. Linux/powerpc version.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _TERMIOS_H
20# error "Never include <bits/termios-c_cc.h> directly; use <termios.h> instead."
21#endif
22
23/* c_cc characters */
24#define VINTR 0
25#define VQUIT 1
26#define VERASE 2
27#define VKILL 3
28#define VEOF 4
29#define VMIN 5
30#define VEOL 6
31#define VTIME 7
32#define VEOL2 8
33#define VSWTC 9
34
35#define VWERASE 10
36#define VREPRINT 11
37#define VSUSP 12
38#define VSTART 13
39#define VSTOP 14
40#define VLNEXT 15
41#define VDISCARD 16
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/termios-c_cflag.h created+35
...@@ -0,0 +1,35 @@
1/* termios control mode definitions. Linux/powerpc version.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _TERMIOS_H
20# error "Never include <bits/termios-c_cflag.h> directly; use <termios.h> instead."
21#endif
22
23#define CSIZE 00001400
24#define CS5 00000000
25#define CS6 00000400
26#define CS7 00001000
27#define CS8 00001400
28
29#define CSTOPB 00002000
30#define CREAD 00004000
31#define PARENB 00010000
32#define PARODD 00020000
33#define HUPCL 00040000
34
35#define CLOCAL 00100000
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/termios-c_iflag.h created+38
...@@ -0,0 +1,38 @@
1/* termios input mode definitions. Linux/powerpc version.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _TERMIOS_H
20# error "Never include <bits/termios-c_iflags.h> directly; use <termios.h> instead."
21#endif
22
23/* c_iflag bits */
24#define IGNBRK 0000001
25#define BRKINT 0000002
26#define IGNPAR 0000004
27#define PARMRK 0000010
28#define INPCK 0000020
29#define ISTRIP 0000040
30#define INLCR 0000100
31#define IGNCR 0000200
32#define ICRNL 0000400
33#define IXON 0001000
34#define IXOFF 0002000
35#define IXANY 0004000
36#define IUCLC 0010000
37#define IMAXBEL 0020000
38#define IUTF8 0040000
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/termios-c_lflag.h created+45
...@@ -0,0 +1,45 @@
1/* termios local mode definitions. Linux/powerpc version.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _TERMIOS_H
20# error "Never include <bits/termios-c_lflag.h> directly; use <termios.h> instead."
21#endif
22
23/* c_lflag bits */
24#define ISIG 0x00000080
25#define ICANON 0x00000100
26#if defined __USE_MISC || (defined __USE_XOPEN && !defined __USE_XOPEN2K)
27# define XCASE 0x00004000
28#endif
29#define ECHO 0x00000008
30#define ECHOE 0x00000002
31#define ECHOK 0x00000004
32#define ECHONL 0x00000010
33#define NOFLSH 0x80000000
34#define TOSTOP 0x00400000
35#ifdef __USE_MISC
36# define ECHOCTL 0x00000040
37# define ECHOPRT 0x00000020
38# define ECHOKE 0x00000001
39# define FLUSHO 0x00800000
40# define PENDIN 0x20000000
41#endif
42#define IEXTEN 0x00000400
43#ifdef __USE_MISC
44# define EXTPROC 0x10000000
45#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/termios-c_oflag.h created+65
...@@ -0,0 +1,65 @@
1/* termios output mode definitions. Linux/powerpc version.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _TERMIOS_H
20# error "Never include <bits/termios-c_oflag.h> directly; use <termios.h> instead."
21#endif
22
23/* c_oflag bits */
24#define OPOST 0000001
25#define ONLCR 0000002
26#define OLCUC 0000004
27
28#define OCRNL 0000010
29#define ONOCR 0000020
30#define ONLRET 0000040
31
32#define OFILL 00000100
33#define OFDEL 00000200
34#if defined __USE_MISC || defined __USE_XOPEN
35# define NLDLY 00001400
36# define NL0 00000000
37# define NL1 00000400
38# if defined __USE_MISC
39# define NL2 00001000
40# define NL3 00001400
41# endif
42# define TABDLY 00006000
43# define TAB0 00000000
44# define TAB1 00002000
45# define TAB2 00004000
46# define TAB3 00006000
47# define CRDLY 00030000
48# define CR0 00000000
49# define CR1 00010000
50# define CR2 00020000
51# define CR3 00030000
52# define FFDLY 00040000
53# define FF0 00000000
54# define FF1 00040000
55# define BSDLY 00100000
56# define BS0 00000000
57# define BS1 00100000
58#endif
59#define VTDLY 00200000
60#define VT0 00000000
61#define VT1 00200000
62
63#ifdef __USE_MISC
64# define XTABS 00006000
65#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/termios-misc.h created+72
...@@ -0,0 +1,72 @@
1/* termios baud platform specific definitions. Linux/powerpc version.
2 Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _TERMIOS_H
20# error "Never include <bits/termios-misc.h> directly; use <termios.h> instead."
21#endif
22
23#ifdef __USE_MISC
24
25struct sgttyb {
26 char sg_ispeed;
27 char sg_ospeed;
28 char sg_erase;
29 char sg_kill;
30 short sg_flags;
31};
32
33struct tchars {
34 char t_intrc;
35 char t_quitc;
36 char t_startc;
37 char t_stopc;
38 char t_eofc;
39 char t_brkc;
40};
41
42struct ltchars {
43 char t_suspc;
44 char t_dsuspc;
45 char t_rprntc;
46 char t_flushc;
47 char t_werasc;
48 char t_lnextc;
49};
50
51/* Used for packet mode */
52#define TIOCPKT_DATA 0
53#define TIOCPKT_FLUSHREAD 1
54#define TIOCPKT_FLUSHWRITE 2
55#define TIOCPKT_STOP 4
56#define TIOCPKT_START 8
57#define TIOCPKT_NOSTOP 16
58#define TIOCPKT_DOSTOP 32
59
60/* c_cc characters */
61#define _VINTR 0
62#define _VQUIT 1
63#define _VERASE 2
64#define _VKILL 3
65#define _VEOF 4
66#define _VMIN 5
67#define _VEOL 6
68#define _VTIME 7
69#define _VEOL2 8
70#define _VSWTC 9
71
72#endif /* __USE_MISC */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/types/struct_msqid_ds.h created+53
...@@ -0,0 +1,53 @@
1/* Linux/PowerPC implementation of the SysV message struct msqid_ds.
2 Copyright (C) 2020-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
21#endif
22
23#include <bits/types/time_t.h>
24
25/* Structure of record for one message inside the kernel.
26 The type `struct msg' is opaque. */
27struct msqid_ds
28{
29#ifdef __USE_TIME_BITS64
30# include <bits/types/struct_msqid64_ds_helper.h>
31#else
32 struct ipc_perm msg_perm; /* structure describing operation permission */
33# if __TIMESIZE == 32
34 unsigned long int __msg_stime_high;
35 __time_t msg_stime; /* time of last msgsnd command */
36 unsigned long int __msg_rtime_high;
37 __time_t msg_rtime; /* time of last msgsnd command */
38 unsigned long int __msg_ctime_high;
39 __time_t msg_ctime; /* time of last change */
40# else
41 __time_t msg_stime; /* time of last msgsnd command */
42 __time_t msg_rtime; /* time of last msgsnd command */
43 __time_t msg_ctime; /* time of last change */
44# endif
45 __syscall_ulong_t __msg_cbytes; /* current number of bytes on queue */
46 msgqnum_t msg_qnum; /* number of messages currently on queue */
47 msglen_t msg_qbytes; /* max number of bytes allowed on queue */
48 __pid_t msg_lspid; /* pid of last msgsnd() */
49 __pid_t msg_lrpid; /* pid of last msgrcv() */
50 __syscall_ulong_t __glibc_reserved4;
51 __syscall_ulong_t __glibc_reserved5;
52#endif
53};
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/types/struct_semid_ds.h created+43
...@@ -0,0 +1,43 @@
1/* PowerPC implementation of the semaphore struct semid_ds.
2 Copyright (C) 1995-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead."
21#endif
22
23/* Data structure describing a set of semaphores. */
24struct semid_ds
25{
26#ifdef __USE_TIME_BITS64
27# include <bits/types/struct_semid64_ds_helper.h>
28#else
29 struct ipc_perm sem_perm; /* operation permission struct */
30# if __TIMESIZE == 32
31 __syscall_ulong_t __sem_otime_high;
32 __time_t sem_otime; /* last semop() time */
33 __syscall_ulong_t __sem_ctime_high;
34 __time_t sem_ctime; /* last time changed by semctl() */
35# else
36 __time_t sem_otime; /* last semop() time */
37 __time_t sem_ctime; /* last time changed by semctl() */
38# endif
39 __syscall_ulong_t sem_nsems; /* number of semaphores in set */
40 __syscall_ulong_t __glibc_reserved3;
41 __syscall_ulong_t __glibc_reserved4;
42#endif
43};
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/types/struct_shmid_ds.h created+50
...@@ -0,0 +1,50 @@
1/* Linux/PowerPC implementation of the shared memory struct shmid_ds.
2 Copyright (C) 2020-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never include <bits/types/struct_shmid_ds.h> directly; use <sys/shm.h> instead."
21#endif
22
23/* Data structure describing a shared memory segment. */
24struct shmid_ds
25 {
26#ifdef __USE_TIME_BITS64
27# include <bits/types/struct_shmid64_ds_helper.h>
28#else
29 struct ipc_perm shm_perm; /* operation permission struct */
30# if __TIMESIZE == 32
31 unsigned long int __shm_atime_high;
32 __time_t shm_atime; /* time of last shmat() */
33 unsigned long int __shm_dtime_high;
34 __time_t shm_dtime; /* time of last shmdt() */
35 unsigned long int __shm_ctime_high;
36 __time_t shm_ctime; /* time of last change by shmctl() */
37 unsigned long int __glibc_reserved4;
38# else
39 __time_t shm_atime; /* time of last shmat() */
40 __time_t shm_dtime; /* time of last shmdt() */
41 __time_t shm_ctime; /* time of last change by shmctl() */
42# endif
43 size_t shm_segsz; /* size of segment in bytes */
44 __pid_t shm_cpid; /* pid of creator */
45 __pid_t shm_lpid; /* pid of last shmop */
46 shmatt_t shm_nattch; /* number of current attaches */
47 __syscall_ulong_t __glibc_reserved5;
48 __syscall_ulong_t __glibc_reserved6;
49#endif
50 };
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/bits/wordsize.h created+11
...@@ -0,0 +1,11 @@
1/* Determine the wordsize from the preprocessor defines. */
2
3#if defined __powerpc64__
4# define __WORDSIZE 64
5# define __WORDSIZE_TIME64_COMPAT32 1
6#else
7# define __WORDSIZE 32
8# define __WORDSIZE_TIME64_COMPAT32 0
9# define __WORDSIZE32_SIZE_ULONG 0
10# define __WORDSIZE32_PTRDIFF_LONG 0
11#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/fpu_control.h created+114
...@@ -0,0 +1,114 @@
1/* FPU control word definitions. PowerPC version.
2 Copyright (C) 1996-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _FPU_CONTROL_H
20#define _FPU_CONTROL_H
21
22#if defined __SPE__ || (defined __NO_FPRS__ && !defined _SOFT_FLOAT)
23# error "SPE/e500 is no longer supported"
24#endif
25
26#ifdef _SOFT_FLOAT
27
28# define _FPU_RESERVED 0xffffffff
29# define _FPU_DEFAULT 0x00000000 /* Default value. */
30typedef unsigned int fpu_control_t;
31# define _FPU_GETCW(cw) (cw) = 0
32# define _FPU_SETCW(cw) (void) (cw)
33extern fpu_control_t __fpu_control;
34
35#else /* PowerPC 6xx floating-point. */
36
37/* rounding control */
38# define _FPU_RC_NEAREST 0x00 /* RECOMMENDED */
39# define _FPU_RC_DOWN 0x03
40# define _FPU_RC_UP 0x02
41# define _FPU_RC_ZERO 0x01
42
43# define _FPU_MASK_RC (_FPU_RC_NEAREST|_FPU_RC_DOWN|_FPU_RC_UP|_FPU_RC_ZERO)
44
45# define _FPU_MASK_NI 0x04 /* non-ieee mode */
46
47/* masking of interrupts */
48# define _FPU_MASK_ZM 0x10 /* zero divide */
49# define _FPU_MASK_OM 0x40 /* overflow */
50# define _FPU_MASK_UM 0x20 /* underflow */
51# define _FPU_MASK_XM 0x08 /* inexact */
52# define _FPU_MASK_IM 0x80 /* invalid operation */
53
54# define _FPU_RESERVED 0xffffff00 /* These bits are reserved are not changed. */
55
56/* The fdlibm code requires no interrupts for exceptions. */
57# define _FPU_DEFAULT 0x00000000 /* Default value. */
58
59/* IEEE: same as above, but (some) exceptions;
60 we leave the 'inexact' exception off.
61 */
62# define _FPU_IEEE 0x000000f0
63
64/* Type of the control word. */
65typedef unsigned int fpu_control_t;
66
67/* Macros for accessing the hardware control word. */
68# define _FPU_GETCW(cw) \
69 ({union { double __d; unsigned long long __ll; } __u; \
70 __asm__ __volatile__("mffs %0" : "=f" (__u.__d)); \
71 (cw) = (fpu_control_t) __u.__ll; \
72 (fpu_control_t) __u.__ll; \
73 })
74
75# define _FPU_GET_RC_ISA300() \
76 ({union { double __d; unsigned long long __ll; } __u; \
77 __asm__ __volatile__( \
78 ".machine push; .machine \"power9\"; mffsl %0; .machine pop" \
79 : "=f" (__u.__d)); \
80 (fpu_control_t) (__u.__ll & _FPU_MASK_RC); \
81 })
82
83# ifdef _ARCH_PWR9
84# define _FPU_GET_RC() _FPU_GET_RC_ISA300()
85# elif defined __BUILTIN_CPU_SUPPORTS__
86# define _FPU_GET_RC() \
87 ({fpu_control_t __rc; \
88 __rc = __glibc_likely (__builtin_cpu_supports ("arch_3_00")) \
89 ? _FPU_GET_RC_ISA300 () \
90 : _FPU_GETCW (__rc) & _FPU_MASK_RC; \
91 __rc; \
92 })
93# else
94# define _FPU_GET_RC() \
95 ({fpu_control_t __rc = _FPU_GETCW (__rc) & _FPU_MASK_RC; \
96 __rc; \
97 })
98# endif
99
100# define _FPU_SETCW(cw) \
101 { union { double __d; unsigned long long __ll; } __u; \
102 register double __fr; \
103 __u.__ll = 0xfff80000LL << 32; /* This is a QNaN. */ \
104 __u.__ll |= (cw) & 0xffffffffLL; \
105 __fr = __u.__d; \
106 __asm__ __volatile__("mtfsf 255,%0" : : "f" (__fr)); \
107 }
108
109/* Default control word set at startup. */
110extern fpu_control_t __fpu_control;
111
112#endif /* PowerPC 6xx floating-point. */
113
114#endif /* _FPU_CONTROL_H */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/gnu/lib-names-32.h created+29
...@@ -0,0 +1,29 @@
1/* This file is automatically generated. */
2#ifndef __GNU_LIB_NAMES_H
3# error "Never use <gnu/lib-names-32.h> directly; include <gnu/lib-names.h> instead."
4#endif
5
6#define LD_SO "ld.so.1"
7#define LIBANL_SO "libanl.so.1"
8#define LIBBROKENLOCALE_SO "libBrokenLocale.so.1"
9#define LIBCRYPT_SO "libcrypt.so.1"
10#define LIBC_MALLOC_DEBUG_SO "libc_malloc_debug.so.0"
11#define LIBC_SO "libc.so.6"
12#define LIBDL_SO "libdl.so.2"
13#define LIBGCC_S_SO "libgcc_s.so.1"
14#define LIBMVEC_SO "libmvec.so.1"
15#define LIBM_SO "libm.so.6"
16#define LIBNSL_SO "libnsl.so.1"
17#define LIBNSS_COMPAT_SO "libnss_compat.so.2"
18#define LIBNSS_DB_SO "libnss_db.so.2"
19#define LIBNSS_DNS_SO "libnss_dns.so.2"
20#define LIBNSS_FILES_SO "libnss_files.so.2"
21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"
23#define LIBNSS_TEST1_SO "libnss_test1.so.2"
24#define LIBNSS_TEST2_SO "libnss_test2.so.2"
25#define LIBPTHREAD_SO "libpthread.so.0"
26#define LIBRESOLV_SO "libresolv.so.2"
27#define LIBRT_SO "librt.so.1"
28#define LIBTHREAD_DB_SO "libthread_db.so.1"
29#define LIBUTIL_SO "libutil.so.1"
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/gnu/lib-names.h created+19
...@@ -0,0 +1,19 @@
1/* This file is automatically generated.
2 It defines macros to allow user program to find the shared
3 library files which come as part of GNU libc. */
4#ifndef __GNU_LIB_NAMES_H
5#define __GNU_LIB_NAMES_H 1
6
7#include <bits/wordsize.h>
8
9#if __WORDSIZE == 32
10# include <gnu/lib-names-32.h>
11#endif
12#if __WORDSIZE == 64 && _CALL_ELF != 2
13# include <gnu/lib-names-64-v1.h>
14#endif
15#if __WORDSIZE == 64 && _CALL_ELF == 2
16# include <gnu/lib-names-64-v2.h>
17#endif
18
19#endif /* gnu/lib-names.h */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/gnu/stubs.h created+15
...@@ -0,0 +1,15 @@
1/* This file is automatically generated.
2 This file selects the right generated file of `__stub_FUNCTION' macros
3 based on the architecture being compiled for. */
4
5#include <bits/wordsize.h>
6
7#if __WORDSIZE == 32
8# include <gnu/stubs-32.h>
9#endif
10#if __WORDSIZE == 64 && _CALL_ELF != 2
11# include <gnu/stubs-64-v1.h>
12#endif
13#if __WORDSIZE == 64 && _CALL_ELF == 2
14# include <gnu/stubs-64-v2.h>
15#endif
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/ieee754.h created+197
...@@ -0,0 +1,197 @@
1/* Copyright (C) 1992-2021 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _IEEE754_H
19#define _IEEE754_H 1
20
21#include <features.h>
22
23#include <bits/endian.h>
24#include <bits/floatn.h>
25
26__BEGIN_DECLS
27
28union ieee754_float
29 {
30 float f;
31
32 /* This is the IEEE 754 single-precision format. */
33 struct
34 {
35#if __BYTE_ORDER == __BIG_ENDIAN
36 unsigned int negative:1;
37 unsigned int exponent:8;
38 unsigned int mantissa:23;
39#endif /* Big endian. */
40#if __BYTE_ORDER == __LITTLE_ENDIAN
41 unsigned int mantissa:23;
42 unsigned int exponent:8;
43 unsigned int negative:1;
44#endif /* Little endian. */
45 } ieee;
46
47 /* This format makes it easier to see if a NaN is a signalling NaN. */
48 struct
49 {
50#if __BYTE_ORDER == __BIG_ENDIAN
51 unsigned int negative:1;
52 unsigned int exponent:8;
53 unsigned int quiet_nan:1;
54 unsigned int mantissa:22;
55#endif /* Big endian. */
56#if __BYTE_ORDER == __LITTLE_ENDIAN
57 unsigned int mantissa:22;
58 unsigned int quiet_nan:1;
59 unsigned int exponent:8;
60 unsigned int negative:1;
61#endif /* Little endian. */
62 } ieee_nan;
63 };
64
65#define IEEE754_FLOAT_BIAS 0x7f /* Added to exponent. */
66
67
68union ieee754_double
69 {
70 double d;
71
72 /* This is the IEEE 754 double-precision format. */
73 struct
74 {
75#if __BYTE_ORDER == __BIG_ENDIAN
76 unsigned int negative:1;
77 unsigned int exponent:11;
78 /* Together these comprise the mantissa. */
79 unsigned int mantissa0:20;
80 unsigned int mantissa1:32;
81#endif /* Big endian. */
82#if __BYTE_ORDER == __LITTLE_ENDIAN
83 /* Together these comprise the mantissa. */
84 unsigned int mantissa1:32;
85 unsigned int mantissa0:20;
86 unsigned int exponent:11;
87 unsigned int negative:1;
88#endif /* Little endian. */
89 } ieee;
90
91 /* This format makes it easier to see if a NaN is a signalling NaN. */
92 struct
93 {
94#if __BYTE_ORDER == __BIG_ENDIAN
95 unsigned int negative:1;
96 unsigned int exponent:11;
97 unsigned int quiet_nan:1;
98 /* Together these comprise the mantissa. */
99 unsigned int mantissa0:19;
100 unsigned int mantissa1:32;
101#else
102 /* Together these comprise the mantissa. */
103 unsigned int mantissa1:32;
104 unsigned int mantissa0:19;
105 unsigned int quiet_nan:1;
106 unsigned int exponent:11;
107 unsigned int negative:1;
108#endif
109 } ieee_nan;
110 };
111
112#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */
113
114
115#if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
116/* long double is IEEE 128 bit */
117union ieee854_long_double
118 {
119 long double d;
120
121 /* This is the IEEE 854 quad-precision format. */
122 struct
123 {
124#if __BYTE_ORDER == __BIG_ENDIAN
125 unsigned int negative:1;
126 unsigned int exponent:15;
127 /* Together these comprise the mantissa. */
128 unsigned int mantissa0:16;
129 unsigned int mantissa1:32;
130 unsigned int mantissa2:32;
131 unsigned int mantissa3:32;
132#endif /* Big endian. */
133#if __BYTE_ORDER == __LITTLE_ENDIAN
134 /* Together these comprise the mantissa. */
135 unsigned int mantissa3:32;
136 unsigned int mantissa2:32;
137 unsigned int mantissa1:32;
138 unsigned int mantissa0:16;
139 unsigned int exponent:15;
140 unsigned int negative:1;
141#endif /* Little endian. */
142 } ieee;
143
144 /* This format makes it easier to see if a NaN is a signalling NaN. */
145 struct
146 {
147#if __BYTE_ORDER == __BIG_ENDIAN
148 unsigned int negative:1;
149 unsigned int exponent:15;
150 unsigned int quiet_nan:1;
151 /* Together these comprise the mantissa. */
152 unsigned int mantissa0:15;
153 unsigned int mantissa1:32;
154 unsigned int mantissa2:32;
155 unsigned int mantissa3:32;
156#else
157 /* Together these comprise the mantissa. */
158 unsigned int mantissa3:32;
159 unsigned int mantissa2:32;
160 unsigned int mantissa1:32;
161 unsigned int mantissa0:15;
162 unsigned int quiet_nan:1;
163 unsigned int exponent:15;
164 unsigned int negative:1;
165#endif
166 } ieee_nan;
167 };
168
169#define IEEE854_LONG_DOUBLE_BIAS 0x3fff /* Added to exponent. */
170#endif
171
172
173#if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0 || __GNUC_PREREQ (7, 0)
174/* IBM extended format for long double.
175
176 Each long double is made up of two IEEE doubles. The value of the
177 long double is the sum of the values of the two parts. The most
178 significant part is required to be the value of the long double
179 rounded to the nearest double, as specified by IEEE. For Inf
180 values, the least significant part is required to be one of +0.0 or
181 -0.0. No other requirements are made; so, for example, 1.0 may be
182 represented as (1.0, +0.0) or (1.0, -0.0), and the low part of a
183 NaN is don't-care. */
184union ibm_extended_long_double
185 {
186# if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1 && __GNUC_PREREQ (7, 0)
187 __ibm128 ld;
188# else
189 long double ld;
190# endif
191 union ieee754_double d[2];
192 };
193#endif
194
195__END_DECLS
196
197#endif /* ieee754.h */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/sys/ptrace.h created+272
...@@ -0,0 +1,272 @@
1/* `ptrace' debugger support interface. Linux/PowerPC version.
2 Copyright (C) 2001-2021 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_PTRACE_H
20#define _SYS_PTRACE_H 1
21
22#include <features.h>
23#include <bits/types.h>
24
25__BEGIN_DECLS
26
27#if defined _LINUX_PTRACE_H || defined _ASM_POWERPC_PTRACE_H
28/* Do not let Linux headers macros interfere with enum __ptrace_request. */
29# undef PTRACE_ATTACH
30# undef PTRACE_CONT
31# undef PTRACE_DETACH
32# undef PTRACE_GET_DEBUGREG
33# undef PTRACE_GETEVENTMSG
34# undef PTRACE_GETEVRREGS
35# undef PTRACE_GETFPREGS
36# undef PTRACE_GETREGS
37# undef PTRACE_GETREGS64
38# undef PTRACE_GETREGSET
39# undef PTRACE_GETSIGINFO
40# undef PTRACE_GETSIGMASK
41# undef PTRACE_GET_SYSCALL_INFO
42# undef PTRACE_GETVRREGS
43# undef PTRACE_GETVSRREGS
44# undef PTRACE_INTERRUPT
45# undef PTRACE_KILL
46# undef PTRACE_LISTEN
47# undef PTRACE_PEEKDATA
48# undef PTRACE_PEEKSIGINFO
49# undef PTRACE_PEEKTEXT
50# undef PTRACE_POKEDATA
51# undef PTRACE_POKETEXT
52# undef PTRACE_SECCOMP_GET_FILTER
53# undef PTRACE_SECCOMP_GET_METADATA
54# undef PTRACE_SEIZE
55# undef PTRACE_SET_DEBUGREG
56# undef PTRACE_SETEVRREGS
57# undef PTRACE_SETFPREGS
58# undef PTRACE_SETOPTIONS
59# undef PTRACE_SETREGS
60# undef PTRACE_SETREGS64
61# undef PTRACE_SETREGSET
62# undef PTRACE_SETSIGINFO
63# undef PTRACE_SETSIGMASK
64# undef PTRACE_SETVRREGS
65# undef PTRACE_SETVSRREGS
66# undef PTRACE_SINGLEBLOCK
67# undef PTRACE_SINGLESTEP
68# undef PTRACE_SYSCALL
69# undef PTRACE_SYSCALL_INFO_NONE
70# undef PTRACE_SYSCALL_INFO_ENTRY
71# undef PTRACE_SYSCALL_INFO_EXIT
72# undef PTRACE_SYSCALL_INFO_SECCOMP
73# undef PTRACE_SYSEMU
74# undef PTRACE_SYSEMU_SINGLESTEP
75# undef PTRACE_TRACEME
76#endif
77
78/* Type of the REQUEST argument to `ptrace.' */
79enum __ptrace_request
80{
81 /* Indicate that the process making this request should be traced.
82 All signals received by this process can be intercepted by its
83 parent, and its parent can use the other `ptrace' requests. */
84 PTRACE_TRACEME = 0,
85#define PT_TRACE_ME PTRACE_TRACEME
86
87 /* Return the word in the process's text space at address ADDR. */
88 PTRACE_PEEKTEXT = 1,
89#define PT_READ_I PTRACE_PEEKTEXT
90
91 /* Return the word in the process's data space at address ADDR. */
92 PTRACE_PEEKDATA = 2,
93#define PT_READ_D PTRACE_PEEKDATA
94
95 /* Return the word in the process's user area at offset ADDR. */
96 PTRACE_PEEKUSER = 3,
97#define PT_READ_U PTRACE_PEEKUSER
98
99 /* Write the word DATA into the process's text space at address ADDR. */
100 PTRACE_POKETEXT = 4,
101#define PT_WRITE_I PTRACE_POKETEXT
102
103 /* Write the word DATA into the process's data space at address ADDR. */
104 PTRACE_POKEDATA = 5,
105#define PT_WRITE_D PTRACE_POKEDATA
106
107 /* Write the word DATA into the process's user area at offset ADDR. */
108 PTRACE_POKEUSER = 6,
109#define PT_WRITE_U PTRACE_POKEUSER
110
111 /* Continue the process. */
112 PTRACE_CONT = 7,
113#define PT_CONTINUE PTRACE_CONT
114
115 /* Kill the process. */
116 PTRACE_KILL = 8,
117#define PT_KILL PTRACE_KILL
118
119 /* Single step the process. */
120 PTRACE_SINGLESTEP = 9,
121#define PT_STEP PTRACE_SINGLESTEP
122
123 /* Get all general purpose registers used by a process. */
124 PTRACE_GETREGS = 12,
125#define PT_GETREGS PTRACE_GETREGS
126
127 /* Set all general purpose registers used by a process. */
128 PTRACE_SETREGS = 13,
129#define PT_SETREGS PTRACE_SETREGS
130
131 /* Get all floating point registers used by a process. */
132 PTRACE_GETFPREGS = 14,
133#define PT_GETFPREGS PTRACE_GETFPREGS
134
135 /* Set all floating point registers used by a process. */
136 PTRACE_SETFPREGS = 15,
137#define PT_SETFPREGS PTRACE_SETFPREGS
138
139 /* Attach to a process that is already running. */
140 PTRACE_ATTACH = 16,
141#define PT_ATTACH PTRACE_ATTACH
142
143 /* Detach from a process attached to with PTRACE_ATTACH. */
144 PTRACE_DETACH = 17,
145#define PT_DETACH PTRACE_DETACH
146
147 /* Get all altivec registers used by a process. */
148 PTRACE_GETVRREGS = 18,
149#define PT_GETVRREGS PTRACE_GETVRREGS
150
151 /* Set all altivec registers used by a process. */
152 PTRACE_SETVRREGS = 19,
153#define PT_SETVRREGS PTRACE_SETVRREGS
154
155 /* Get all SPE registers used by a process. */
156 PTRACE_GETEVRREGS = 20,
157#define PT_GETEVRREGS PTRACE_GETEVRREGS
158
159 /* Set all SPE registers used by a process. */
160 PTRACE_SETEVRREGS = 21,
161#define PT_SETEVRREGS PTRACE_SETEVRREGS
162
163 /* Same as PTRACE_GETREGS except a 32-bit process will obtain
164 the full 64-bit registers. Implemented by 64-bit kernels only. */
165 PTRACE_GETREGS64 = 22,
166#define PT_GETREGS64 PTRACE_GETREGS64
167
168 /* Same as PTRACE_SETREGS except a 32-bit process will set
169 the full 64-bit registers. Implemented by 64-bit kernels only. */
170 PTRACE_SETREGS64 = 23,
171#define PT_SETREGS64 PTRACE_SETREGS64
172
173 /* Continue and stop at the next entry to or return from syscall. */
174 PTRACE_SYSCALL = 24,
175#define PT_SYSCALL PTRACE_SYSCALL
176
177 /* Get a debug register of a process. */
178 PTRACE_GET_DEBUGREG = 25,
179#define PT_GET_DEBUGREG PTRACE_GET_DEBUGREG
180
181 /* Set a debug register of a process. */
182 PTRACE_SET_DEBUGREG = 26,
183#define PT_SET_DEBUGREG PTRACE_SET_DEBUGREG
184
185 /* Get the first 32 VSX registers of a process. */
186 PTRACE_GETVSRREGS = 27,
187#define PT_GETVSRREGS PTRACE_GETVSRREGS
188
189 /* Set the first 32 VSX registers of a process. */
190 PTRACE_SETVSRREGS = 28,
191#define PT_SETVSRREGS PTRACE_SETVSRREGS
192
193 /* Continue and stop at the next syscall, it will not be executed. */
194 PTRACE_SYSEMU = 29,
195#define PT_SYSEMU PTRACE_SYSEMU
196
197 /* Single step the process, the next syscall will not be executed. */
198 PTRACE_SYSEMU_SINGLESTEP = 30,
199#define PT_SYSEMU_SINGLESTEP PTRACE_SYSEMU_SINGLESTEP
200
201 /* Execute process until next taken branch. */
202 PTRACE_SINGLEBLOCK = 256,
203#define PT_STEPBLOCK PTRACE_SINGLEBLOCK
204
205 /* Set ptrace filter options. */
206 PTRACE_SETOPTIONS = 0x4200,
207#define PT_SETOPTIONS PTRACE_SETOPTIONS
208
209 /* Get last ptrace message. */
210 PTRACE_GETEVENTMSG = 0x4201,
211#define PT_GETEVENTMSG PTRACE_GETEVENTMSG
212
213 /* Get siginfo for process. */
214 PTRACE_GETSIGINFO = 0x4202,
215#define PT_GETSIGINFO PTRACE_GETSIGINFO
216
217 /* Set new siginfo for process. */
218 PTRACE_SETSIGINFO = 0x4203,
219#define PT_SETSIGINFO PTRACE_SETSIGINFO
220
221 /* Get register content. */
222 PTRACE_GETREGSET = 0x4204,
223#define PTRACE_GETREGSET PTRACE_GETREGSET
224
225 /* Set register content. */
226 PTRACE_SETREGSET = 0x4205,
227#define PTRACE_SETREGSET PTRACE_SETREGSET
228
229 /* Like PTRACE_ATTACH, but do not force tracee to trap and do not affect
230 signal or group stop state. */
231 PTRACE_SEIZE = 0x4206,
232#define PTRACE_SEIZE PTRACE_SEIZE
233
234 /* Trap seized tracee. */
235 PTRACE_INTERRUPT = 0x4207,
236#define PTRACE_INTERRUPT PTRACE_INTERRUPT
237
238 /* Wait for next group event. */
239 PTRACE_LISTEN = 0x4208,
240#define PTRACE_LISTEN PTRACE_LISTEN
241
242 /* Retrieve siginfo_t structures without removing signals from a queue. */
243 PTRACE_PEEKSIGINFO = 0x4209,
244#define PTRACE_PEEKSIGINFO PTRACE_PEEKSIGINFO
245
246 /* Get the mask of blocked signals. */
247 PTRACE_GETSIGMASK = 0x420a,
248#define PTRACE_GETSIGMASK PTRACE_GETSIGMASK
249
250 /* Change the mask of blocked signals. */
251 PTRACE_SETSIGMASK = 0x420b,
252#define PTRACE_SETSIGMASK PTRACE_SETSIGMASK
253
254 /* Get seccomp BPF filters. */
255 PTRACE_SECCOMP_GET_FILTER = 0x420c,
256#define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER
257
258 /* Get seccomp BPF filter metadata. */
259 PTRACE_SECCOMP_GET_METADATA = 0x420d,
260#define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
261
262 /* Get information about system call. */
263 PTRACE_GET_SYSCALL_INFO = 0x420e
264#define PTRACE_GET_SYSCALL_INFO PTRACE_GET_SYSCALL_INFO
265};
266
267
268#include <bits/ptrace-shared.h>
269
270__END_DECLS
271
272#endif /* _SYS_PTRACE_H */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/sys/ucontext.h created+200
...@@ -0,0 +1,200 @@
1/* Copyright (C) 1998-2021 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _SYS_UCONTEXT_H
19#define _SYS_UCONTEXT_H 1
20
21#include <features.h>
22
23#include <bits/types/sigset_t.h>
24#include <bits/types/stack_t.h>
25
26
27#ifdef __USE_MISC
28# define __ctx(fld) fld
29#else
30# define __ctx(fld) __ ## fld
31#endif
32
33struct __ctx(pt_regs);
34
35#if __WORDSIZE == 32
36
37/* Number of general registers. */
38# define __NGREG 48
39# ifdef __USE_MISC
40# define NGREG __NGREG
41# endif
42
43/* Container for all general registers. */
44typedef unsigned long gregset_t[__NGREG];
45
46/* Container for floating-point registers and status */
47typedef struct _libc_fpstate
48{
49 double __ctx(fpregs)[32];
50 double __ctx(fpscr);
51 unsigned int _pad[2];
52} fpregset_t;
53
54/* Container for Altivec/VMX registers and status.
55 Needs to be aligned on a 16-byte boundary. */
56typedef struct _libc_vrstate
57{
58 unsigned int __ctx(vrregs)[32][4];
59 unsigned int __ctx(vrsave);
60 unsigned int _pad[2];
61 unsigned int __ctx(vscr);
62} vrregset_t;
63
64/* Context to describe whole processor state. */
65typedef struct
66{
67 gregset_t __ctx(gregs);
68 fpregset_t __ctx(fpregs);
69 vrregset_t __ctx(vrregs) __attribute__((__aligned__(16)));
70} mcontext_t;
71
72#else
73
74/* For 64-bit kernels with Altivec support, a machine context is exactly
75 * a sigcontext. For older kernel (without Altivec) the sigcontext matches
76 * the mcontext upto but not including the v_regs field. For kernels that
77 * don't set AT_HWCAP or return AT_HWCAP without PPC_FEATURE_HAS_ALTIVEC the
78 * v_regs field may not exist and should not be referenced. The v_regs field
79 * can be referenced safely only after verifying that PPC_FEATURE_HAS_ALTIVEC
80 * is set in AT_HWCAP. */
81
82/* Number of general registers. */
83# define __NGREG 48 /* includes r0-r31, nip, msr, lr, etc. */
84# define __NFPREG 33 /* includes fp0-fp31 &fpscr. */
85# define __NVRREG 34 /* includes v0-v31, vscr, & vrsave in
86 split vectors */
87# ifdef __USE_MISC
88# define NGREG __NGREG
89# define NFPREG __NFPREG
90# define NVRREG __NVRREG
91# endif
92
93typedef unsigned long gregset_t[__NGREG];
94typedef double fpregset_t[__NFPREG];
95
96/* Container for Altivec/VMX Vector Status and Control Register. Only 32-bits
97 but can only be copied to/from a 128-bit vector register. So we allocated
98 a whole quadword speedup save/restore. */
99typedef struct _libc_vscr
100{
101#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
102 unsigned int __pad[3];
103 unsigned int __ctx(vscr_word);
104#else
105 unsigned int __ctx(vscr_word);
106 unsigned int __pad[3];
107#endif
108} vscr_t;
109
110/* Container for Altivec/VMX registers and status.
111 Must to be aligned on a 16-byte boundary. */
112typedef struct _libc_vrstate
113{
114 unsigned int __ctx(vrregs)[32][4];
115 vscr_t __ctx(vscr);
116 unsigned int __ctx(vrsave);
117 unsigned int __pad[3];
118} vrregset_t __attribute__((__aligned__(16)));
119
120typedef struct {
121 unsigned long __glibc_reserved[4];
122 int __ctx(signal);
123 int __pad0;
124 unsigned long __ctx(handler);
125 unsigned long __ctx(oldmask);
126 struct __ctx(pt_regs) *__ctx(regs);
127 gregset_t __ctx(gp_regs);
128 fpregset_t __ctx(fp_regs);
129/*
130 * To maintain compatibility with current implementations the sigcontext is
131 * extended by appending a pointer (v_regs) to a quadword type (elf_vrreg_t)
132 * followed by an unstructured (vmx_reserve) field of 69 doublewords. This
133 * allows the array of vector registers to be quadword aligned independent of
134 * the alignment of the containing sigcontext or ucontext. It is the
135 * responsibility of the code setting the sigcontext to set this pointer to
136 * either NULL (if this processor does not support the VMX feature) or the
137 * address of the first quadword within the allocated (vmx_reserve) area.
138 *
139 * The pointer (v_regs) of vector type (elf_vrreg_t) is essentially
140 * an array of 34 quadword entries. The entries with
141 * indexes 0-31 contain the corresponding vector registers. The entry with
142 * index 32 contains the vscr as the last word (offset 12) within the
143 * quadword. This allows the vscr to be stored as either a quadword (since
144 * it must be copied via a vector register to/from storage) or as a word.
145 * The entry with index 33 contains the vrsave as the first word (offset 0)
146 * within the quadword.
147 */
148 vrregset_t *__ctx(v_regs);
149 long __ctx(vmx_reserve)[__NVRREG+__NVRREG+1];
150} mcontext_t;
151
152#endif
153
154/* Userlevel context. */
155typedef struct ucontext_t
156 {
157 unsigned long int __ctx(uc_flags);
158 struct ucontext_t *uc_link;
159 stack_t uc_stack;
160#if __WORDSIZE == 32
161 /*
162 * These fields are set up this way to maximize source and
163 * binary compatibility with code written for the old
164 * ucontext_t definition, which didn't include space for the
165 * registers.
166 *
167 * Different versions of the kernel have stored the registers on
168 * signal delivery at different offsets from the ucontext struct.
169 * Programs should thus use the uc_mcontext.uc_regs pointer to
170 * find where the registers are actually stored. The registers
171 * will be stored within the ucontext_t struct but not necessarily
172 * at a fixed address. As a side-effect, this lets us achieve
173 * 16-byte alignment for the register storage space if the
174 * Altivec registers are to be saved, without requiring 16-byte
175 * alignment on the whole ucontext_t.
176 *
177 * The uc_mcontext.regs field is included for source compatibility
178 * with programs written against the older ucontext_t definition,
179 * and its name should therefore not change. The uc_pad field
180 * is for binary compatibility with programs compiled against the
181 * old ucontext_t; it ensures that uc_mcontext.regs and uc_sigmask
182 * are at the same offset as previously.
183 */
184 int __glibc_reserved1[7];
185 union __ctx(uc_regs_ptr) {
186 struct __ctx(pt_regs) *__ctx(regs);
187 mcontext_t *__ctx(uc_regs);
188 } uc_mcontext;
189 sigset_t uc_sigmask;
190 /* last for extensibility */
191 char __ctx(uc_reg_space)[sizeof (mcontext_t) + 12];
192#else /* 64-bit */
193 sigset_t uc_sigmask;
194 mcontext_t uc_mcontext; /* last for extensibility */
195#endif
196 } ucontext_t;
197
198#undef __ctx
199
200#endif /* sys/ucontext.h */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnueabihf/sys/user.h created+40
...@@ -0,0 +1,40 @@
1/* Copyright (C) 1998-2021 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _SYS_USER_H
19
20#define _SYS_USER_H 1
21#include <stddef.h>
22#include <features.h>
23
24#include <asm/ptrace.h>
25
26struct user {
27 struct pt_regs regs; /* entire machine state */
28 size_t u_tsize; /* text size (pages) */
29 size_t u_dsize; /* data size (pages) */
30 size_t u_ssize; /* stack size (pages) */
31 unsigned long start_code; /* text starting address */
32 unsigned long start_data; /* data starting address */
33 unsigned long start_stack; /* stack starting address */
34 long int signal; /* signal causing core dump */
35 struct regs * u_ar0; /* help gdb find registers */
36 unsigned long magic; /* identifies a core file */
37 char u_comm[32]; /* user command name */
38};
39
40#endif /* sys/user.h */
\ No newline at end of file
src/target.zig+2-1
...@@ -54,7 +54,8 @@ pub const available_libcs = [_]ArchOsAbi{...@@ -54,7 +54,8 @@ pub const available_libcs = [_]ArchOsAbi{
54 .{ .arch = .powerpc64le, .os = .linux, .abi = .musl },54 .{ .arch = .powerpc64le, .os = .linux, .abi = .musl },
55 .{ .arch = .powerpc64, .os = .linux, .abi = .gnu },55 .{ .arch = .powerpc64, .os = .linux, .abi = .gnu },
56 .{ .arch = .powerpc64, .os = .linux, .abi = .musl },56 .{ .arch = .powerpc64, .os = .linux, .abi = .musl },
57 .{ .arch = .powerpc, .os = .linux, .abi = .gnu },57 .{ .arch = .powerpc, .os = .linux, .abi = .gnueabi },
58 .{ .arch = .powerpc, .os = .linux, .abi = .gnueabihf },
58 .{ .arch = .powerpc, .os = .linux, .abi = .musl },59 .{ .arch = .powerpc, .os = .linux, .abi = .musl },
59 .{ .arch = .riscv64, .os = .linux, .abi = .gnu },60 .{ .arch = .riscv64, .os = .linux, .abi = .gnu },
60 .{ .arch = .riscv64, .os = .linux, .abi = .musl },61 .{ .arch = .riscv64, .os = .linux, .abi = .musl },
test/tests.zig+9
...@@ -236,6 +236,15 @@ const test_targets = blk: {...@@ -236,6 +236,15 @@ const test_targets = blk: {
236 },236 },
237 .link_libc = true,237 .link_libc = true,
238 },238 },
239 // https://github.com/ziglang/zig/issues/2256
240 //TestTarget{
241 // .target = .{
242 // .cpu_arch = .powerpc,
243 // .os_tag = .linux,
244 // .abi = .gnueabihf,
245 // },
246 // .link_libc = true,
247 //},
239248
240 TestTarget{249 TestTarget{
241 .target = .{250 .target = .{
tools/process_headers.zig+6-1
...@@ -152,7 +152,12 @@ const glibc_targets = [_]LibCTarget{...@@ -152,7 +152,12 @@ const glibc_targets = [_]LibCTarget{
152 LibCTarget{152 LibCTarget{
153 .name = "powerpc-linux-gnu",153 .name = "powerpc-linux-gnu",
154 .arch = MultiArch{ .specific = Arch.powerpc },154 .arch = MultiArch{ .specific = Arch.powerpc },
155 .abi = MultiAbi{ .specific = Abi.gnu },155 .abi = MultiAbi{ .specific = Abi.gnueabihf },
156 },
157 LibCTarget{
158 .name = "powerpc-linux-gnu-soft",
159 .arch = MultiArch{ .specific = Arch.powerpc },
160 .abi = MultiAbi{ .specific = Abi.gnueabi },
156 },161 },
157 LibCTarget{162 LibCTarget{
158 .name = "riscv64-linux-gnu-rv64imac-lp64",163 .name = "riscv64-linux-gnu-rv64imac-lp64",