mirror of
git://sourceware.org/git/glibc.git
synced 2025-03-06 20:58:33 +01:00
Fix misspellings in sysdeps/ -- BZ 25337
This commit is contained in:
parent
4d0fe291ae
commit
65cc53fe7c
153 changed files with 214 additions and 214 deletions
|
@ -24,7 +24,7 @@
|
||||||
#define ATOMIC_EXCHANGE_USES_CAS 0
|
#define ATOMIC_EXCHANGE_USES_CAS 0
|
||||||
|
|
||||||
/* Compare and exchange.
|
/* Compare and exchange.
|
||||||
For all "bool" routines, we return FALSE if exchange succesful. */
|
For all "bool" routines, we return FALSE if exchange successful. */
|
||||||
|
|
||||||
# define __arch_compare_and_exchange_bool_8_int(mem, newval, oldval, model) \
|
# define __arch_compare_and_exchange_bool_8_int(mem, newval, oldval, model) \
|
||||||
({ \
|
({ \
|
||||||
|
|
|
@ -102,9 +102,9 @@ L(set_long):
|
||||||
sub count, dstend, dst
|
sub count, dstend, dst
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adjust count and bias for loop. By substracting extra 1 from count,
|
* Adjust count and bias for loop. By subtracting extra 1 from count,
|
||||||
* it is easy to use tbz instruction to check whether loop tailing
|
* it is easy to use tbz instruction to check whether loop tailing
|
||||||
* count is less than 33 bytes, so as to bypass 2 unneccesary stps.
|
* count is less than 33 bytes, so as to bypass 2 unnecessary stps.
|
||||||
*/
|
*/
|
||||||
sub count, count, 64+16+1
|
sub count, count, 64+16+1
|
||||||
|
|
||||||
|
@ -151,9 +151,9 @@ L(zva_64):
|
||||||
|
|
||||||
sub count, dstend, dst
|
sub count, dstend, dst
|
||||||
/*
|
/*
|
||||||
* Adjust count and bias for loop. By substracting extra 1 from count,
|
* Adjust count and bias for loop. By subtracting extra 1 from count,
|
||||||
* it is easy to use tbz instruction to check whether loop tailing
|
* it is easy to use tbz instruction to check whether loop tailing
|
||||||
* count is less than 33 bytes, so as to bypass 2 unneccesary stps.
|
* count is less than 33 bytes, so as to bypass 2 unnecessary stps.
|
||||||
*/
|
*/
|
||||||
sub count, count, 128+64+64+1
|
sub count, count, 128+64+64+1
|
||||||
add dst, dst, 128
|
add dst, dst, 128
|
||||||
|
|
|
@ -79,7 +79,7 @@ $loop:
|
||||||
|
|
||||||
cmpbge zero, t0, t1 # E : bits set iff byte == zero
|
cmpbge zero, t0, t1 # E : bits set iff byte == zero
|
||||||
cmpbge zero, t2, t3 # E : bits set iff byte == c
|
cmpbge zero, t2, t3 # E : bits set iff byte == c
|
||||||
beq t1, $loop # U : if we havnt seen a null, loop
|
beq t1, $loop # U : if we haven't seen a null, loop
|
||||||
nop
|
nop
|
||||||
|
|
||||||
/* Mask out character matches after terminator */
|
/* Mask out character matches after terminator */
|
||||||
|
|
|
@ -127,7 +127,7 @@
|
||||||
: "memory"); \
|
: "memory"); \
|
||||||
})
|
})
|
||||||
|
|
||||||
/* For all "bool" routines, we return FALSE if exchange succesful. */
|
/* For all "bool" routines, we return FALSE if exchange successful. */
|
||||||
|
|
||||||
#define __arch_compare_and_exchange_bool_8_int(mem, new, old, mb1, mb2) \
|
#define __arch_compare_and_exchange_bool_8_int(mem, new, old, mb1, mb2) \
|
||||||
({ unsigned long __prev; int __cmp; \
|
({ unsigned long __prev; int __cmp; \
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
convert back to integer.
|
convert back to integer.
|
||||||
|
|
||||||
When the dividend is outside the range for which we can compute exact
|
When the dividend is outside the range for which we can compute exact
|
||||||
results, we use the fp quotent as an estimate from which we begin refining
|
results, we use the fp quotient as an estimate from which we begin refining
|
||||||
an exact integral value. This reduces the number of iterations in the
|
an exact integral value. This reduces the number of iterations in the
|
||||||
shift-and-subtract loop significantly.
|
shift-and-subtract loop significantly.
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
convert back to integer.
|
convert back to integer.
|
||||||
|
|
||||||
When the dividend is outside the range for which we can compute exact
|
When the dividend is outside the range for which we can compute exact
|
||||||
results, we use the fp quotent as an estimate from which we begin refining
|
results, we use the fp quotient as an estimate from which we begin refining
|
||||||
an exact integral value. This reduces the number of iterations in the
|
an exact integral value. This reduces the number of iterations in the
|
||||||
shift-and-subtract loop significantly.
|
shift-and-subtract loop significantly.
|
||||||
|
|
||||||
|
|
|
@ -66,7 +66,7 @@ enum
|
||||||
FE_ALL_EXCEPT
|
FE_ALL_EXCEPT
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Alpha chips support all four defined rouding modes.
|
/* Alpha chips support all four defined rounding modes.
|
||||||
|
|
||||||
Note that code must be compiled to use dynamic rounding (/d) instructions
|
Note that code must be compiled to use dynamic rounding (/d) instructions
|
||||||
to see these changes. For gcc this is -mfp-rounding-mode=d; for DEC cc
|
to see these changes. For gcc this is -mfp-rounding-mode=d; for DEC cc
|
||||||
|
|
|
@ -29,7 +29,7 @@ __feupdateenv (const fenv_t *envp)
|
||||||
/* Install new environment. */
|
/* Install new environment. */
|
||||||
__fesetenv (envp);
|
__fesetenv (envp);
|
||||||
|
|
||||||
/* Raise the saved exception. Incidently for us the implementation
|
/* Raise the saved exception. Incidentally for us the implementation
|
||||||
defined format of the values in objects of type fexcept_t is the
|
defined format of the values in objects of type fexcept_t is the
|
||||||
same as the ones specified using the FE_* constants. */
|
same as the ones specified using the FE_* constants. */
|
||||||
__feraiseexcept (tmp & SWCR_STATUS_MASK);
|
__feraiseexcept (tmp & SWCR_STATUS_MASK);
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
#include "local-soft-fp.h"
|
#include "local-soft-fp.h"
|
||||||
|
|
||||||
/* Should never actually be used, since we've more bits of precision
|
/* Should never actually be used, since we've more bits of precision
|
||||||
than the incomming long, but needed for linkage. */
|
than the incoming long, but needed for linkage. */
|
||||||
#undef FP_ROUNDMODE
|
#undef FP_ROUNDMODE
|
||||||
#define FP_ROUNDMODE FP_RND_ZERO
|
#define FP_ROUNDMODE FP_RND_ZERO
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
#include "local-soft-fp.h"
|
#include "local-soft-fp.h"
|
||||||
|
|
||||||
/* Should never actually be used, since we've more bits of precision
|
/* Should never actually be used, since we've more bits of precision
|
||||||
than the incomming long, but needed for linkage. */
|
than the incoming long, but needed for linkage. */
|
||||||
#undef FP_ROUNDMODE
|
#undef FP_ROUNDMODE
|
||||||
#define FP_ROUNDMODE FP_RND_ZERO
|
#define FP_ROUNDMODE FP_RND_ZERO
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
convert back to integer.
|
convert back to integer.
|
||||||
|
|
||||||
When the dividend is outside the range for which we can compute exact
|
When the dividend is outside the range for which we can compute exact
|
||||||
results, we use the fp quotent as an estimate from which we begin refining
|
results, we use the fp quotient as an estimate from which we begin refining
|
||||||
an exact integral value. This reduces the number of iterations in the
|
an exact integral value. This reduces the number of iterations in the
|
||||||
shift-and-subtract loop significantly.
|
shift-and-subtract loop significantly.
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
convert back to integer.
|
convert back to integer.
|
||||||
|
|
||||||
When the dividend is outside the range for which we can compute exact
|
When the dividend is outside the range for which we can compute exact
|
||||||
results, we use the fp quotent as an estimate from which we begin refining
|
results, we use the fp quotient as an estimate from which we begin refining
|
||||||
an exact integral value. This reduces the number of iterations in the
|
an exact integral value. This reduces the number of iterations in the
|
||||||
shift-and-subtract loop significantly.
|
shift-and-subtract loop significantly.
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,7 @@ ENTRY(__stpncpy)
|
||||||
or t2, t8, t2 # e0 : clear the bits between the last
|
or t2, t8, t2 # e0 : clear the bits between the last
|
||||||
or t3, t10, t3 # .. e1 : written byte and the last byte in
|
or t3, t10, t3 # .. e1 : written byte and the last byte in
|
||||||
andnot t3, t2, t3 # e0 : COUNT
|
andnot t3, t2, t3 # e0 : COUNT
|
||||||
cmovne t4, t5, v0 # .. e1 : if last written wasnt null, inc v0
|
cmovne t4, t5, v0 # .. e1 : if last written wasn't null, inc v0
|
||||||
zap t0, t3, t0 # e0 :
|
zap t0, t3, t0 # e0 :
|
||||||
stq_u t0, 0(a0) # e1 :
|
stq_u t0, 0(a0) # e1 :
|
||||||
ret # .. e1 :
|
ret # .. e1 :
|
||||||
|
|
|
@ -68,7 +68,7 @@ $loop:
|
||||||
xor t0, a1, t2 # e0 :
|
xor t0, a1, t2 # e0 :
|
||||||
cmpbge zero, t0, t1 # .. e1 : bits set iff byte == zero
|
cmpbge zero, t0, t1 # .. e1 : bits set iff byte == zero
|
||||||
cmpbge zero, t2, t3 # e0 : bits set iff byte == c
|
cmpbge zero, t2, t3 # e0 : bits set iff byte == c
|
||||||
beq t1, $loop # .. e1 : if we havnt seen a null, loop
|
beq t1, $loop # .. e1 : if we haven't seen a null, loop
|
||||||
|
|
||||||
/* Mask out character matches after terminator */
|
/* Mask out character matches after terminator */
|
||||||
$eos:
|
$eos:
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Install given floating-point environment (doesnot raise exceptions).
|
/* Install given floating-point environment (does not raise exceptions).
|
||||||
Copyright (C) 2020-2023 Free Software Foundation, Inc.
|
Copyright (C) 2020-2023 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@ ENTRY (__rawmemchr)
|
||||||
cmpne r2, r1 @ ... or C
|
cmpne r2, r1 @ ... or C
|
||||||
bne 1b
|
bne 1b
|
||||||
|
|
||||||
@ Disambiguate the exit possibilites above
|
@ Disambiguate the exit possibilities above
|
||||||
cmp r2, r1 @ Found C
|
cmp r2, r1 @ Found C
|
||||||
it eq
|
it eq
|
||||||
bxeq lr
|
bxeq lr
|
||||||
|
|
|
@ -43,14 +43,14 @@ ENTRY (strchr)
|
||||||
|
|
||||||
@ Loop until we find ...
|
@ Loop until we find ...
|
||||||
1: ldrb r2, [r0, #1]!
|
1: ldrb r2, [r0, #1]!
|
||||||
subs r3, r3, #1 @ ... the aligment point
|
subs r3, r3, #1 @ ... the alignment point
|
||||||
it ne
|
it ne
|
||||||
cmpne r2, r1 @ ... or the character
|
cmpne r2, r1 @ ... or the character
|
||||||
it ne
|
it ne
|
||||||
cmpne r2, #0 @ ... or EOS
|
cmpne r2, #0 @ ... or EOS
|
||||||
bne 1b
|
bne 1b
|
||||||
|
|
||||||
@ Disambiguate the exit possibilites above
|
@ Disambiguate the exit possibilities above
|
||||||
cmp r2, r1 @ Found the character
|
cmp r2, r1 @ Found the character
|
||||||
it ne
|
it ne
|
||||||
cmpne r2, #0 @ Found EOS
|
cmpne r2, #0 @ Found EOS
|
||||||
|
|
|
@ -61,7 +61,7 @@ ENTRY (strcpy)
|
||||||
cmpne r2, #0 @ ... or EOS
|
cmpne r2, #0 @ ... or EOS
|
||||||
bne 1b
|
bne 1b
|
||||||
|
|
||||||
@ Disambiguate the exit possibilites above
|
@ Disambiguate the exit possibilities above
|
||||||
cmp r2, #0 @ Found EOS
|
cmp r2, #0 @ Found EOS
|
||||||
beq .Lreturn
|
beq .Lreturn
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ ENTRY (strcpy)
|
||||||
pld [r0, #64]
|
pld [r0, #64]
|
||||||
pld [r1, #64]
|
pld [r1, #64]
|
||||||
|
|
||||||
@ For longer strings, we actaully need a stack frame.
|
@ For longer strings, we actually need a stack frame.
|
||||||
push { r4, r5, r6, r7 }
|
push { r4, r5, r6, r7 }
|
||||||
cfi_adjust_cfa_offset (16)
|
cfi_adjust_cfa_offset (16)
|
||||||
cfi_rel_offset (r4, 0)
|
cfi_rel_offset (r4, 0)
|
||||||
|
|
|
@ -39,12 +39,12 @@ ENTRY (strlen)
|
||||||
|
|
||||||
@ Loop until we find ...
|
@ Loop until we find ...
|
||||||
1: ldrb r2, [r0, #1]!
|
1: ldrb r2, [r0, #1]!
|
||||||
subs r3, r3, #1 @ ... the aligment point
|
subs r3, r3, #1 @ ... the alignment point
|
||||||
it ne
|
it ne
|
||||||
cmpne r2, #0 @ ... or EOS
|
cmpne r2, #0 @ ... or EOS
|
||||||
bne 1b
|
bne 1b
|
||||||
|
|
||||||
@ Disambiguate the exit possibilites above
|
@ Disambiguate the exit possibilities above
|
||||||
cmp r2, #0 @ Found EOS
|
cmp r2, #0 @ Found EOS
|
||||||
beq 99f
|
beq 99f
|
||||||
add r0, r0, #1
|
add r0, r0, #1
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* strrchr -- find the last occurence of C in a nul-terminated string
|
/* strrchr -- find the last occurrence of C in a nul-terminated string
|
||||||
Copyright (C) 2013-2023 Free Software Foundation, Inc.
|
Copyright (C) 2013-2023 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ ENTRY (strrchr)
|
||||||
cmp r2, #0 @ Find EOS
|
cmp r2, #0 @ Find EOS
|
||||||
it eq
|
it eq
|
||||||
bxeq lr
|
bxeq lr
|
||||||
tst r3, #7 @ Find the aligment point
|
tst r3, #7 @ Find the alignment point
|
||||||
bne 1b
|
bne 1b
|
||||||
|
|
||||||
@ So now we're aligned. Now we actually need a stack frame.
|
@ So now we're aligned. Now we actually need a stack frame.
|
||||||
|
|
|
@ -76,7 +76,7 @@ void __arm_link_error (void);
|
||||||
mem, new, old, __ATOMIC_RELEASE)
|
mem, new, old, __ATOMIC_RELEASE)
|
||||||
|
|
||||||
/* Compare and exchange.
|
/* Compare and exchange.
|
||||||
For all "bool" routines, we return FALSE if exchange succesful. */
|
For all "bool" routines, we return FALSE if exchange successful. */
|
||||||
|
|
||||||
# define __arch_compare_and_exchange_bool_8_int(mem, newval, oldval, model) \
|
# define __arch_compare_and_exchange_bool_8_int(mem, newval, oldval, model) \
|
||||||
({__arm_link_error (); 0; })
|
({__arm_link_error (); 0; })
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
version 2.1 of the License, or (at your option) any later version.
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
The GNU C Library is distributed in the hope that it will be useful,
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; witout even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
Lesser General Public License for more details.
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ struct unw_eh_callback_data
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* Callback to determins if the PC lies within an object, and remember the
|
/* Callback to determines if the PC lies within an object, and remember the
|
||||||
location of the exception index table if it does. */
|
location of the exception index table if it does. */
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
|
@ -19,7 +19,7 @@ ifeq ($(subdir),nptl)
|
||||||
# This test relies on compiling part of the binary with EH information,
|
# This test relies on compiling part of the binary with EH information,
|
||||||
# part without, and unwinding through. The .ARM.exidx tables have
|
# part without, and unwinding through. The .ARM.exidx tables have
|
||||||
# start addresses for EH regions, but no end addresses. Every
|
# start addresses for EH regions, but no end addresses. Every
|
||||||
# region an exception needs to propogate through must have unwind
|
# region an exception needs to propagate through must have unwind
|
||||||
# information, or a previous function's unwind table may be used
|
# information, or a previous function's unwind table may be used
|
||||||
# by mistake.
|
# by mistake.
|
||||||
tests := $(filter-out tst-cleanupx4,$(tests))
|
tests := $(filter-out tst-cleanupx4,$(tests))
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
License along with the GNU C Library; if not, see
|
License along with the GNU C Library; if not, see
|
||||||
<https://www.gnu.org/licenses/>. */
|
<https://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
/* The default "nor" constraint produces unparseable memory references
|
/* The default "nor" constraint produces unparsable memory references
|
||||||
for constants. Omit the problematic "o" constraint. See bug 24164
|
for constants. Omit the problematic "o" constraint. See bug 24164
|
||||||
and GCC PR 89146. */
|
and GCC PR 89146. */
|
||||||
#define STAP_SDT_ARG_CONSTRAINT nr
|
#define STAP_SDT_ARG_CONSTRAINT nr
|
||||||
|
|
|
@ -33,7 +33,7 @@ __feupdateenv (const fenv_t *envp)
|
||||||
/* Install new environment. */
|
/* Install new environment. */
|
||||||
__fesetenv (envp);
|
__fesetenv (envp);
|
||||||
|
|
||||||
/* Raise the safed exception. Incidently for us the implementation
|
/* Raise the saved exception. Incidentally for us the implementation
|
||||||
defined format of the values in objects of type fexcept_t is the
|
defined format of the values in objects of type fexcept_t is the
|
||||||
same as the ones specified using the FE_* constants. */
|
same as the ones specified using the FE_* constants. */
|
||||||
feraiseexcept (temp);
|
feraiseexcept (temp);
|
||||||
|
|
|
@ -357,7 +357,7 @@ struct rtld_global
|
||||||
EXTERN size_t _dl_nns;
|
EXTERN size_t _dl_nns;
|
||||||
|
|
||||||
/* During the program run we must not modify the global data of
|
/* During the program run we must not modify the global data of
|
||||||
loaded shared object simultanously in two threads. Therefore we
|
loaded shared object simultaneously in two threads. Therefore we
|
||||||
protect `_dl_open' and `_dl_close' in dl-close.c.
|
protect `_dl_open' and `_dl_close' in dl-close.c.
|
||||||
|
|
||||||
This must be a recursive lock since the initializer function of
|
This must be a recursive lock since the initializer function of
|
||||||
|
@ -1181,7 +1181,7 @@ extern struct link_map * _dl_get_dl_main_map (void)
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Perform early memory allocation, avoding a TCB dependency.
|
/* Perform early memory allocation, avoiding a TCB dependency.
|
||||||
Terminate the process if allocation fails. May attempt to use
|
Terminate the process if allocation fails. May attempt to use
|
||||||
brk. */
|
brk. */
|
||||||
void *_dl_early_allocate (size_t size) attribute_hidden;
|
void *_dl_early_allocate (size_t size) attribute_hidden;
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Makros to generate eh_frame unwind information. */
|
/* Macros to generate eh_frame unwind information. */
|
||||||
#ifdef __ASSEMBLER__
|
#ifdef __ASSEMBLER__
|
||||||
# define cfi_startproc .cfi_startproc
|
# define cfi_startproc .cfi_startproc
|
||||||
# define cfi_endproc .cfi_endproc
|
# define cfi_endproc .cfi_endproc
|
||||||
|
|
|
@ -133,7 +133,7 @@ _Unwind_IteratePhdrCallback (struct dl_phdr_info *info, size_t size, void *ptr)
|
||||||
data->dbase = NULL;
|
data->dbase = NULL;
|
||||||
if (p_dynamic)
|
if (p_dynamic)
|
||||||
{
|
{
|
||||||
/* For dynamicly linked executables and shared libraries,
|
/* For dynamically linked executables and shared libraries,
|
||||||
DT_PLTGOT is the gp value for that object. */
|
DT_PLTGOT is the gp value for that object. */
|
||||||
ElfW(Dyn) *dyn = (ElfW(Dyn) *)(p_dynamic->p_vaddr + load_base);
|
ElfW(Dyn) *dyn = (ElfW(Dyn) *)(p_dynamic->p_vaddr + load_base);
|
||||||
for (; dyn->d_tag != DT_NULL ; dyn++)
|
for (; dyn->d_tag != DT_NULL ; dyn++)
|
||||||
|
|
|
@ -48,7 +48,7 @@
|
||||||
#define TCP_DEFER_ACCEPT 9 /* Wake up listener only when data arrive */
|
#define TCP_DEFER_ACCEPT 9 /* Wake up listener only when data arrive */
|
||||||
#define TCP_WINDOW_CLAMP 10 /* Bound advertised window */
|
#define TCP_WINDOW_CLAMP 10 /* Bound advertised window */
|
||||||
#define TCP_INFO 11 /* Information about this connection. */
|
#define TCP_INFO 11 /* Information about this connection. */
|
||||||
#define TCP_QUICKACK 12 /* Bock/reenable quick ACKs. */
|
#define TCP_QUICKACK 12 /* Bock/re-enable quick ACKs. */
|
||||||
#define TCP_CONGESTION 13 /* Congestion control algorithm. */
|
#define TCP_CONGESTION 13 /* Congestion control algorithm. */
|
||||||
#define TCP_MD5SIG 14 /* TCP MD5 Signature (RFC2385) */
|
#define TCP_MD5SIG 14 /* TCP MD5 Signature (RFC2385) */
|
||||||
#define TCP_COOKIE_TRANSACTIONS 15 /* TCP Cookie Transactions */
|
#define TCP_COOKIE_TRANSACTIONS 15 /* TCP Cookie Transactions */
|
||||||
|
@ -209,7 +209,7 @@ enum
|
||||||
# define TCPI_OPT_TIMESTAMPS 1
|
# define TCPI_OPT_TIMESTAMPS 1
|
||||||
# define TCPI_OPT_SACK 2
|
# define TCPI_OPT_SACK 2
|
||||||
# define TCPI_OPT_WSCALE 4
|
# define TCPI_OPT_WSCALE 4
|
||||||
# define TCPI_OPT_ECN 8 /* ECN was negociated at TCP session init */
|
# define TCPI_OPT_ECN 8 /* ECN was negotiated at TCP session init */
|
||||||
# define TCPI_OPT_ECN_SEEN 16 /* we received at least one packet with ECT */
|
# define TCPI_OPT_ECN_SEEN 16 /* we received at least one packet with ECT */
|
||||||
# define TCPI_OPT_SYN_DATA 32 /* SYN-ACK acked data in SYN sent or rcvd */
|
# define TCPI_OPT_SYN_DATA 32 /* SYN-ACK acked data in SYN sent or rcvd */
|
||||||
|
|
||||||
|
@ -307,7 +307,7 @@ enum
|
||||||
/* Flags for both getsockopt and setsockopt */
|
/* Flags for both getsockopt and setsockopt */
|
||||||
#define TCP_COOKIE_IN_ALWAYS (1 << 0) /* Discard SYN without cookie */
|
#define TCP_COOKIE_IN_ALWAYS (1 << 0) /* Discard SYN without cookie */
|
||||||
#define TCP_COOKIE_OUT_NEVER (1 << 1) /* Prohibit outgoing cookies,
|
#define TCP_COOKIE_OUT_NEVER (1 << 1) /* Prohibit outgoing cookies,
|
||||||
* supercedes everything. */
|
* supersedes everything. */
|
||||||
|
|
||||||
/* Flags for getsockopt */
|
/* Flags for getsockopt */
|
||||||
#define TCP_S_DATA_IN (1 << 2) /* Was data received? */
|
#define TCP_S_DATA_IN (1 << 2) /* Was data received? */
|
||||||
|
|
|
@ -61,7 +61,7 @@ __longjmp (__jmp_buf env, int val)
|
||||||
"ldw 76(%1), %%r30\n\t"
|
"ldw 76(%1), %%r30\n\t"
|
||||||
/* Load return pointer. */
|
/* Load return pointer. */
|
||||||
"ldw 80(%1), %%rp\n\t"
|
"ldw 80(%1), %%rp\n\t"
|
||||||
/* Ues a spare caller saves register. */
|
/* Use a spare caller saves register. */
|
||||||
"ldo 88(%1),%%r25\n\t"
|
"ldo 88(%1),%%r25\n\t"
|
||||||
/* Load callee saves from fr12 to fr21. */
|
/* Load callee saves from fr12 to fr21. */
|
||||||
"fldds,ma 8(%%r25), %%fr12\n\t"
|
"fldds,ma 8(%%r25), %%fr12\n\t"
|
||||||
|
|
|
@ -252,7 +252,7 @@ _dl_make_fptr (struct link_map *map, const ElfW(Sym) *sym,
|
||||||
if (__builtin_expect (COMPARE_AND_SWAP (&ftab[symidx], (ElfW(Addr)) NULL,
|
if (__builtin_expect (COMPARE_AND_SWAP (&ftab[symidx], (ElfW(Addr)) NULL,
|
||||||
fdesc), 1))
|
fdesc), 1))
|
||||||
{
|
{
|
||||||
/* Noone has updated the entry and the new function
|
/* No one has updated the entry and the new function
|
||||||
descriptor has been installed. */
|
descriptor has been installed. */
|
||||||
#if 0
|
#if 0
|
||||||
const char *strtab
|
const char *strtab
|
||||||
|
|
|
@ -272,7 +272,7 @@ L(cpe):
|
||||||
addi 63, %r28, %r28
|
addi 63, %r28, %r28
|
||||||
depi 0, 27, 6, %r28
|
depi 0, 27, 6, %r28
|
||||||
|
|
||||||
/* Calcualte start of stack copy */
|
/* Calculate start of stack copy */
|
||||||
ldo -192(%sp),%r2
|
ldo -192(%sp),%r2
|
||||||
|
|
||||||
/* Increate the stack by *framesizep */
|
/* Increate the stack by *framesizep */
|
||||||
|
@ -281,14 +281,14 @@ L(cpe):
|
||||||
/* Save stack pointer */
|
/* Save stack pointer */
|
||||||
stw %r1, -4(%sp)
|
stw %r1, -4(%sp)
|
||||||
|
|
||||||
/* Single byte copy of prevous stack onto newly allocated stack */
|
/* Single byte copy of previous stack onto newly allocated stack */
|
||||||
1: ldb %r28(%r2), %r1
|
1: ldb %r28(%r2), %r1
|
||||||
add %r28, %sp, %r26
|
add %r28, %sp, %r26
|
||||||
stb %r1, 0(%r26)
|
stb %r1, 0(%r26)
|
||||||
addi,< -1,%r28,%r28
|
addi,< -1,%r28,%r28
|
||||||
b,n 1b
|
b,n 1b
|
||||||
|
|
||||||
/* Retore r28 and r27 and r2 already points at -192(%sp) */
|
/* Restore r28 and r27 and r2 already points at -192(%sp) */
|
||||||
ldw 0(%r2),%r28
|
ldw 0(%r2),%r28
|
||||||
ldw 84(%r2),%r26
|
ldw 84(%r2),%r26
|
||||||
|
|
||||||
|
@ -324,7 +324,7 @@ L(cont):
|
||||||
|
|
||||||
/* Unwind the stack */
|
/* Unwind the stack */
|
||||||
ldo 192(%sp),%sp
|
ldo 192(%sp),%sp
|
||||||
/* Retore callers rp */
|
/* Restore callers rp */
|
||||||
ldw -20(%sp),%rp
|
ldw -20(%sp),%rp
|
||||||
/* Return */
|
/* Return */
|
||||||
bv,n 0(%r2)
|
bv,n 0(%r2)
|
||||||
|
|
|
@ -27,7 +27,7 @@ struct __pthread_mutex_s
|
||||||
/* KIND must stay at this position in the structure to maintain
|
/* KIND must stay at this position in the structure to maintain
|
||||||
binary compatibility with static initializers. */
|
binary compatibility with static initializers. */
|
||||||
int __kind;
|
int __kind;
|
||||||
/* The old 4-word 16-byte aligned lock. This is initalized
|
/* The old 4-word 16-byte aligned lock. This is initialized
|
||||||
to all ones by the Linuxthreads PTHREAD_MUTEX_INITIALIZER.
|
to all ones by the Linuxthreads PTHREAD_MUTEX_INITIALIZER.
|
||||||
Unused in NPTL. */
|
Unused in NPTL. */
|
||||||
int __glibc_compat_padding[4];
|
int __glibc_compat_padding[4];
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Cancelation. Generic version.
|
/* Cancellation. Generic version.
|
||||||
Copyright (C) 2002-2023 Free Software Foundation, Inc.
|
Copyright (C) 2002-2023 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
|
|
@ -177,7 +177,7 @@ __pthread_cond_timedwait_internal (pthread_cond_t *cond,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* We're still in the list of waiters. Noone attempted to wake us up,
|
/* We're still in the list of waiters. No one attempted to wake us up,
|
||||||
i.e. we timed out. */
|
i.e. we timed out. */
|
||||||
assert (err == ETIMEDOUT);
|
assert (err == ETIMEDOUT);
|
||||||
__pthread_dequeue (self);
|
__pthread_dequeue (self);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* pthread_key internal declatations for the Hurd version.
|
/* pthread_key internal declarations for the Hurd version.
|
||||||
Copyright (C) 2002-2023 Free Software Foundation, Inc.
|
Copyright (C) 2002-2023 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
|
|
@ -92,7 +92,7 @@ __pthread_rwlock_timedrdlock_internal (struct __pthread_rwlock *rwlock,
|
||||||
drain = err ? 1 : 0;
|
drain = err ? 1 : 0;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* We're still in the queue. Noone attempted to wake us up, i.e. we
|
/* We're still in the queue. No one attempted to wake us up, i.e. we
|
||||||
timed out. */
|
timed out. */
|
||||||
__pthread_dequeue (self);
|
__pthread_dequeue (self);
|
||||||
drain = 0;
|
drain = 0;
|
||||||
|
|
|
@ -78,7 +78,7 @@ __pthread_rwlock_timedwrlock_internal (struct __pthread_rwlock *rwlock,
|
||||||
drain = err ? 1 : 0;
|
drain = err ? 1 : 0;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* We're still in the queue. Noone attempted to wake us up, i.e. we
|
/* We're still in the queue. No one attempted to wake us up, i.e. we
|
||||||
timed out. */
|
timed out. */
|
||||||
__pthread_dequeue (self);
|
__pthread_dequeue (self);
|
||||||
drain = 0;
|
drain = 0;
|
||||||
|
|
|
@ -89,7 +89,7 @@ __pthread_rwlock_unlock (pthread_rwlock_t *rwlock)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Noone is waiting. Just unlock it. */
|
/* No one is waiting. Just unlock it. */
|
||||||
|
|
||||||
__pthread_spin_unlock (&rwlock->__held);
|
__pthread_spin_unlock (&rwlock->__held);
|
||||||
__pthread_spin_unlock (&rwlock->__lock);
|
__pthread_spin_unlock (&rwlock->__lock);
|
||||||
|
|
|
@ -623,7 +623,7 @@ extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t *__restrict
|
||||||
int *__restrict __pshared)
|
int *__restrict __pshared)
|
||||||
__THROW __nonnull ((1, 2));
|
__THROW __nonnull ((1, 2));
|
||||||
|
|
||||||
/* Set the value of the process shared atrribute in *ATTR to
|
/* Set the value of the process shared attribute in *ATTR to
|
||||||
PSHARED. */
|
PSHARED. */
|
||||||
extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr,
|
extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr,
|
||||||
int __pshared)
|
int __pshared)
|
||||||
|
@ -645,7 +645,7 @@ extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr,
|
||||||
# include <bits/types/struct___pthread_rwlock.h>
|
# include <bits/types/struct___pthread_rwlock.h>
|
||||||
|
|
||||||
# define PTHREAD_RWLOCK_INITIALIZER __PTHREAD_RWLOCK_INITIALIZER
|
# define PTHREAD_RWLOCK_INITIALIZER __PTHREAD_RWLOCK_INITIALIZER
|
||||||
/* Create a rwlock object with attributes given by ATTR and strore the
|
/* Create a rwlock object with attributes given by ATTR and store the
|
||||||
result in *RWLOCK. */
|
result in *RWLOCK. */
|
||||||
extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
|
extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
|
||||||
const pthread_rwlockattr_t *__restrict __attr)
|
const pthread_rwlockattr_t *__restrict __attr)
|
||||||
|
@ -709,7 +709,7 @@ extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Cancelation. */
|
/* Cancellation. */
|
||||||
|
|
||||||
/* Register a cleanup handler. */
|
/* Register a cleanup handler. */
|
||||||
extern void pthread_cleanup_push (void (*__routine) (void *), void *__arg);
|
extern void pthread_cleanup_push (void (*__routine) (void *), void *__arg);
|
||||||
|
@ -769,7 +769,7 @@ extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t *__restri
|
||||||
int *__restrict __pshared)
|
int *__restrict __pshared)
|
||||||
__THROW __nonnull ((1, 2));
|
__THROW __nonnull ((1, 2));
|
||||||
|
|
||||||
/* Set the value of the process shared atrribute in *ATTR to
|
/* Set the value of the process shared attribute in *ATTR to
|
||||||
PSHARED. */
|
PSHARED. */
|
||||||
extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr,
|
extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr,
|
||||||
int __pshared)
|
int __pshared)
|
||||||
|
@ -878,12 +878,12 @@ extern int pthread_getcpuclockid (pthread_t __thr, __clockid_t *__clock)
|
||||||
|
|
||||||
/* Scheduling. */
|
/* Scheduling. */
|
||||||
|
|
||||||
/* Return thread THREAD's scheduling paramters. */
|
/* Return thread THREAD's scheduling parameters. */
|
||||||
extern int pthread_getschedparam (pthread_t __thr, int *__restrict __policy,
|
extern int pthread_getschedparam (pthread_t __thr, int *__restrict __policy,
|
||||||
struct sched_param *__restrict __param)
|
struct sched_param *__restrict __param)
|
||||||
__THROW __nonnull ((2, 3));
|
__THROW __nonnull ((2, 3));
|
||||||
|
|
||||||
/* Set thread THREAD's scheduling paramters. */
|
/* Set thread THREAD's scheduling parameters. */
|
||||||
extern int pthread_setschedparam (pthread_t __thr, int __policy,
|
extern int pthread_setschedparam (pthread_t __thr, int __policy,
|
||||||
const struct sched_param *__param)
|
const struct sched_param *__param)
|
||||||
__THROW __nonnull ((3));
|
__THROW __nonnull ((3));
|
||||||
|
|
|
@ -46,7 +46,7 @@ struct timer_node __timer_array[TIMER_MAX];
|
||||||
/* Global lock to protect operation on the lists. */
|
/* Global lock to protect operation on the lists. */
|
||||||
pthread_mutex_t __timer_mutex = PTHREAD_MUTEX_INITIALIZER;
|
pthread_mutex_t __timer_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||||
|
|
||||||
/* Variable to protext initialization. */
|
/* Variable to protect initialization. */
|
||||||
pthread_once_t __timer_init_once_control = PTHREAD_ONCE_INIT;
|
pthread_once_t __timer_init_once_control = PTHREAD_ONCE_INIT;
|
||||||
|
|
||||||
/* Nonzero if initialization of timer implementation failed. */
|
/* Nonzero if initialization of timer implementation failed. */
|
||||||
|
|
|
@ -39,7 +39,7 @@ __feupdateenv (const fenv_t *envp)
|
||||||
/* Install new environment. */
|
/* Install new environment. */
|
||||||
__fesetenv (envp);
|
__fesetenv (envp);
|
||||||
|
|
||||||
/* Raise the saved exception. Incidently for us the implementation
|
/* Raise the saved exception. Incidentally for us the implementation
|
||||||
defined format of the values in objects of type fexcept_t is the
|
defined format of the values in objects of type fexcept_t is the
|
||||||
same as the ones specified using the FE_* constants. */
|
same as the ones specified using the FE_* constants. */
|
||||||
__feraiseexcept ((int) temp);
|
__feraiseexcept ((int) temp);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Compute hash alue for given string according to ELF standard.
|
/* Compute hash value for given string according to ELF standard.
|
||||||
Copyright (C) 1998-2023 Free Software Foundation, Inc.
|
Copyright (C) 1998-2023 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
|
|
@ -72,7 +72,7 @@
|
||||||
|
|
||||||
/* Warning!
|
/* Warning!
|
||||||
wmemcmp has to use SIGNED comparison for elements.
|
wmemcmp has to use SIGNED comparison for elements.
|
||||||
memcmp has to use UNSIGNED comparison for elemnts.
|
memcmp has to use UNSIGNED comparison for elements.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.section .text.sse4.2,"ax",@progbits
|
.section .text.sse4.2,"ax",@progbits
|
||||||
|
|
|
@ -44,7 +44,7 @@
|
||||||
|
|
||||||
/* Warning!
|
/* Warning!
|
||||||
wmemcmp has to use SIGNED comparison for elements.
|
wmemcmp has to use SIGNED comparison for elements.
|
||||||
memcmp has to use UNSIGNED comparison for elemnts.
|
memcmp has to use UNSIGNED comparison for elements.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
atom_text_section
|
atom_text_section
|
||||||
|
|
|
@ -67,7 +67,7 @@
|
||||||
movl - 4 byte
|
movl - 4 byte
|
||||||
movlpd - 8 byte
|
movlpd - 8 byte
|
||||||
movaps - 16 byte - requires 16 byte alignment
|
movaps - 16 byte - requires 16 byte alignment
|
||||||
of sourse and destination adresses.
|
of source and destination addresses.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* strcspn (str, ss) -- Return the length of the initial segement of STR
|
/* strcspn (str, ss) -- Return the length of the initial segment of STR
|
||||||
which contains no characters from SS.
|
which contains no characters from SS.
|
||||||
For Intel 80x86, x>=3.
|
For Intel 80x86, x>=3.
|
||||||
Copyright (C) 1994-2023 Free Software Foundation, Inc.
|
Copyright (C) 1994-2023 Free Software Foundation, Inc.
|
||||||
|
|
|
@ -370,7 +370,7 @@ ENTRY(_dl_runtime_profile)
|
||||||
{ .mmi
|
{ .mmi
|
||||||
and r15 = -16, r15
|
and r15 = -16, r15
|
||||||
;;
|
;;
|
||||||
/* We don't copy the 16byte scatch area. Prepare r16/r17 as
|
/* We don't copy the 16byte scratch area. Prepare r16/r17 as
|
||||||
destination. */
|
destination. */
|
||||||
sub r16 = r12, r15
|
sub r16 = r12, r15
|
||||||
sub r17 = r12, r15
|
sub r17 = r12, r15
|
||||||
|
@ -390,7 +390,7 @@ ENTRY(_dl_runtime_profile)
|
||||||
;;
|
;;
|
||||||
}
|
}
|
||||||
{ .mii
|
{ .mii
|
||||||
/* Skip the 16byte scatch area. Prepare r2/r3 as source. */
|
/* Skip the 16byte scratch area. Prepare r2/r3 as source. */
|
||||||
adds r2 = 16, loc10
|
adds r2 = 16, loc10
|
||||||
adds r3 = 24, loc10
|
adds r3 = 24, loc10
|
||||||
mov ar.lc = r15
|
mov ar.lc = r15
|
||||||
|
|
|
@ -50,7 +50,7 @@
|
||||||
//=========================================
|
//=========================================
|
||||||
// The acos function computes the principal value of the arc cosine of x.
|
// The acos function computes the principal value of the arc cosine of x.
|
||||||
// acos(0) returns Pi/2, acos(1) returns 0, acos(-1) returns Pi.
|
// acos(0) returns Pi/2, acos(1) returns 0, acos(-1) returns Pi.
|
||||||
// A doman error occurs for arguments not in the range [-1,+1].
|
// A domain error occurs for arguments not in the range [-1,+1].
|
||||||
//
|
//
|
||||||
// The acos function returns the arc cosine in the range [0, Pi] radians.
|
// The acos function returns the arc cosine in the range [0, Pi] radians.
|
||||||
//
|
//
|
||||||
|
@ -100,7 +100,7 @@
|
||||||
// Return acos(1.0) = 0.0, acos(-1.0) = Pi
|
// Return acos(1.0) = 0.0, acos(-1.0) = Pi
|
||||||
//
|
//
|
||||||
// 5. 1.0 < |x| <= +INF
|
// 5. 1.0 < |x| <= +INF
|
||||||
// A doman error occurs for arguments not in the range [-1,+1]
|
// A domain error occurs for arguments not in the range [-1,+1]
|
||||||
//
|
//
|
||||||
// 6. x = [S,Q]NaN
|
// 6. x = [S,Q]NaN
|
||||||
// Return acos(x) = QNaN
|
// Return acos(x) = QNaN
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
// Description
|
// Description
|
||||||
//=========================================
|
//=========================================
|
||||||
// The acosf function computes the principle value of the arc sine of x.
|
// The acosf function computes the principle value of the arc sine of x.
|
||||||
// A doman error occurs for arguments not in the range [-1,+1].
|
// A domain error occurs for arguments not in the range [-1,+1].
|
||||||
|
|
||||||
// The acosf function returns the arc cosine in the range [0, +pi] radians.
|
// The acosf function returns the arc cosine in the range [0, +pi] radians.
|
||||||
// acos(1) returns +0
|
// acos(1) returns +0
|
||||||
|
|
|
@ -50,7 +50,7 @@
|
||||||
//=========================================
|
//=========================================
|
||||||
// The asin function computes the principal value of the arc sine of x.
|
// The asin function computes the principal value of the arc sine of x.
|
||||||
// asin(0) returns 0, asin(1) returns pi/2, asin(-1) returns -pi/2.
|
// asin(0) returns 0, asin(1) returns pi/2, asin(-1) returns -pi/2.
|
||||||
// A doman error occurs for arguments not in the range [-1,+1].
|
// A domain error occurs for arguments not in the range [-1,+1].
|
||||||
//
|
//
|
||||||
// The asin function returns the arc sine in the range [-pi/2, +pi/2] radians.
|
// The asin function returns the arc sine in the range [-pi/2, +pi/2] radians.
|
||||||
//
|
//
|
||||||
|
@ -98,7 +98,7 @@
|
||||||
// Return asin(x) = sign(x)*Pi/2
|
// Return asin(x) = sign(x)*Pi/2
|
||||||
//
|
//
|
||||||
// 5. 1.0 < |x| <= +INF
|
// 5. 1.0 < |x| <= +INF
|
||||||
// A doman error occurs for arguments not in the range [-1,+1]
|
// A domain error occurs for arguments not in the range [-1,+1]
|
||||||
//
|
//
|
||||||
// 6. x = [S,Q]NaN
|
// 6. x = [S,Q]NaN
|
||||||
// Return asin(x) = QNaN
|
// Return asin(x) = QNaN
|
||||||
|
|
|
@ -56,12 +56,12 @@
|
||||||
// Description
|
// Description
|
||||||
//=========================================
|
//=========================================
|
||||||
// The asinf function computes the arc sine of x in the range [-pi,+pi].
|
// The asinf function computes the arc sine of x in the range [-pi,+pi].
|
||||||
// A doman error occurs for arguments not in the range [-1,+1].
|
// A domain error occurs for arguments not in the range [-1,+1].
|
||||||
// asinf(+-0) returns +-0
|
// asinf(+-0) returns +-0
|
||||||
// asinf(x) returns a Nan and raises the invalid exception for |x| >1
|
// asinf(x) returns a Nan and raises the invalid exception for |x| >1
|
||||||
|
|
||||||
// The acosf function returns the arc cosine in the range [0, +pi] radians.
|
// The acosf function returns the arc cosine in the range [0, +pi] radians.
|
||||||
// A doman error occurs for arguments not in the range [-1,+1].
|
// A domain error occurs for arguments not in the range [-1,+1].
|
||||||
// acosf(1) returns +0
|
// acosf(1) returns +0
|
||||||
// acosf(x) returns a Nan and raises the invalid exception for |x| >1
|
// acosf(x) returns a Nan and raises the invalid exception for |x| >1
|
||||||
|
|
||||||
|
|
|
@ -121,7 +121,7 @@
|
||||||
// L2 = 1.0/log(10)
|
// L2 = 1.0/log(10)
|
||||||
//
|
//
|
||||||
// So common code with two different entry points those set pointers
|
// So common code with two different entry points those set pointers
|
||||||
// to the base address of coresponding data sets containing values
|
// to the base address of corresponding data sets containing values
|
||||||
// of L2,T and prepare integer representation of L1 needed for following
|
// of L2,T and prepare integer representation of L1 needed for following
|
||||||
// setf instruction.
|
// setf instruction.
|
||||||
//
|
//
|
||||||
|
|
|
@ -118,7 +118,7 @@
|
||||||
// L2 = 1.0/log(10)
|
// L2 = 1.0/log(10)
|
||||||
//
|
//
|
||||||
// So common code with two different entry points those set pointers
|
// So common code with two different entry points those set pointers
|
||||||
// to the base address of coresponding data sets containing values
|
// to the base address of corresponding data sets containing values
|
||||||
// of L2,T and prepare integer representation of L1 needed for following
|
// of L2,T and prepare integer representation of L1 needed for following
|
||||||
// setf instruction can be used.
|
// setf instruction can be used.
|
||||||
//
|
//
|
||||||
|
@ -171,7 +171,7 @@
|
||||||
// 0xFFFEFF00000000000000 and 0xFFFF8080000000000000 correspondingly.
|
// 0xFFFEFF00000000000000 and 0xFFFF8080000000000000 correspondingly.
|
||||||
// As far as biased exponent of x here can be equal only to 0xFFFE or
|
// As far as biased exponent of x here can be equal only to 0xFFFE or
|
||||||
// 0xFFFF we need to test only last bit of it. Also signifigand always
|
// 0xFFFF we need to test only last bit of it. Also signifigand always
|
||||||
// has implicit bit set to 1 that can be exluded from comparison.
|
// has implicit bit set to 1 that can be excluded from comparison.
|
||||||
// Thus it's quite enough to generate 64-bit integer bits of that are
|
// Thus it's quite enough to generate 64-bit integer bits of that are
|
||||||
// ix[63] = biased_exponent_of_x[0] and ix[62-0] = significand_of_x[62-0]
|
// ix[63] = biased_exponent_of_x[0] and ix[62-0] = significand_of_x[62-0]
|
||||||
// and compare it with 0x7F00000000000000 and 0x80800000000000000 (those
|
// and compare it with 0x7F00000000000000 and 0x80800000000000000 (those
|
||||||
|
|
|
@ -108,7 +108,7 @@
|
||||||
//
|
//
|
||||||
// Log(1/Cm) = log(1/frcpa(1+m/256)) where m goes from 0 to 255.
|
// Log(1/Cm) = log(1/frcpa(1+m/256)) where m goes from 0 to 255.
|
||||||
//
|
//
|
||||||
// We tabluate as two doubles, T and t, where T +t is the value itself.
|
// We tabulate as two doubles, T and t, where T +t is the value itself.
|
||||||
//
|
//
|
||||||
// Log(x) = (K Log(2)_hi + T) + (Log(2)_hi + t) + Log( 1 + (Bx-1))
|
// Log(x) = (K Log(2)_hi + T) + (Log(2)_hi + t) + Log( 1 + (Bx-1))
|
||||||
// Log(x) = G + delta + Log( 1 + (Bx-1))
|
// Log(x) = G + delta + Log( 1 + (Bx-1))
|
||||||
|
@ -357,7 +357,7 @@
|
||||||
// +0 -inf +inf error 27 33 divide-by-zero
|
// +0 -inf +inf error 27 33 divide-by-zero
|
||||||
// -0 -inf +inf error 27 33 divide-by-zero
|
// -0 -inf +inf error 27 33 divide-by-zero
|
||||||
|
|
||||||
// X zero Y positve
|
// X zero Y positive
|
||||||
// +0 +odd integer +0
|
// +0 +odd integer +0
|
||||||
// -0 +odd integer -0
|
// -0 +odd integer -0
|
||||||
// +0 !+odd integer +0
|
// +0 !+odd integer +0
|
||||||
|
@ -991,7 +991,7 @@ POW_COMMON:
|
||||||
}
|
}
|
||||||
;;
|
;;
|
||||||
|
|
||||||
// Note POW_Xm1 and POW_r1 are used interchangably
|
// Note POW_Xm1 and POW_r1 are used interchangeably
|
||||||
{ .mfi
|
{ .mfi
|
||||||
alloc r32=ar.pfs,2,19,4,0
|
alloc r32=ar.pfs,2,19,4,0
|
||||||
fms.s1 POW_r = POW_B, POW_NORM_X,f1
|
fms.s1 POW_r = POW_B, POW_NORM_X,f1
|
||||||
|
|
|
@ -108,7 +108,7 @@
|
||||||
//
|
//
|
||||||
// Log(1/Cm) = log(1/frcpa(1+m/256)) where m goes from 0 to 255.
|
// Log(1/Cm) = log(1/frcpa(1+m/256)) where m goes from 0 to 255.
|
||||||
//
|
//
|
||||||
// We tabluate as one double, T for single precision power
|
// We tabulate as one double, T for single precision power
|
||||||
//
|
//
|
||||||
// Log(x) = (K Log(2)_hi + T) + (K Log(2)_lo) + Log( 1 + (Bx-1))
|
// Log(x) = (K Log(2)_hi + T) + (K Log(2)_lo) + Log( 1 + (Bx-1))
|
||||||
// Log(x) = G + delta + Log( 1 + (Bx-1))
|
// Log(x) = G + delta + Log( 1 + (Bx-1))
|
||||||
|
@ -353,7 +353,7 @@
|
||||||
// +0 -inf +inf error 27 33 divide-by-zero
|
// +0 -inf +inf error 27 33 divide-by-zero
|
||||||
// -0 -inf +inf error 27 33 divide-by-zero
|
// -0 -inf +inf error 27 33 divide-by-zero
|
||||||
|
|
||||||
// X zero Y positve
|
// X zero Y positive
|
||||||
// +0 +odd integer +0
|
// +0 +odd integer +0
|
||||||
// -0 +odd integer -0
|
// -0 +odd integer -0
|
||||||
// +0 !+odd integer +0
|
// +0 !+odd integer +0
|
||||||
|
@ -927,7 +927,7 @@ WEAK_LIBM_ENTRY(powf)
|
||||||
fclass.m p14,p0 = f8, 0x07
|
fclass.m p14,p0 = f8, 0x07
|
||||||
nop.i 999
|
nop.i 999
|
||||||
}
|
}
|
||||||
// Note POW_Xm1 and POW_r1 are used interchangably
|
// Note POW_Xm1 and POW_r1 are used interchangeably
|
||||||
{ .mfb
|
{ .mfb
|
||||||
nop.m 999
|
nop.m 999
|
||||||
(p8) fnma.s1 POW_Xm1 = POW_Xp1,f1,f0
|
(p8) fnma.s1 POW_Xm1 = POW_Xp1,f1,f0
|
||||||
|
|
|
@ -161,7 +161,7 @@
|
||||||
// precision number.
|
// precision number.
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// Claculation of logarithm
|
// Calculation of logarithm
|
||||||
// ------------------------
|
// ------------------------
|
||||||
// Consider x = 2^N * xf so
|
// Consider x = 2^N * xf so
|
||||||
// ln(x) = ln(frcpa(x)*x/frcpa(x))
|
// ln(x) = ln(frcpa(x)*x/frcpa(x))
|
||||||
|
|
|
@ -219,7 +219,7 @@
|
||||||
// EDP_Root is the exact value of the corresponding root rounded to double
|
// EDP_Root is the exact value of the corresponding root rounded to double
|
||||||
// extended precision. So, we have 35 different polynomials which make our
|
// extended precision. So, we have 35 different polynomials which make our
|
||||||
// table rather big. We may hope that x falls in root "neighbourhood"
|
// table rather big. We may hope that x falls in root "neighbourhood"
|
||||||
// quite rarely -> ther might be no need in frequent use of different
|
// quite rarely -> there might be no need in frequent use of different
|
||||||
// polynomials.
|
// polynomials.
|
||||||
// A0, A1, A2, A3 are represented as pairs of double precision numbers,
|
// A0, A1, A2, A3 are represented as pairs of double precision numbers,
|
||||||
// A4, A5 are long doubles, and to decrease the size of the table we
|
// A4, A5 are long doubles, and to decrease the size of the table we
|
||||||
|
@ -2423,7 +2423,7 @@ _deno_back_to_main_path:
|
||||||
adds rPolDataPtr = 3440, rTbl3Addr
|
adds rPolDataPtr = 3440, rTbl3Addr
|
||||||
}
|
}
|
||||||
{ .mfi
|
{ .mfi
|
||||||
// (i*16)*4 + (i*16)*8 - offsett of polynomial on range [-6.0, -0.75]
|
// (i*16)*4 + (i*16)*8 - offset of polynomial on range [-6.0, -0.75]
|
||||||
shladd rTmpPtr = rIndexPol, 2, rIndexPol
|
shladd rTmpPtr = rIndexPol, 2, rIndexPol
|
||||||
fma.s1 fXSqr = FR_FracX, FR_FracX, f0 // y^2
|
fma.s1 fXSqr = FR_FracX, FR_FracX, f0 // y^2
|
||||||
// point to left "near root" bound
|
// point to left "near root" bound
|
||||||
|
@ -2433,7 +2433,7 @@ _deno_back_to_main_path:
|
||||||
{ .mfi
|
{ .mfi
|
||||||
ldfpd fLnSin34, fLnSin36 = [rTmpPtr3], 16
|
ldfpd fLnSin34, fLnSin36 = [rTmpPtr3], 16
|
||||||
fma.s1 fRcpX = fInvX, fRcpX, fRcpX // end of 2nd NR iteration
|
fma.s1 fRcpX = fInvX, fRcpX, fRcpX // end of 2nd NR iteration
|
||||||
// add special offsett if -4 < x <= -3.0
|
// add special offset if -4 < x <= -3.0
|
||||||
(p6) adds rPolDataPtr = 640, rPolDataPtr
|
(p6) adds rPolDataPtr = 640, rPolDataPtr
|
||||||
}
|
}
|
||||||
{ .mfi
|
{ .mfi
|
||||||
|
@ -2448,7 +2448,7 @@ _deno_back_to_main_path:
|
||||||
// left bound of "near root" range
|
// left bound of "near root" range
|
||||||
(p12) ld8 rLeftBound = [rRootsBndAddr]
|
(p12) ld8 rLeftBound = [rRootsBndAddr]
|
||||||
fmerge.se fNormDx = f1, fDx // significand of DeltaX
|
fmerge.se fNormDx = f1, fDx // significand of DeltaX
|
||||||
// base address + offsett for polynomial coeff. on range [-6.0, -0.75]
|
// base address + offset for polynomial coeff. on range [-6.0, -0.75]
|
||||||
add rPolDataPtr = rPolDataPtr, rTmpPtr
|
add rPolDataPtr = rPolDataPtr, rTmpPtr
|
||||||
}
|
}
|
||||||
{ .mfi
|
{ .mfi
|
||||||
|
@ -4565,7 +4565,7 @@ _negRoots:
|
||||||
nop.i 0
|
nop.i 0
|
||||||
}
|
}
|
||||||
{ .mfi
|
{ .mfi
|
||||||
add rPolDataPtr = rPolDataPtr, rTmpPtr // begin + offsett
|
add rPolDataPtr = rPolDataPtr, rTmpPtr // begin + offset
|
||||||
nop.f 0
|
nop.f 0
|
||||||
nop.i 0
|
nop.i 0
|
||||||
}
|
}
|
||||||
|
|
|
@ -133,7 +133,7 @@
|
||||||
// ==============
|
// ==============
|
||||||
//
|
//
|
||||||
// This describes the algorithm in the most natural way using
|
// This describes the algorithm in the most natural way using
|
||||||
// unsigned interger multiplication. The implementation section
|
// unsigned integer multiplication. The implementation section
|
||||||
// describes how the integer arithmetic is simulated.
|
// describes how the integer arithmetic is simulated.
|
||||||
//
|
//
|
||||||
// STEP 0. Initialization
|
// STEP 0. Initialization
|
||||||
|
@ -158,7 +158,7 @@
|
||||||
//
|
//
|
||||||
// P_1 = b b b ... b
|
// P_1 = b b b ... b
|
||||||
//
|
//
|
||||||
// each b can be 0 or 1. Also, let P_0 be the two bits correspoding to
|
// each b can be 0 or 1. Also, let P_0 be the two bits corresponding to
|
||||||
// bit positions L+2 and L+1. So, when each of the P_j is interpreted
|
// bit positions L+2 and L+1. So, when each of the P_j is interpreted
|
||||||
// with appropriate scaling, we have
|
// with appropriate scaling, we have
|
||||||
//
|
//
|
||||||
|
|
|
@ -1174,7 +1174,7 @@ SINCOS_CONTINUE:
|
||||||
{ .mfi
|
{ .mfi
|
||||||
nop.m 999
|
nop.m 999
|
||||||
//
|
//
|
||||||
// For big s: r = s - w: No futher reduction is necessary
|
// For big s: r = s - w: No further reduction is necessary
|
||||||
// For small s: w = N * P_3 (change sign) More reduction
|
// For small s: w = N * P_3 (change sign) More reduction
|
||||||
//
|
//
|
||||||
(p6) fcmp.lt.unc.s1 p8, p9 = FR_r, FR_Two_to_M3
|
(p6) fcmp.lt.unc.s1 p8, p9 = FR_r, FR_Two_to_M3
|
||||||
|
|
|
@ -1112,7 +1112,7 @@ SINCOSL_COMMON2:
|
||||||
};;
|
};;
|
||||||
|
|
||||||
//
|
//
|
||||||
// For big s: r = s - w: No futher reduction is necessary
|
// For big s: r = s - w: No further reduction is necessary
|
||||||
// For small s: w = N * P_3 (change sign) More reduction
|
// For small s: w = N * P_3 (change sign) More reduction
|
||||||
//
|
//
|
||||||
{ .mfi
|
{ .mfi
|
||||||
|
|
|
@ -1083,7 +1083,7 @@ SINCOSL_COMMON:
|
||||||
;;
|
;;
|
||||||
|
|
||||||
//
|
//
|
||||||
// For big s: r = s - w: No futher reduction is necessary
|
// For big s: r = s - w: No further reduction is necessary
|
||||||
// For small s: w = N * P_3 (change sign) More reduction
|
// For small s: w = N * P_3 (change sign) More reduction
|
||||||
//
|
//
|
||||||
{ .mfi
|
{ .mfi
|
||||||
|
|
|
@ -1547,7 +1547,7 @@ GLOBAL_LIBM_ENTRY(erfcl)
|
||||||
{ .mfi
|
{ .mfi
|
||||||
ldfe FR_A12 = [GR_P_POINT_1], -64
|
ldfe FR_A12 = [GR_P_POINT_1], -64
|
||||||
nop.f 0
|
nop.f 0
|
||||||
extr GR_K = GR_N_fix, 12, 32 // Extract limite range K
|
extr GR_K = GR_N_fix, 12, 32 // Extract limit range K
|
||||||
}
|
}
|
||||||
{ .mfi
|
{ .mfi
|
||||||
ldfe FR_A13 = [GR_P_POINT_2], -64
|
ldfe FR_A13 = [GR_P_POINT_2], -64
|
||||||
|
|
|
@ -156,7 +156,7 @@ GLOBAL_LIBM_ENTRY(modf)
|
||||||
nop.i 999 ;;
|
nop.i 999 ;;
|
||||||
}
|
}
|
||||||
|
|
||||||
// p11 <== SMALL, no integer part, fraction is everyting
|
// p11 <== SMALL, no integer part, fraction is everything
|
||||||
// p9 <== HUGE, no fraction part, integer is everything
|
// p9 <== HUGE, no fraction part, integer is everything
|
||||||
// p12 <== NORMAL, fraction part and integer part
|
// p12 <== NORMAL, fraction part and integer part
|
||||||
{ .mii
|
{ .mii
|
||||||
|
|
|
@ -156,7 +156,7 @@ GLOBAL_LIBM_ENTRY(modff)
|
||||||
nop.i 999 ;;
|
nop.i 999 ;;
|
||||||
}
|
}
|
||||||
|
|
||||||
// p11 <== SMALL, no integer part, fraction is everyting
|
// p11 <== SMALL, no integer part, fraction is everything
|
||||||
// p9 <== HUGE, no fraction part, integer is everything
|
// p9 <== HUGE, no fraction part, integer is everything
|
||||||
// p12 <== NORMAL, fraction part and integer part
|
// p12 <== NORMAL, fraction part and integer part
|
||||||
{ .mii
|
{ .mii
|
||||||
|
|
|
@ -151,7 +151,7 @@ GLOBAL_LIBM_ENTRY(modfl)
|
||||||
nop.i 999 ;;
|
nop.i 999 ;;
|
||||||
}
|
}
|
||||||
|
|
||||||
// p11 <== SMALL, no integer part, fraction is everyting
|
// p11 <== SMALL, no integer part, fraction is everything
|
||||||
// p9 <== HUGE, no fraction part, integer is everything
|
// p9 <== HUGE, no fraction part, integer is everything
|
||||||
// p12 <== NORMAL, fraction part and integer part
|
// p12 <== NORMAL, fraction part and integer part
|
||||||
{ .mii
|
{ .mii
|
||||||
|
|
|
@ -98,7 +98,7 @@
|
||||||
//
|
//
|
||||||
// This branch is cut off by one fclass operation.
|
// This branch is cut off by one fclass operation.
|
||||||
// Then zeros+nans, infinities and denormals processed separately.
|
// Then zeros+nans, infinities and denormals processed separately.
|
||||||
// For denormals we use simple fma operaton x+x*x (- for +denorms)
|
// For denormals we use simple fma operation x+x*x (- for +denorms)
|
||||||
//
|
//
|
||||||
// 2. [0;1/8] path: 0.0 < |x| < 1/8
|
// 2. [0;1/8] path: 0.0 < |x| < 1/8
|
||||||
//
|
//
|
||||||
|
|
|
@ -169,7 +169,7 @@
|
||||||
// Step 3: Division
|
// Step 3: Division
|
||||||
// ----------------
|
// ----------------
|
||||||
// To calculate 1/(x*GAMMA(x)*S21(r)) we use frcpa instruction
|
// To calculate 1/(x*GAMMA(x)*S21(r)) we use frcpa instruction
|
||||||
// with following Newton-Raphson interations.
|
// with following Newton-Raphson iterations.
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
//*********************************************************************
|
//*********************************************************************
|
||||||
|
@ -331,7 +331,7 @@ RODATA
|
||||||
|
|
||||||
LOCAL_OBJECT_START(tgamma_data)
|
LOCAL_OBJECT_START(tgamma_data)
|
||||||
data8 0x406573FAE561F648 // overflow boundary (171.624376956302739927196)
|
data8 0x406573FAE561F648 // overflow boundary (171.624376956302739927196)
|
||||||
data8 0x3FDD8B618D5AF8FE // point of local minium (0.461632144968362356785)
|
data8 0x3FDD8B618D5AF8FE // point of local minimum (0.461632144968362356785)
|
||||||
//
|
//
|
||||||
//[2; 3]
|
//[2; 3]
|
||||||
data8 0xEF0E85C9AE40ABE2,0x00004000 // C01
|
data8 0xEF0E85C9AE40ABE2,0x00004000 // C01
|
||||||
|
|
|
@ -170,7 +170,7 @@
|
||||||
// Step 3: Division
|
// Step 3: Division
|
||||||
// ----------------
|
// ----------------
|
||||||
// To calculate 1/x and 1/(GAMMA(x)*S12(rs)) we use frcpa
|
// To calculate 1/x and 1/(GAMMA(x)*S12(rs)) we use frcpa
|
||||||
// instruction with following Newton-Raphson interations.
|
// instruction with following Newton-Raphson iterations.
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
//*********************************************************************
|
//*********************************************************************
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
License along with the GNU C Library; if not, see
|
License along with the GNU C Library; if not, see
|
||||||
<https://www.gnu.org/licenses/>. */
|
<https://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
/* Return: the address of the first occurence of chr in str or NULL
|
/* Return: the address of the first occurrence of chr in str or NULL
|
||||||
|
|
||||||
Inputs:
|
Inputs:
|
||||||
in0: str
|
in0: str
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
License along with the GNU C Library; if not, see
|
License along with the GNU C Library; if not, see
|
||||||
<https://www.gnu.org/licenses/>. */
|
<https://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
/* Return: the address of the first occurence of chr in str or NULL
|
/* Return: the address of the first occurrence of chr in str or NULL
|
||||||
|
|
||||||
Inputs:
|
Inputs:
|
||||||
in0: str
|
in0: str
|
||||||
|
|
|
@ -139,5 +139,5 @@ __branred(double x, double *a, double *aa)
|
||||||
t=(b-s)+bb;
|
t=(b-s)+bb;
|
||||||
*a=s;
|
*a=s;
|
||||||
*aa=t;
|
*aa=t;
|
||||||
return ((int) sum)&3; /* return quater of unit circle */
|
return ((int) sum)&3; /* return quarter of unit circle */
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
* = log(6.3*5.3) + lgamma(5.3)
|
* = log(6.3*5.3) + lgamma(5.3)
|
||||||
* = log(6.3*5.3*4.3*3.3*2.3) + lgamma(2.3)
|
* = log(6.3*5.3*4.3*3.3*2.3) + lgamma(2.3)
|
||||||
* 2. Polynomial approximation of lgamma around its
|
* 2. Polynomial approximation of lgamma around its
|
||||||
* minimun ymin=1.461632144968362245 to maintain monotonicity.
|
* minimum ymin=1.461632144968362245 to maintain monotonicity.
|
||||||
* On [ymin-0.23, ymin+0.27] (i.e., [1.23164,1.73163]), use
|
* On [ymin-0.23, ymin+0.27] (i.e., [1.23164,1.73163]), use
|
||||||
* Let z = x-ymin;
|
* Let z = x-ymin;
|
||||||
* lgamma(x) = -1.214862905358496078218 + z^2*poly(z)
|
* lgamma(x) = -1.214862905358496078218 + z^2*poly(z)
|
||||||
|
|
|
@ -78,7 +78,7 @@ __mpn_extract_long_double (mp_ptr res_ptr, mp_size_t size,
|
||||||
|
|
||||||
/* The high double may be rounded and the low double reflects the
|
/* The high double may be rounded and the low double reflects the
|
||||||
difference between the long double and the rounded high double
|
difference between the long double and the rounded high double
|
||||||
value. This is indicated by a differnce between the signs of the
|
value. This is indicated by a difference between the signs of the
|
||||||
high and low doubles. */
|
high and low doubles. */
|
||||||
if (u.d[0].ieee.negative != u.d[1].ieee.negative
|
if (u.d[0].ieee.negative != u.d[1].ieee.negative
|
||||||
&& lo != 0)
|
&& lo != 0)
|
||||||
|
|
|
@ -44,7 +44,7 @@
|
||||||
* = log(6.3*5.3) + lgamma(5.3)
|
* = log(6.3*5.3) + lgamma(5.3)
|
||||||
* = log(6.3*5.3*4.3*3.3*2.3) + lgamma(2.3)
|
* = log(6.3*5.3*4.3*3.3*2.3) + lgamma(2.3)
|
||||||
* 2. Polynomial approximation of lgamma around its
|
* 2. Polynomial approximation of lgamma around its
|
||||||
* minimun ymin=1.461632144968362245 to maintain monotonicity.
|
* minimum ymin=1.461632144968362245 to maintain monotonicity.
|
||||||
* On [ymin-0.23, ymin+0.27] (i.e., [1.23164,1.73163]), use
|
* On [ymin-0.23, ymin+0.27] (i.e., [1.23164,1.73163]), use
|
||||||
* Let z = x-ymin;
|
* Let z = x-ymin;
|
||||||
* lgamma(x) = -1.214862905358496078218 + z^2*poly(z)
|
* lgamma(x) = -1.214862905358496078218 + z^2*poly(z)
|
||||||
|
|
|
@ -9,7 +9,7 @@ dnl Test if the toolchain is new enough for static PIE.
|
||||||
dnl We need a GAS supporting explicit reloc (older GAS produces stack-based
|
dnl We need a GAS supporting explicit reloc (older GAS produces stack-based
|
||||||
dnl reloc and triggers an internal error in the linker). And, we need GCC to
|
dnl reloc and triggers an internal error in the linker). And, we need GCC to
|
||||||
dnl pass the correct linker flags for static PIE. GCC >= 13 and GAS >= 2.40
|
dnl pass the correct linker flags for static PIE. GCC >= 13 and GAS >= 2.40
|
||||||
dnl satisify the requirement, but a distro may backport static PIE support into
|
dnl satisfy the requirement, but a distro may backport static PIE support into
|
||||||
dnl earlier GCC or Binutils releases as well.
|
dnl earlier GCC or Binutils releases as well.
|
||||||
AC_CACHE_CHECK([if the toolchain is sufficient to build static PIE on LoongArch],
|
AC_CACHE_CHECK([if the toolchain is sufficient to build static PIE on LoongArch],
|
||||||
libc_cv_static_pie_on_loongarch, [
|
libc_cv_static_pie_on_loongarch, [
|
||||||
|
|
|
@ -31,7 +31,7 @@ __feupdateenv (const fenv_t *envp)
|
||||||
/* Install new environment. */
|
/* Install new environment. */
|
||||||
__fesetenv (envp);
|
__fesetenv (envp);
|
||||||
|
|
||||||
/* Raise the safed exception. Incidently for us the implementation
|
/* Raise the saved exception. Incidentally for us the implementation
|
||||||
defined format of the values in objects of type fexcept_t is the
|
defined format of the values in objects of type fexcept_t is the
|
||||||
same as the ones specified using the FE_* constants. */
|
same as the ones specified using the FE_* constants. */
|
||||||
__feraiseexcept (temp);
|
__feraiseexcept (temp);
|
||||||
|
|
|
@ -30,7 +30,7 @@ __feupdateenv (const fenv_t *envp)
|
||||||
/* Install new environment. */
|
/* Install new environment. */
|
||||||
__fesetenv (envp);
|
__fesetenv (envp);
|
||||||
|
|
||||||
/* Raise the saved exception. Incidently for us the implementation
|
/* Raise the saved exception. Incidentally for us the implementation
|
||||||
defined format of the values in objects of type fexcept_t is the
|
defined format of the values in objects of type fexcept_t is the
|
||||||
same as the ones specified using the FE_* constants. */
|
same as the ones specified using the FE_* constants. */
|
||||||
__feraiseexcept ((int) fpsr);
|
__feraiseexcept ((int) fpsr);
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
assert (local.ptr__Unwind_GetGR != NULL); \
|
assert (local.ptr__Unwind_GetGR != NULL); \
|
||||||
PTR_MANGLE (local.ptr__Unwind_GetGR);
|
PTR_MANGLE (local.ptr__Unwind_GetGR);
|
||||||
|
|
||||||
/* This is overriden by the m680x0 variant. */
|
/* This is overridden by the m680x0 variant. */
|
||||||
#define UNWIND_LINK_FRAME_STATE_FOR 0
|
#define UNWIND_LINK_FRAME_STATE_FOR 0
|
||||||
|
|
||||||
#endif /* _ARCH_UNWIND_LINK_H */
|
#endif /* _ARCH_UNWIND_LINK_H */
|
||||||
|
|
|
@ -61,7 +61,7 @@ create_wakeupmsg (struct __pthread *thread)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Allocate any resouces for THREAD. The new kernel thread should not
|
/* Allocate any resources for THREAD. The new kernel thread should not
|
||||||
be eligible to be scheduled. */
|
be eligible to be scheduled. */
|
||||||
int
|
int
|
||||||
__pthread_thread_alloc (struct __pthread *thread)
|
__pthread_thread_alloc (struct __pthread *thread)
|
||||||
|
|
|
@ -93,7 +93,7 @@ $(common-objpfx)stamp-errnos: $(hurd)/errnos.awk $(errno.texinfo) \
|
||||||
$(mach-errnos-deps) $(common-objpfx)errnos.d
|
$(mach-errnos-deps) $(common-objpfx)errnos.d
|
||||||
mkdir -p $(hurd-objpfx)bits
|
mkdir -p $(hurd-objpfx)bits
|
||||||
$(AWK) -f $^ > $(hurd-objpfx)bits/errno.h-tmp
|
$(AWK) -f $^ > $(hurd-objpfx)bits/errno.h-tmp
|
||||||
# Make it unwritable so noone will edit it by mistake.
|
# Make it unwritable so no one will edit it by mistake.
|
||||||
-chmod a-w $(hurd-objpfx)bits/errno.h-tmp
|
-chmod a-w $(hurd-objpfx)bits/errno.h-tmp
|
||||||
$(move-if-change) $(hurd-objpfx)bits/errno.h-tmp $(hurd)/bits/errno.h
|
$(move-if-change) $(hurd-objpfx)bits/errno.h-tmp $(hurd)/bits/errno.h
|
||||||
touch $@
|
touch $@
|
||||||
|
|
|
@ -87,14 +87,14 @@
|
||||||
/* We support user-defined stacks. */
|
/* We support user-defined stacks. */
|
||||||
#define _POSIX_THREAD_ATTR_STACKADDR 200809L
|
#define _POSIX_THREAD_ATTR_STACKADDR 200809L
|
||||||
|
|
||||||
/* We do not support priority inheritence. */
|
/* We do not support priority inheritance. */
|
||||||
#define _POSIX_THREAD_PRIO_INHERIT -1
|
#define _POSIX_THREAD_PRIO_INHERIT -1
|
||||||
|
|
||||||
/* We do not support priority protection. */
|
/* We do not support priority protection. */
|
||||||
#define _POSIX_THREAD_PRIO_PROTECT -1
|
#define _POSIX_THREAD_PRIO_PROTECT -1
|
||||||
|
|
||||||
#ifdef __USE_XOPEN2K8
|
#ifdef __USE_XOPEN2K8
|
||||||
/* We do not support priority inheritence for robust mutexes. */
|
/* We do not support priority inheritance for robust mutexes. */
|
||||||
# define _POSIX_THREAD_ROBUST_PRIO_INHERIT -1
|
# define _POSIX_THREAD_ROBUST_PRIO_INHERIT -1
|
||||||
|
|
||||||
/* We do not support priority protection for robust mutexes. */
|
/* We do not support priority protection for robust mutexes. */
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
/* rtld can not access TLS too early, thus rtld_errno.
|
/* rtld can not access TLS too early, thus rtld_errno.
|
||||||
|
|
||||||
Instead of making __open/__close pass errno from TLS to rtld_errno, simply
|
Instead of making __open/__close pass errno from TLS to rtld_errno, simply
|
||||||
use a weak __errno_location using rtld_errno, which will be overriden by the
|
use a weak __errno_location using rtld_errno, which will be overridden by the
|
||||||
libc definition. */
|
libc definition. */
|
||||||
static int rtld_errno;
|
static int rtld_errno;
|
||||||
int * weak_function
|
int * weak_function
|
||||||
|
|
|
@ -41,7 +41,7 @@ struct __pthread_mutex
|
||||||
#define __PTHREAD_MUTEX_INITIALIZER \
|
#define __PTHREAD_MUTEX_INITIALIZER \
|
||||||
{ 0, 0, 0, 0, __PTHREAD_MUTEX_TIMED, 0, { { 0, 0 } } }
|
{ 0, 0, 0, 0, __PTHREAD_MUTEX_TIMED, 0, { { 0, 0 } } }
|
||||||
|
|
||||||
/* The +1 is to mantain binary compatibility with the old
|
/* The +1 is to maintain binary compatibility with the old
|
||||||
* libpthread implementation. */
|
* libpthread implementation. */
|
||||||
#define __PTHREAD_ERRORCHECK_MUTEX_INITIALIZER \
|
#define __PTHREAD_ERRORCHECK_MUTEX_INITIALIZER \
|
||||||
{ 0, 0, 0, 0, __PTHREAD_MUTEX_ERRORCHECK + 1, 0, { { 0, 0 } } }
|
{ 0, 0, 0, 0, __PTHREAD_MUTEX_ERRORCHECK + 1, 0, { { 0, 0 } } }
|
||||||
|
|
|
@ -143,7 +143,7 @@ __pthread_hurd_cond_timedwait_internal (pthread_cond_t *cond,
|
||||||
drain = err ? 1 : 0;
|
drain = err ? 1 : 0;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* We're still in the list of waiters. Noone attempted to wake us
|
/* We're still in the list of waiters. No one attempted to wake us
|
||||||
up, i.e. we timed out. */
|
up, i.e. we timed out. */
|
||||||
__pthread_dequeue (self);
|
__pthread_dequeue (self);
|
||||||
drain = 0;
|
drain = 0;
|
||||||
|
|
|
@ -9,7 +9,7 @@ libc.so: malloc + REL R_386_GLOB_DAT
|
||||||
libc.so: realloc + REL R_386_GLOB_DAT
|
libc.so: realloc + REL R_386_GLOB_DAT
|
||||||
libm.so: matherr + REL R_386_GLOB_DAT
|
libm.so: matherr + REL R_386_GLOB_DAT
|
||||||
# The dynamic linker has its own versions of basic functions for initial loading
|
# The dynamic linker has its own versions of basic functions for initial loading
|
||||||
# of shared libraries. These need to be overriden by libc once loaded.
|
# of shared libraries. These need to be overridden by libc once loaded.
|
||||||
ld.so: __open ?
|
ld.so: __open ?
|
||||||
ld.so: __open64 ?
|
ld.so: __open64 ?
|
||||||
ld.so: __open_nocancel
|
ld.so: __open_nocancel
|
||||||
|
|
|
@ -49,7 +49,7 @@ __ptsname_internal (int fd, char *buf, size_t buflen, struct stat64 *stp)
|
||||||
int ttype;
|
int ttype;
|
||||||
|
|
||||||
if (HURD_DPORT_USE (fd, __term_get_bottom_type (port, &ttype)) == 0)
|
if (HURD_DPORT_USE (fd, __term_get_bottom_type (port, &ttype)) == 0)
|
||||||
/* get_bottom_type suceeded, this is the slave side. */
|
/* get_bottom_type succeeded, this is the slave side. */
|
||||||
return __hurd_fail (ENOTTY), ENOTTY;
|
return __hurd_fail (ENOTTY), ENOTTY;
|
||||||
|
|
||||||
if (err = HURD_DPORT_USE (fd, __term_get_peername (port, peername)))
|
if (err = HURD_DPORT_USE (fd, __term_get_peername (port, peername)))
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
#include <sysdep-cancel.h>
|
#include <sysdep-cancel.h>
|
||||||
|
|
||||||
/* Read N bytes into BUF through socket FD.
|
/* Read N bytes into BUF through socket FD.
|
||||||
If ADDR is not NULL, fill in *ADDR_LEN bytes of it with tha address of
|
If ADDR is not NULL, fill in *ADDR_LEN bytes of it with the address of
|
||||||
the sender, and store the actual size of the address in *ADDR_LEN.
|
the sender, and store the actual size of the address in *ADDR_LEN.
|
||||||
Returns the number of bytes read or -1 for errors. */
|
Returns the number of bytes read or -1 for errors. */
|
||||||
ssize_t
|
ssize_t
|
||||||
|
|
|
@ -85,7 +85,7 @@ timer_thread (void)
|
||||||
error_t return_code;
|
error_t return_code;
|
||||||
} msg;
|
} msg;
|
||||||
|
|
||||||
/* Wait for a message on a port that noone sends to. The purpose is
|
/* Wait for a message on a port that no one sends to. The purpose is
|
||||||
the receive timeout. Notice interrupts so that if we are
|
the receive timeout. Notice interrupts so that if we are
|
||||||
thread_abort'd, we will loop around and fetch new values from
|
thread_abort'd, we will loop around and fetch new values from
|
||||||
_hurd_itimerval. */
|
_hurd_itimerval. */
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Compare and exchange.
|
/* Compare and exchange.
|
||||||
For all "bool" routines, we return FALSE if exchange succesful. */
|
For all "bool" routines, we return FALSE if exchange successful. */
|
||||||
|
|
||||||
#define __arch_compare_and_exchange_bool_8_int(mem, newval, oldval, model) \
|
#define __arch_compare_and_exchange_bool_8_int(mem, newval, oldval, model) \
|
||||||
(abort (), 0)
|
(abort (), 0)
|
||||||
|
|
|
@ -46,7 +46,7 @@ typedef struct La_mips_32_retval
|
||||||
typedef struct La_mips_64_regs
|
typedef struct La_mips_64_regs
|
||||||
{
|
{
|
||||||
uint64_t lr_reg[8]; /* $a0 through $a7 */
|
uint64_t lr_reg[8]; /* $a0 through $a7 */
|
||||||
double lr_fpreg[8]; /* $f12 throgh $f19 */
|
double lr_fpreg[8]; /* $f12 through $f19 */
|
||||||
uint64_t lr_ra;
|
uint64_t lr_ra;
|
||||||
uint64_t lr_sp;
|
uint64_t lr_sp;
|
||||||
} La_mips_64_regs;
|
} La_mips_64_regs;
|
||||||
|
|
|
@ -31,7 +31,7 @@ __feupdateenv (const fenv_t *envp)
|
||||||
/* Install new environment. */
|
/* Install new environment. */
|
||||||
__fesetenv (envp);
|
__fesetenv (envp);
|
||||||
|
|
||||||
/* Raise the safed exception. Incidently for us the implementation
|
/* Raise the saved exception. Incidentally for us the implementation
|
||||||
defined format of the values in objects of type fexcept_t is the
|
defined format of the values in objects of type fexcept_t is the
|
||||||
same as the ones specified using the FE_* constants. */
|
same as the ones specified using the FE_* constants. */
|
||||||
__feraiseexcept (temp);
|
__feraiseexcept (temp);
|
||||||
|
|
|
@ -88,7 +88,7 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Using PREFETCH_HINT_LOAD_STREAMED instead of PREFETCH_LOAD on load
|
* Using PREFETCH_HINT_LOAD_STREAMED instead of PREFETCH_LOAD on load
|
||||||
* prefetches appears to offer a slight preformance advantage.
|
* prefetches appear to offer a slight performance advantage.
|
||||||
*
|
*
|
||||||
* Using PREFETCH_HINT_PREPAREFORSTORE instead of PREFETCH_STORE
|
* Using PREFETCH_HINT_PREPAREFORSTORE instead of PREFETCH_STORE
|
||||||
* or PREFETCH_STORE_STREAMED offers a large performance advantage
|
* or PREFETCH_STORE_STREAMED offers a large performance advantage
|
||||||
|
@ -317,7 +317,7 @@ L(memcpy):
|
||||||
|
|
||||||
andi a3,a3,(NSIZE-1) /* copy a3 bytes to align a0/a1 */
|
andi a3,a3,(NSIZE-1) /* copy a3 bytes to align a0/a1 */
|
||||||
beq a3,zero,L(aligned) /* if a3=0, it is already aligned */
|
beq a3,zero,L(aligned) /* if a3=0, it is already aligned */
|
||||||
PTR_SUBU a2,a2,a3 /* a2 is the remining bytes count */
|
PTR_SUBU a2,a2,a3 /* a2 is the remaining bytes count */
|
||||||
|
|
||||||
C_LDHI t8,0(a1)
|
C_LDHI t8,0(a1)
|
||||||
PTR_ADDU a1,a1,a3
|
PTR_ADDU a1,a1,a3
|
||||||
|
@ -626,7 +626,7 @@ L(wcopy_loop):
|
||||||
L(unaligned):
|
L(unaligned):
|
||||||
andi a3,a3,(NSIZE-1) /* copy a3 bytes to align a0/a1 */
|
andi a3,a3,(NSIZE-1) /* copy a3 bytes to align a0/a1 */
|
||||||
beqz a3,L(ua_chk16w) /* if a3=0, it is already aligned */
|
beqz a3,L(ua_chk16w) /* if a3=0, it is already aligned */
|
||||||
PTR_SUBU a2,a2,a3 /* a2 is the remining bytes count */
|
PTR_SUBU a2,a2,a3 /* a2 is the remaining bytes count */
|
||||||
|
|
||||||
C_LDHI v1,UNIT(0)(a1)
|
C_LDHI v1,UNIT(0)(a1)
|
||||||
C_LDLO v1,UNITM1(1)(a1)
|
C_LDLO v1,UNITM1(1)(a1)
|
||||||
|
|
|
@ -294,7 +294,7 @@ L(lb1):
|
||||||
|
|
||||||
L(aligned):
|
L(aligned):
|
||||||
/* If USE_DOUBLE is not set we may still want to align the data on a 16
|
/* If USE_DOUBLE is not set we may still want to align the data on a 16
|
||||||
byte boundry instead of an 8 byte boundry to maximize the opportunity
|
byte boundary instead of an 8 byte boundary to maximize the opportunity
|
||||||
of proAptiv chips to do memory bonding (combining two sequential 4
|
of proAptiv chips to do memory bonding (combining two sequential 4
|
||||||
byte stores into one 8 byte store). We know there are at least 4 bytes
|
byte stores into one 8 byte store). We know there are at least 4 bytes
|
||||||
left to store or we would have jumped to L(lastb) earlier in the code. */
|
left to store or we would have jumped to L(lastb) earlier in the code. */
|
||||||
|
|
|
@ -60,7 +60,7 @@
|
||||||
...
|
...
|
||||||
NULL
|
NULL
|
||||||
ra ($31) The return address register is set to zero so that programs
|
ra ($31) The return address register is set to zero so that programs
|
||||||
that search backword through stack frames recognize the last
|
that search backward through stack frames recognize the last
|
||||||
stack frame.
|
stack frame.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -198,7 +198,7 @@ symbol = value
|
||||||
TEXT(msg)
|
TEXT(msg)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Print formated string
|
* Print formatted string
|
||||||
*/
|
*/
|
||||||
#define PRINT(string) \
|
#define PRINT(string) \
|
||||||
.set push; \
|
.set push; \
|
||||||
|
|
|
@ -715,7 +715,7 @@ unload_object (enum fp_obj obj)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Load every permuation of OBJECTS. */
|
/* Load every permutation of OBJECTS. */
|
||||||
static bool
|
static bool
|
||||||
test_permutations (enum fp_obj objects[], int count)
|
test_permutations (enum fp_obj objects[], int count)
|
||||||
{
|
{
|
||||||
|
|
|
@ -52,7 +52,7 @@ unwind_arch_adjustment (void *prev, void *addr)
|
||||||
if ((uintptr_t) pc & 0x3)
|
if ((uintptr_t) pc & 0x3)
|
||||||
return addr;
|
return addr;
|
||||||
|
|
||||||
/* The vDSO containes either
|
/* The vDSO contains either
|
||||||
|
|
||||||
24021061 li v0, 0x1061 (rt_sigreturn)
|
24021061 li v0, 0x1061 (rt_sigreturn)
|
||||||
0000000c syscall
|
0000000c syscall
|
||||||
|
|
|
@ -137,7 +137,7 @@ _start:\n\
|
||||||
ldw r2, %got(_dl_argc)(r22)\n\
|
ldw r2, %got(_dl_argc)(r22)\n\
|
||||||
ldw r5, 0(r2)\n\
|
ldw r5, 0(r2)\n\
|
||||||
\n\
|
\n\
|
||||||
/* Load adjsuted argv. */\n\
|
/* Load adjusted argv. */\n\
|
||||||
ldw r2, %got(_dl_argv)(r22)\n\
|
ldw r2, %got(_dl_argv)(r22)\n\
|
||||||
ldw r6, 0(r2)\n\
|
ldw r6, 0(r2)\n\
|
||||||
\n\
|
\n\
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue