+2013-06-05 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/alpha/bits/atomic.h: Remove trailing whitespace.
+ * sysdeps/alpha/div_libc.h: Likewise.
+ * sysdeps/alpha/divq.S: Likewise.
+ * sysdeps/alpha/divqu.S: Likewise.
+ * sysdeps/alpha/fpu/cfloat-compat.h: Likewise.
+ * sysdeps/alpha/fpu/s_roundf.c: Likewise.
+ * sysdeps/alpha/fpu/s_trunc.c: Likewise.
+ * sysdeps/alpha/fpu/s_truncf.c: Likewise.
+ * sysdeps/alpha/ldiv.S: Likewise.
+ * sysdeps/alpha/memchr.c: Likewise.
+ * sysdeps/alpha/remq.S: Likewise.
+ * sysdeps/alpha/remqu.S: Likewise.
+ * sysdeps/alpha/stxncpy.S: Likewise.
+ * sysdeps/unix/alpha/sysdep.S: Likewise.
+ * sysdeps/unix/sysv/linux/alpha/kernel-features.h: Likewise.
+ * sysdeps/unix/sysv/linux/alpha/kernel_stat.h: Likewise.
+ * sysdeps/unix/sysv/linux/alpha/nptl/lowlevellock.h: Likewise.
+ * sysdeps/unix/sysv/linux/alpha/register-dump.h: Likewise.
+ * sysdeps/unix/sysv/linux/alpha/syscall.S: Likewise.
+
2013-05-22 Edjunior Barbosa Machado <emachado@linux.vnet.ibm.com>
* sysdeps/unix/sysv/linux/alpha/bits/siginfo.h (siginfo_t): Add
+2013-06-05 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/am33/elf/start.S: Remove trailing whitespace.
+ * sysdeps/am33/fpu/fgetexcptflg.c: Likewise.
+
2013-05-01 Ryan S. Arnold <rsa@linux.vnet.ibm.com>
* sysdeps/am33/atomicity.h: Add missing #include <stdint.h> due to
+2013-06-05 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/arm/machine-gmon.h: Remove trailing whitespace.
+ * sysdeps/unix/sysv/linux/arm/mmap.S: Likewise.
+ * sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h: Likewise.
+ * sysdeps/unix/sysv/linux/arm/swapcontext.S: Likewise.
+
2013-05-31 Joseph Myers <joseph@codesourcery.com>
* sysdeps/arm/Makefile [$(subdir) = malloc]
+2013-06-05 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/hppa/configure.in: Remove trailing whitespace.
+ * sysdeps/hppa/dl-fptr.c: Likewise.
+ * sysdeps/hppa/dl-fptr.h: Likewise.
+ * sysdeps/hppa/dl-irel.h: Likewise.
+ * sysdeps/hppa/dl-trampoline.S: Likewise.
+ * sysdeps/hppa/fpu/bits/fenv.h: Likewise.
+ * sysdeps/hppa/fpu/fedisblxcpt.c: Likewise.
+ * sysdeps/hppa/fpu/fegetenv.c: Likewise.
+ * sysdeps/hppa/fpu/fegetexcept.c: Likewise.
+ * sysdeps/hppa/fpu/feholdexcpt.c: Likewise.
+ * sysdeps/hppa/fpu/fesetenv.c: Likewise.
+ * sysdeps/hppa/fpu/fesetround.c: Likewise.
+ * sysdeps/hppa/fpu/feupdateenv.c: Likewise.
+ * sysdeps/hppa/fpu/fgetexcptflg.c: Likewise.
+ * sysdeps/hppa/fpu/fraiseexcpt.c: Likewise.
+ * sysdeps/hppa/fpu/ftestexcept.c: Likewise.
+ * sysdeps/hppa/hppa1.1/addmul_1.S: Likewise.
+ * sysdeps/hppa/hppa1.1/mul_1.S: Likewise.
+ * sysdeps/hppa/hppa1.1/submul_1.S: Likewise.
+ * sysdeps/hppa/hppa1.1/udiv_qrnnd.S: Likewise.
+ * sysdeps/hppa/nptl/pthread_spin_init.c: Likewise.
+ * sysdeps/hppa/nptl/pthread_spin_unlock.c: Likewise.
+ * sysdeps/hppa/nptl/tls.h: Likewise.
+ * sysdeps/hppa/rshift.S: Likewise.
+ * sysdeps/hppa/start.S: Likewise.
+ * sysdeps/hppa/sysdep.h: Likewise.
+ * sysdeps/unix/sysv/linux/hppa/bits/atomic.h: Likewise.
+ * sysdeps/unix/sysv/linux/hppa/clone.S: Likewise.
+ * sysdeps/unix/sysv/linux/hppa/internaltypes.h: Likewise.
+ * sysdeps/unix/sysv/linux/hppa/makecontext.c: Likewise.
+ * sysdeps/unix/sysv/linux/hppa/mmap.c: Likewise.
+ * sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h: Likewise.
+ * sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h: Likewise.
+ * sysdeps/unix/sysv/linux/hppa/nptl/pt-vfork.S: Likewise.
+ * sysdeps/unix/sysv/linux/hppa/nptl/pthreadP.h: Likewise.
+ * sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h: Likewise.
+ * sysdeps/unix/sysv/linux/hppa/setcontext.S: Likewise.
+ * sysdeps/unix/sysv/linux/hppa/syscalls.list: Likewise.
+ * sysdeps/unix/sysv/linux/hppa/sysdep.c: Likewise.
+
2013-05-29 Siddhesh Poyarekar <siddhesh@redhat.com>
[BZ #15465]
+2013-06-05 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/unix/sysv/linux/generic/wordsize-32/syscalls.list:
+ Remove trailing whitespace.
+
2013-01-02 Joseph Myers <joseph@codesourcery.com>
* All files with FSF copyright notices: Update copyright dates
+2013-06-05 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/unix/sysv/linux/m68k/socket.S: Remove trailing
+ whitespace.
+
2013-05-29 Siddhesh Poyarekar <siddhesh@redhat.com>
[BZ #15465]
+2013-06-05 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/mips/fpu/fgetexcptflg.c: Remove trailing whitespace.
+ * sysdeps/mips/fpu/fraiseexcpt.c: Likewise.
+ * sysdeps/mips/memset.S: Likewise.
+ * sysdeps/mips/mips64/bsd-_setjmp.S: Likewise.
+ * sysdeps/mips/mips64/bsd-setjmp.S: Likewise.
+ * sysdeps/mips/mips64/memset.S: Likewise.
+ * sysdeps/mips/mips64/setjmp.S: Likewise.
+ * sysdeps/mips/start.S: Likewise.
+ * sysdeps/unix/mips/sysdep.S: Likewise.
+ * sysdeps/unix/sysv/linux/mips/dl-static.c: Likewise.
+ * sysdeps/unix/sysv/linux/mips/nptl/lowlevellock.h: Likewise.
+
2013-05-29 Siddhesh Poyarekar <siddhesh@redhat.com>
[BZ #15465]
+2013-06-05 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/powerpc/nofpu/fenv_const.c: Remove trailing whitespace.
+ * sysdeps/powerpc/nofpu/fenv_libc.h: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S:
+ Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S:
+ Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S:
+ Likewise.
+
2013-05-22 Joseph Myers <joseph@codesourcery.com>
* sysdeps/powerpc/nofpu/libm-test-ulps: Update test names.
+2013-06-05 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/tile/tilepro/memcpy.S: Remove trailing whitespace.
+ * sysdeps/unix/sysv/linux/tile/nptl/clone.S: Likewise.
+ * sysdeps/unix/sysv/linux/tile/setcontext.S: Likewise.
+ * sysdeps/unix/sysv/linux/tile/swapcontext.S: Likewise.
+
2013-05-29 Siddhesh Poyarekar <siddhesh@redhat.com>
[BZ #15465]
: "memory"); \
__ret; })
-/* ??? Barrier semantics for atomic_exchange_and_add appear to be
+/* ??? Barrier semantics for atomic_exchange_and_add appear to be
undefined. Use full barrier for now, as that's safe. */
#define atomic_exchange_and_add(mem, value) \
__atomic_val_bysize (__arch_exchange_and_add, int, mem, value, __MB, __MB)
#define RA t9
/* The secureplt format does not allow the division routines to be called
- via plt; there aren't enough registers free to be clobbered. Avoid
+ via plt; there aren't enough registers free to be clobbered. Avoid
setting the symbol type to STT_FUNC, so that the linker won't be tempted
to create a plt entry. */
#define funcnoplt notype
br $q_high_ret
.align 4
- /* The quotient that we computed was too small. Divide Y by the
+ /* The quotient that we computed was too small. Divide Y by the
current remainder (R) and add that to the existing quotient (Q).
The expectation, of course, is that R is much smaller than X. */
/* Begin with a shift-up loop. Compute S such that Y*S >= R. We
br $q_high_ret
.align 4
- /* The quotient that we computed was too small. Divide Y by the
+ /* The quotient that we computed was too small. Divide Y by the
current remainder (R) and add that to the existing quotient (Q).
The expectation, of course, is that R is much smaller than X. */
/* Begin with a shift-up loop. Compute S such that Y*S >= R. We
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
-/* The behaviour of complex float changed between GCC 3.3 and 3.4.
+/* The behaviour of complex float changed between GCC 3.3 and 3.4.
In 3.3 and before (below, complex version 1, or "c1"), complex float
values were packed into one floating point register.
const float almost_half = 0x1.fffffep-2;
const float two23 = 0x1.0p23;
float r, tmp;
-
+
__asm (
#ifdef _IEEE_FP_INEXACT
"adds/suic %2, %3, %1\n\tsubs/suic %1, %3, %0"
{
double two52 = copysign (0x1.0p52, x);
double r, tmp;
-
+
__asm (
#ifdef _IEEE_FP_INEXACT
"addt/suic %2, %3, %1\n\tsubt/suic %1, %3, %0"
{
float two23 = copysignf (0x1.0p23, x);
float r, tmp;
-
+
__asm (
#ifdef _IEEE_FP_INEXACT
"adds/suic %2, %3, %1\n\tsubs/suic %1, %3, %0"
br $q_high_ret
.align 4
- /* The quotient that we computed was too small. Divide Y by the
+ /* The quotient that we computed was too small. Divide Y by the
current remainder (R) and add that to the existing quotient (Q).
The expectation, of course, is that R is much smaller than X. */
/* Begin with a shift-up loop. Compute S such that Y*S >= R. We
s_align++; \
n -= 64; \
} while (0)
-
+
/* While there's still lots more data to potentially be read,
continue issuing prefetches for the 4th cacheline out. */
while (n >= 256)
br $q_high_ret
.align 4
- /* The quotient that we computed was too small. Divide Y by the
+ /* The quotient that we computed was too small. Divide Y by the
current remainder (R) and add that to the existing quotient (Q).
The expectation, of course, is that R is much smaller than X. */
/* Begin with a shift-up loop. Compute S such that Y*S >= R. We
br $q_high_ret
.align 4
- /* The quotient that we computed was too small. Divide Y by the
+ /* The quotient that we computed was too small. Divide Y by the
current remainder (R) and add that to the existing quotient (Q).
The expectation, of course, is that R is much smaller than X. */
/* Begin with a shift-up loop. Compute S such that Y*S >= R. We
or t0, t6, t6 # e1 : mask original data for zero test
cmpbge zero, t6, t7 # e0 :
beq a2, $u_eocfin # .. e1 :
- lda t6, -1 # e0 :
+ lda t6, -1 # e0 :
bne t7, $u_final # .. e1 :
mskql t6, a1, t6 # e0 : mask out bits already seen
1: stq_u t0, 0(a0) # e0 :
ret (t9) # .. e1 :
- /* Got to end-of-count before end of string.
+ /* Got to end-of-count before end of string.
On entry to this basic block:
t1 == the shifted high-order bits from the previous source word */
$u_eoc:
later in __libc_start_main. */
mov sp,a3
add -32,sp
-
- mov a3,(28,sp) /* stack_end. */
+
+ mov a3,(28,sp) /* stack_end. */
mov d0,(24,sp) /* rtld_fini. */
mov _fini, d3
mov d3,(20,sp) /* fini. */
mov d2,(16,sp) /* init. */
inc4 a3
mov a3,(12,sp) /* argv. */
-
+
/* Set the initial frame pointer as 0, so that the bottom of
the stack is clearly marked. */
mov 0,a3
/* Get the current exceptions. */
_FPU_GETCW (temp);
- /* We only save the relevant bits here. In particular, care has to be
+ /* We only save the relevant bits here. In particular, care has to be
taken with the CAUSE bits, as an inadvertent restore later on could
generate unexpected exceptions. */
#include <sysdep.h>
-/* GCC for the ARM cannot compile __builtin_return_address(N) for N != 0,
+/* GCC for the ARM cannot compile __builtin_return_address(N) for N != 0,
so we must use an assembly stub. */
/* We must not pollute the global namespace. */
cat > conftest.s <<\EOF
; Setup tls data
.section ".tdata","awT",@progbits
-foo: .data 32
+foo: .data 32
.text
; Test general dyanmic relocations
test0:
- addil LT'foo-$tls_gdidx$, %r19
+ addil LT'foo-$tls_gdidx$, %r19
ldo RT'foo-$tls_gdidx$(%r1), %r26
b __tls_get_addr
nop
; Test local exec relocations
test3:
mfctl %cr27, %r26
- addil LR'foo-$tls_leoff$, %r26
+ addil LR'foo-$tls_leoff$, %r26
ldo RR'foo-$tls_leoff$(%r1), %r25
; Done all the TLS tests.
EOF
}
/* Must call _dl_fptr_init before using any other function. */
-void
+void
_dl_fptr_init (void)
{
struct local *l;
/* There are currently 33 dynamic symbols in ld.so.
ELF_MACHINE_BOOT_FPTR_TABLE_LEN needs to be at least that big. */
-#define ELF_MACHINE_BOOT_FPTR_TABLE_LEN 64
+#define ELF_MACHINE_BOOT_FPTR_TABLE_LEN 64
#define ELF_MACHINE_LOAD_ADDRESS(var, symbol) \
asm ( \
/* Implement enough to get the build going again. */
#warning "NEED STT_GNU_IFUNC IMPLEMENTATION"
-static inline struct fdesc
+static inline struct fdesc
__attribute ((always_inline))
elf_ifunc_invoke (uintptr_t addr)
{
#include <sysdep.h>
/* This code gets called via the .plt stub, and is used in
- dl-runtime.c to call the `_dl_fixup' function and then redirect
- to the address it returns. `_dl_fixup' takes two arguments, however
- `_dl_profile_fixup' takes a number of parameters for use with
+ dl-runtime.c to call the `_dl_fixup' function and then redirect
+ to the address it returns. `_dl_fixup' takes two arguments, however
+ `_dl_profile_fixup' takes a number of parameters for use with
library auditing (LA).
-
+
WARNING: This template is also used by gcc's __cffc, and expects
that the "bl" for _dl_runtime_resolve exist at a particular offset.
Do not change this template without changing gcc, while the prefix
"bl" should fix everything so gcc finds the right spot, it will
slow down __cffc when it attempts to call fixup to resolve function
descriptor references. Please refer to gcc/gcc/config/pa/fptr.c
-
+
Enter with r19 = reloc offset, r20 = got-8, r21 = fixup ltp. */
/* RELOCATION MARKER: bl to provide gcc's __cffc with fixup loc. */
stw %r21,-32(%sp) /* PIC register value */
/* Create La_hppa_retval */
- /* -140, lrv_r28
+ /* -140, lrv_r28
-136, lrv_r29
- -132, 4 byte pad
+ -132, 4 byte pad
-128, lr_fr4 (8 bytes) */
/* Create save space for _dl_profile_fixup arguments
- -120, Saved reloc offset
- -116, Saved struct link_map
+ -120, Saved reloc offset
+ -116, Saved struct link_map
-112, *framesizep */
/* Create La_hppa_regs */
b,n L(cont)
L(cpe):
- /* We are going to call the resolved function, but we have a
+ /* We are going to call the resolved function, but we have a
stack frame in the middle. We use the value of framesize to
guess how much extra frame we need, and how much frame to
copy forward. */
copy %r1, %sp
/* Arguments to _dl_call_pltexit */
- ldw -116(%sp), %r26 /* (1) got[1] == struct link_map */
+ ldw -116(%sp), %r26 /* (1) got[1] == struct link_map */
ldw -120(%sp), %r25 /* (2) reloc offsets */
ldo -56(%sp), %r24 /* (3) *La_hppa_regs */
ldo -124(%sp), %r23 /* (4) *La_hppa_retval */
userspace. This structure is also not correctly aligned ever, in
an ABI error we left out __aligned(8) and subsequently all of our
fenv functions must accept unaligned input, align the input, and
- then use assembly to store fr0. This is a performance hit, but
+ then use assembly to store fr0. This is a performance hit, but
means the ABI is stable. */
typedef struct
{
int
fedisableexcept (int excepts)
{
- union { unsigned long long l; unsigned int sw[2]; } s;
+ union { unsigned long long l; unsigned int sw[2]; } s;
unsigned int old_exc;
/* Get the current status word. */
fegetenv (fenv_t *envp)
{
unsigned long long buf[4], *bufptr = buf;
-
+
__asm__ (
"fstd,ma %%fr0,8(%1) \n\t"
"fldd -8(%1),%%fr0 \n\t"
union { unsigned long long l; unsigned int sw[2] } s;
/* Get the current status word. */
- __asm__ ("fstd %%fr0,0(%1) \n\t"
+ __asm__ ("fstd %%fr0,0(%1) \n\t"
"fldd 0(%1),%%fr0 \n\t"
: "=m" (s.l) : "r" (&s.l) : "%r0");
/* Now clear all flags */
clear.env.__status_word &= ~(FE_ALL_EXCEPT << 27);
- /* Load the new environment. Note: fr0 must load last to enable T-bit
+ /* Load the new environment. Note: fr0 must load last to enable T-bit
Thus we start bufptr at the end and work backwards */
bufptr = (unsigned long long *)((unsigned int)(clear.buf) + sizeof(unsigned int)*4);
__asm__ (
| FE_DOWNWARD
| (FE_ALL_EXCEPT << 27)));
- /* Load the new environment. We use bufptr again since the
+ /* Load the new environment. We use bufptr again since the
initial asm has modified the value of the register and here
we take advantage of that to load in reverse order so fr0
is loaded last and T-Bit is enabled. */
if (round & ~FE_DOWNWARD)
/* round is not a valid rounding mode. */
return 1;
-
+
/* Get the current status word. */
__asm__ ("fstd %%fr0,0(%1)" : "=m" (s.l) : "r" (&s.l) : "%r0");
s.sw[0] &= ~FE_DOWNWARD;
union { unsigned long long l; unsigned int sw[2]; } s;
fenv_t temp;
/* Get the current exception status */
- __asm__ ("fstd %%fr0,0(%1) \n\t"
- "fldd 0(%1),%%fr0 \n\t"
+ __asm__ ("fstd %%fr0,0(%1) \n\t"
+ "fldd 0(%1),%%fr0 \n\t"
: "=m" (s.l) : "r" (&s.l));
memcpy(&temp, envp, sizeof(fenv_t));
/* Currently raised exceptions not cleared */
union { unsigned long long l; unsigned int sw[2]; } s;
/* Get the current status word. */
- __asm__ ("fstd %%fr0,0(%1) \n\t"
- "fldd 0(%1),%%fr0 \n\t"
+ __asm__ ("fstd %%fr0,0(%1) \n\t"
+ "fldd 0(%1),%%fr0 \n\t"
: "=m" (s.l) : "r" (&s.l) : "%r0");
*flagp = (s.sw[0] >> 27) & excepts & FE_ALL_EXCEPT;
#include <float.h>
#include <math.h>
-/* Please see section 10,
+/* Please see section 10,
page 10-5 "Delayed Trapping" in the PA-RISC 2.0 Architecture manual */
int
occur. */
/* We use "fldd 0(%%sr0,%%sp),%0" to flush the delayed exception */
-
+
/* First: Invalid exception. */
if (excepts & FE_INVALID)
{
union { unsigned long long l; unsigned int sw[2] } s;
/* Get the current status word. */
- __asm__ ("fstd %%fr0,0(%1) \n\t"
- "fldd 0(%1),%%fr0 \n\t"
+ __asm__ ("fstd %%fr0,0(%1) \n\t"
+ "fldd 0(%1),%%fr0 \n\t"
: "=m" (s.l) : "r" (&s.l));
return (s.sw[0] >> 27) & excepts & FE_ALL_EXCEPT;
.text
.export __mpn_addmul_1
-__mpn_addmul_1:
+__mpn_addmul_1:
.proc
.callinfo frame=64,no_calls
.entry
ldw -12(%r30),%r1
;! Main loop
-L$loop:
+L$loop:
ldws 0(%r26),%r29
fldws,ma 4(%r25),%fr5
add %r29,%r20,%r20
addib,<> -1,%r24,L$loop
ldw -12(%r30),%r1
-L$end:
+L$end:
ldw 0(%r26),%r29
add %r29,%r20,%r20
stws,ma %r20,4(%r26)
bv 0(%r2)
ldo -64(%r30),%r30
-L$just_one_limb:
+L$just_one_limb:
xmpyu %fr4,%fr5,%fr6
ldw 0(%r26),%r29
fstds %fr6,-16(%r30)
.text
.export __mpn_mul_1
-__mpn_mul_1:
+__mpn_mul_1:
.proc
.callinfo frame=64,no_calls
.entry
ldw -12(%r30),%r1
;! Main loop
-L$loop:
+L$loop:
fldws,ma 4(%r25),%fr5
stws,ma %r20,4(%r26)
addc %r28,%r1,%r20
addib,<> -1,%r24,L$loop
ldw -12(%r30),%r1
-L$end:
+L$end:
stws,ma %r20,4(%r26)
addc %r28,%r1,%r20
ldw -16(%r30),%r28
bv 0(%r2)
ldo -64(%r30),%r30
-L$just_one_limb:
+L$just_one_limb:
xmpyu %fr4,%fr5,%fr6
fstds %fr6,-16(%r30)
ldw -16(%r30),%r28
.text
.export __mpn_submul_1
-__mpn_submul_1:
+__mpn_submul_1:
.proc
.callinfo frame=64,no_calls
.entry
ldw -12(%r30),%r1
;! Main loop
-L$loop:
+L$loop:
ldws 0(%r26),%r29
fldws,ma 4(%r25),%fr5
sub %r29,%r20,%r22
addib,<> -1,%r24,L$loop
ldw -12(%r30),%r1
-L$end:
+L$end:
ldw 0(%r26),%r29
sub %r29,%r20,%r22
add %r22,%r20,%r0
bv 0(%r2)
ldo -64(%r30),%r30
-L$just_one_limb:
+L$just_one_limb:
xmpyu %fr4,%fr5,%fr6
ldw 0(%r26),%r29
fstds %fr6,-16(%r30)
;! d gr23
.text
-L$0000:
+L$0000:
.word 0x43f00000
.word 0x0
.export __udiv_qrnnd
-__udiv_qrnnd:
+__udiv_qrnnd:
.proc
.callinfo frame=64,no_calls
.entry
fcnvxf,dbl,dbl %fr5,%fr5
fldds 0(%r1),%fr4
fadd,dbl %fr4,%fr5,%fr5
-L$1:
+L$1:
fcpy,sgl %fr0,%fr6L
fldws -12(%r30),%fr6R
fcnvxf,dbl,dbl %fr6,%fr4
add %r22,%r23,%r22
ldo -1(%r28),%r28
-L$2:
+L$2:
bv 0(%r2)
stws %r22,0(%r26)
int tmp = 0;
/* This should be a memory barrier to newer compilers */
__asm__ __volatile__ ("stw,ma %1,0(%0)"
- : : "r" (lock), "r" (tmp) : "memory");
+ : : "r" (lock), "r" (tmp) : "memory");
return 0;
}
int tmp = 0;
/* This should be a memory barrier to newer compilers */
__asm__ __volatile__ ("stw,ma %1,0(%0)"
- : : "r" (lock), "r" (tmp) : "memory");
+ : : "r" (lock), "r" (tmp) : "memory");
return 0;
}
elf_gregset_t. The thread descriptor is sizeof (struct pthread) away. */
# define DB_THREAD_SELF \
REGISTER (32, 32, 53 * 4, -sizeof (struct pthread))
-
+
/* Access to data in the thread descriptor is easy. */
# define THREAD_GETMEM(descr, member) \
descr->member
-;! HP-PA __mpn_rshift --
+;! HP-PA __mpn_rshift --
;! Copyright (C) 1992-2013 Free Software Foundation, Inc.
.import __libc_csu_fini, code
.import __libc_csu_init, code
- /* Have the linker create plabel words so we get PLABEL32
- relocs and not 21/14. The use of 21/14 relocs is only
+ /* Have the linker create plabel words so we get PLABEL32
+ relocs and not 21/14. The use of 21/14 relocs is only
supported in the latest dynamic linker. */
.section .rodata
.align 4
r24 - argv
r23 - False _dl_fini plabel address
- This function is called from the lower half of RTLD_START.
+ This function is called from the lower half of RTLD_START.
The call to __libc_start_main expects:
4. r23 - __libc_csu_init
5. sp-52 - __libc_csu_fini
6. sp-56 - rtld_fini
- 7. sp-60 - stackend */
+ 7. sp-60 - stackend */
.proc
.callinfo
#include "config.h"
#undef ASM_LINE_SEP
-#define ASM_LINE_SEP !
+#define ASM_LINE_SEP !
#ifdef __ASSEMBLER__
/* GCC does everything for us. */
#ifdef PROF
-#define CALL_MCOUNT
+#define CALL_MCOUNT
#else
#define CALL_MCOUNT /* Do nothing. */
#endif
/* Get the current exceptions. */
_FPU_GETCW (temp);
- /* We only save the relevant bits here. In particular, care has to be
+ /* We only save the relevant bits here. In particular, care has to be
taken with the CAUSE bits, as an inadvertent restore later on could
generate unexpected exceptions. */
/* Get current state. */
_FPU_GETCW (cw);
- /* Set flag bits (which are accumulative), and *also* set the
+ /* Set flag bits (which are accumulative), and *also* set the
cause bits. The setting of the cause bits is what actually causes
the hardware to generate the exception, if the corresponding enable
bit is set as well. */
sll t0, a1, 16
or a1, t0 # a1 is now pattern in full word
-L(ueven):
+L(ueven):
subu t0, zero, a0 # Unaligned address?
andi t0, 0x3
beq t0, zero, L(chkw)
SWHI a1, 0(a0) # Yes, handle first unaligned part
addu a0, t0 # Now both a0 and a2 are updated
-L(chkw):
+L(chkw):
andi t0, a2, 0x7 # Enough left for one loop iteration?
beq t0, a2, L(chkl)
subu a3, a2, t0
addu a3, a0 # a3 is last loop address +1
move a2, t0 # a2 is now # of bytes left after loop
-L(loopw):
+L(loopw):
addiu a0, 8 # Handle 2 words pr. iteration
sw a1, -8(a0)
bne a0, a3, L(loopw)
sw a1, -4(a0)
-L(chkl):
+L(chkl):
andi t0, a2, 0x4 # Check if there is at least a full
beq t0, zero, L(last8) # word remaining after the loop
subu a2, t0
sw a1, 0(a0) # Yes...
addiu a0, 4
-L(last8):
+L(last8):
blez a2, L(exit) # Handle last 8 bytes (if cnt>0)
addu a3, a2, a0 # a3 is last address +1
-L(lst8l):
+L(lst8l):
addiu a0, 1
bne a0, a3, L(lst8l)
sb a1, -1(a0)
-L(exit):
+L(exit):
j ra # Bye, bye
nop
PTR_LA t9, C_SYMBOL_NAME (__sigsetjmp)
#if _MIPS_SIM == _ABIO32
nop
-#endif
+#endif
RESTORE_GP64_REG
move a1, zero /* Pass a second argument of zero. */
#ifdef __PIC__
PTR_LA t9, C_SYMBOL_NAME (__sigsetjmp)
#if _MIPS_SIM == _ABIO32
nop
-#endif
+#endif
RESTORE_GP64_REG
dli a1, 1 /* Pass a second argument of one. */
#ifdef __PIC__
/* void *memset(void *s, int c, size_t n);
-
+
This could probably be optimized further. */
#if __MIPSEB
PTR_LA t9, __sigsetjmp_aux
#if _MIPS_SIM == _ABIO32
nop
-#endif
+#endif
RESTORE_GP64_REG
#if _MIPS_SIM != _ABIO32
move a4, gp
char **argv, void (*init) (void), void (*fini) (void),
void (*rtld_fini) (void), void *stack_end)
*/
-
+
.text
.globl ENTRY_POINT
.type ENTRY_POINT,@function
PTR_LA $4, main /* main */
PTR_L $5, 0($29) /* argc */
PTR_ADDIU $6, $29, PTRSIZE /* argv */
-
+
/* Allocate space on the stack for seven arguments (o32 only)
- and make sure the stack is aligned to double words (8 bytes)
+ and make sure the stack is aligned to double words (8 bytes)
on o32 and quad words (16 bytes) on n32 and n64. */
-
+
and $29, -2 * SZREG
# if _MIPS_SIM == _ABIO32
PTR_SUBIU $29, 32
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
-/* We want to specify the bit pattern of the __fe_*_env constants, so
+/* We want to specify the bit pattern of the __fe_*_env constants, so
pretend they're really `long long' instead of `double'. */
/* If the default argument is used we use this value. Disable all
signalling exceptions as default. */
-const unsigned long long __fe_dfl_env __attribute__ ((aligned (8))) =
+const unsigned long long __fe_dfl_env __attribute__ ((aligned (8))) =
0x000000003e000000ULL;
/* Floating-point environment where none of the exceptions are masked. */
-const unsigned long long __fe_enabled_env __attribute__ ((aligned (8))) =
+const unsigned long long __fe_enabled_env __attribute__ ((aligned (8))) =
0xfff80000000000f8ULL;
/* Floating-point environment with the NI bit set. */
-const unsigned long long __fe_nonieee_env __attribute__ ((aligned (8))) =
+const unsigned long long __fe_nonieee_env __attribute__ ((aligned (8))) =
0xfff8000000000004ULL;
get the fegetround definition. */
#include <fenv.h>
-
+
#endif /* fenv_libc.h */
- r16 = WORD_0.
- r17 == r1 + 16.
- r27 holds saved lr to restore.
-
+
On exit:
- r0 is incremented by 64.
- r1 is incremented by 64, unless that would point to a word
/* This copies unaligned words until either there are fewer
than 4 bytes left to copy, or until the destination pointer
is cache-aligned, whichever comes first.
-
+
On entry:
- r0 is the next store address.
- r1 points 4 bytes past the load address corresponding to r0.
{ mvz r3, r8, r1; wh64 r0 }
/* This loop runs twice.
-
+
On entry:
- r17 is even before the first iteration, and odd before
the second. It is incremented inside the loop. Encountering
#if defined(PIC)
/* Put this at the end of libc's text segment so that all of
- the direct branches from the syscalls are forward, and
+ the direct branches from the syscalls are forward, and
thus predicted not taken. */
.section .text.last, "ax", @progbits
#else
RAOFF= FRAMESZ-(1*SZREG)
GPOFF= FRAMESZ-(2*SZREG)
V0OFF= FRAMESZ-(3*SZREG)
-
+
ENTRY(__syscall_error)
#ifdef __PIC__
.set noat
SETUP_GPX (AT)
#endif
SETUP_GPX64 (t9, AT)
-
+
#if defined (EWOULDBLOCK_sys) && EWOULDBLOCK_sys != EAGAIN
/* We translate the system's EWOULDBLOCK error into EAGAIN.
The GNU C library always defines EWOULDBLOCK==EAGAIN.
# define __ASSUME_IN_NONBLOCK 1
#endif
-/* Support for the pipe2, eventfd2, signalfd4 syscalls was added for alpha
+/* Support for the pipe2, eventfd2, signalfd4 syscalls was added for alpha
after 2.6.33-rc1. */
#if __LINUX_KERNEL_VERSION >= 0x020621
# define __ASSUME_PIPE2 1
unsigned int __pad0;
unsigned long st_atime;
- unsigned long st_atimensec;
+ unsigned long st_atimensec;
unsigned long st_mtime;
unsigned long st_mtimensec;
unsigned long st_ctime;
: (fl)) \
: ((fl) | (((private) ^ FUTEX_PRIVATE_FLAG) \
& THREAD_GETMEM (THREAD_SELF, header.private_futex))))
-# endif
+# endif
#endif
T10: XXXXXXXXXXXXXXXX T11: XXXXXXXXXXXXXXXX RA: XXXXXXXXXXXXXXXX
T12: XXXXXXXXXXXXXXXX AT: XXXXXXXXXXXXXXXX GP: XXXXXXXXXXXXXXXX
SP: XXXXXXXXXXXXXXXX PC: XXXXXXXXXXXXXXXX
-
+
FP0: XXXXXXXXXXXXXXXX FP1: XXXXXXXXXXXXXXXX FP2: XXXXXXXXXXXXXXXX
FP3: XXXXXXXXXXXXXXXX FP4: XXXXXXXXXXXXXXXX FP5: XXXXXXXXXXXXXXXX
FP6: XXXXXXXXXXXXXXXX FP7: XXXXXXXXXXXXXXXX FP8: XXXXXXXXXXXXXXXX
FP24: XXXXXXXXXXXXXXXX FP25: XXXXXXXXXXXXXXXX FP26: XXXXXXXXXXXXXXXX
FP27: XXXXXXXXXXXXXXXX FP28: XXXXXXXXXXXXXXXX FP29: XXXXXXXXXXXXXXXX
FP30: XXXXXXXXXXXXXXXX FPCR: XXXXXXXXXXXXXXXX
-
+
TA0: XXXXXXXXXXXXXXXX TA1: XXXXXXXXXXXXXXXX TA2: XXXXXXXXXXXXXXXX
*/
#define NREGS (32+32+3)
-static const char __attribute__((aligned(8))) regnames[NREGS][8] =
+static const char __attribute__((aligned(8))) regnames[NREGS][8] =
{
" V0: ", " T0: ", " T1: ",
" T2: ", " T3: ", " T4: ",
#define O(FIELD, LF) offsetof(struct sigcontext, FIELD) + LF
-static const int offsets[NREGS] =
+static const int offsets[NREGS] =
{
O(sc_regs[0], 0), O(sc_regs[1], 0), O(sc_regs[2], 1),
O(sc_regs[3], 0), O(sc_regs[4], 0), O(sc_regs[5], 1),
char buf[NREGS*(8+16) + 25 + 80];
char *p = buf;
size_t i;
-
+
p = stpcpy (p, "Register dump:\n\n");
for (i = 0; i < NREGS; ++i)
int this_offset, this_lf;
unsigned long val;
signed long j;
-
+
this_offset = offsets[i];
this_lf = this_offset & 7;
/*
* This is for COMPATIBILITY with Linux/x86 only. Linux/Alpha system
- * calls return an error indication in a3. This allows arbitrary 64bit
+ * calls return an error indication in a3. This allows arbitrary 64bit
* values to be returned in v0 (because negative values are not
* mistaken as error numbers). However, C allows only one value to
* be returned, so the interface below folds the error indication passed in
movs ip, r5, lsl #20
bne .Linval
mov r5, r5, lsr #12
-
+
/* do the syscall */
DO_CALL (mmap2, 0)
: (fl)) \
: ((fl) | (((private) ^ FUTEX_PRIVATE_FLAG) \
& THREAD_GETMEM (THREAD_SELF, header.private_futex))))
-# endif
+# endif
#endif
itt ne
movne r0, r4
RETINSTR(ne, r14)
-
+
/* Fix up LR and the PC. */
str r13,[r0, #MCONTEXT_ARM_SP]
str r14,[r0, #MCONTEXT_ARM_LR]
# File name Caller Syscall name # args Strong name Weak names
# rlimit APIs
-getrlimit - getrlimit i:ip __getrlimit getrlimit
-setrlimit - setrlimit i:ip __setrlimit setrlimit
+getrlimit - getrlimit i:ip __getrlimit getrlimit
+setrlimit - setrlimit i:ip __setrlimit setrlimit
prlimit64 EXTRA prlimit64 i:iipp prlimit64
fanotify_mark EXTRA fanotify_mark i:iiiiis fanotify_mark
*addr = new;
return prev; */
-/* Use the kernel atomic light weight syscalls on hppa. */
+/* Use the kernel atomic light weight syscalls on hppa. */
#define _LWS "0xb0"
#define _LWS_CAS "0"
/* Note r31 is the link register. */
#define _LWS_CLOBBER "r1", "r26", "r25", "r24", "r23", "r22", "r21", "r20", "r28", "r31", "memory"
/* String constant for -EAGAIN. */
-#define _ASM_EAGAIN "-11"
+#define _ASM_EAGAIN "-11"
/* String constant for -EDEADLOCK. */
#define _ASM_EDEADLOCK "-45"
})
#else
# error __ASSUME_LWS_CAS is required to build glibc.
-#endif
+#endif
/* __ASSUME_LWS_CAS */
#endif
#include <bits/errno.h>
/* Non-thread code calls __clone with the following parameters:
- int clone(int (*fn)(void *arg),
- void *child_stack,
- int flags,
+ int clone(int (*fn)(void *arg),
+ void *child_stack,
+ int flags,
void *arg)
-
+
NPTL Code will call __clone with the following parameters:
- int clone(int (*fn)(void *arg),
- void *child_stack,
- int flags,
+ int clone(int (*fn)(void *arg),
+ void *child_stack,
+ int flags,
void *arg,
- int *parent_tidptr,
- struct user_desc *newtls,
+ int *parent_tidptr,
+ struct user_desc *newtls,
int *child_pidptr)
-
+
The code should not mangle the extra input registers.
Syscall expects: Input to __clone:
- 4(r25) - function pointer (r26, arg0)
+ 4(r25) - function pointer (r26, arg0)
0(r25) - argument (r23, arg3)
r26 - clone flags. (r24, arg2)
r25+64 - user stack pointer. (r25, arg1)
Return:
- On success the thread ID of the child process is returend in
+ On success the thread ID of the child process is returend in
the callers context.
- On error return -1, and set errno to the value returned by
+ On error return -1, and set errno to the value returned by
the syscall.
*/
/* Restore the PIC register. */
#ifdef PIC
- copy %r4, %r19 /* parent */
+ copy %r4, %r19 /* parent */
#endif
comib,=,n 0, %ret0, .LthreadStart
/* Successful return from the parent
- No need to restore the PIC register,
+ No need to restore the PIC register,
since we return immediately. */
ldw -84(%sp), %rp
#ifdef RESET_PID
# define CLONE_VM_BIT 23 /* 0x00000100 */
# define CLONE_THREAD_BIT 15 /* 0x00010000 */
- /* Load original clone flags.
+ /* Load original clone flags.
If CLONE_THREAD was passed, don't reset the PID/TID.
If CLONE_VM was passed, we need to store -1 to PID/TID.
If CLONE_VM and CLONE_THREAD were not set store the result
of getpid to PID/TID. */
ldw -56(%sp), %r26
bb,<,n %r26, CLONE_THREAD_BIT, 1f
- bb,< %r26, CLONE_VM_BIT, 2f
+ bb,< %r26, CLONE_VM_BIT, 2f
ldi -1, %ret0
ble 0x100(%sr2, %r0)
ldi __NR_getpid, %r20
#include_next <internaltypes.h>
-#ifndef _INTERNAL_TYPES_H_HPPA_
+#ifndef _INTERNAL_TYPES_H_HPPA_
#define _INTERNAL_TYPES_H_HPPA_ 1
#include <atomic.h>
-/* In GLIBC 2.10 HPPA switched from Linuxthreads to NPTL, and in order
+/* In GLIBC 2.10 HPPA switched from Linuxthreads to NPTL, and in order
to maintain ABI compatibility with pthread_cond_t, some care had to be
taken.
/* Stack must be 64-byte aligned at all times. */
#define STACK_ALIGN 64
/* Size of frame marker in unsigned long words. */
-#define FRAME_SIZE_UL 8
+#define FRAME_SIZE_UL 8
/* Size of frame marker in bytes. */
-#define FRAME_SIZE_BYTES (8 * sizeof(unsigned long))
+#define FRAME_SIZE_BYTES (8 * sizeof(unsigned long))
/* Size of X arguments in bytes. */
#define ARGS(x) (x * sizeof(unsigned long))
va_list ap;
int i;
- /* Create a 64-byte aligned frame to store args. Use ss_sp if
+ /* Create a 64-byte aligned frame to store args. Use ss_sp if
it is available, otherwise be robust and use the currently
saved stack pointer. */
if (ucp->uc_stack.ss_sp && ucp->uc_stack.ss_size)
else
osp = (unsigned long *)ucp->uc_mcontext.sc_gr[30];
- sp = (unsigned long *)((((unsigned long) osp)
- + FRAME_SIZE_BYTES + ARGS(argc) + STACK_ALIGN)
+ sp = (unsigned long *)((((unsigned long) osp)
+ + FRAME_SIZE_BYTES + ARGS(argc) + STACK_ALIGN)
& ~(STACK_ALIGN - 1));
/* Use new frame. */
/* 64bit: r19-r22 are arg7-arg4. */
ucp->uc_mcontext.sc_gr[22+4-i] = va_arg (ap, int);
continue;
- }
+ }
/* All other arguments go on the stack. */
sp[-1 * (FRAME_SIZE_UL + 1 + i)] = va_arg (ap, int);
}
- va_end (ap);
+ va_end (ap);
}
weak_alias(__makecontext, makecontext)
__ptr_t
__mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
{
-
+
__ptr_t ret;
ret = (__ptr_t) INLINE_SYSCALL (mmap, 6, addr, len, prot, flags, fd, offset);
/* Linuxthread type sizes (bytes):
sizeof(pthread_attr_t) = 0x24 (36)
sizeof(pthread_barrier_t) = 0x30 (48)
- sizeof(pthread_barrierattr_t) = 0x4 (4)
+ sizeof(pthread_barrierattr_t) = 0x4 (4)
sizeof(pthread_cond_t) = 0x30 (48)
sizeof(pthread_condattr_t) = 0x4 (4)
sizeof(pthread_mutex_t) = 0x30 (48)
#define __SIZEOF_PTHREAD_ATTR_T 36
#define __SIZEOF_PTHREAD_BARRIER_T 48
#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
-#define __SIZEOF_PTHREAD_COND_T 48
+#define __SIZEOF_PTHREAD_COND_T 48
#define __SIZEOF_PTHREAD_CONDATTR_T 4
-#define __SIZEOF_PTHREAD_MUTEX_T 48
+#define __SIZEOF_PTHREAD_MUTEX_T 48
#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
#define __SIZEOF_PTHREAD_RWLOCK_T 64
#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
binary compatibility. */
int __kind;
/* The old 4-word 16-byte aligned lock. This is initalized
- to all ones by the Linuxthreads PTHREAD_MUTEX_INITIALIZER.
+ to all ones by the Linuxthreads PTHREAD_MUTEX_INITIALIZER.
Unused in NPTL. */
int __compat_padding[4];
/* In the old structure there are 4 words left due to alignment.
the attribute type is not exposed on purpose. However, this structure
is exposed via PTHREAD_COND_INITIALIZER, and because of this, the
Linuxthreads version sets the first four ints to one. In the NPTL
- version we must check, in every function using pthread_cond_t,
+ version we must check, in every function using pthread_cond_t,
for the static Linuxthreads initializer and clear the appropriate
words. */
typedef union
{
/* In the old Linuxthreads pthread_cond_t, this is the
start of the 4-word lock structure, the next four words
- are set all to 1 by the Linuxthreads
+ are set all to 1 by the Linuxthreads
PTHREAD_COND_INITIALIZER. */
int __lock __attribute__ ((aligned(16)));
/* Tracks the initialization of this structure:
: (fl)) \
: ((fl) | (((private) ^ FUTEX_PRIVATE_FLAG) \
& THREAD_GETMEM (THREAD_SELF, header.private_futex))))
-# endif
+# endif
#endif
/* Type for lock object. */
}
#define lll_cond_lock(futex, private) __lll_cond_lock (&(futex), private)
-extern int __lll_timedlock_wait (lll_lock_t *futex, const struct timespec *,
+extern int __lll_timedlock_wait (lll_lock_t *futex, const struct timespec *,
int private) attribute_hidden;
extern int __lll_robust_timedlock_wait (int *futex, const struct timespec *,
int private) attribute_hidden;
/* r26, r25, r24, r23 are free since vfork has no arguments */
ENTRY(__vfork)
- /* We must not create a frame. When the child unwinds to call
+ /* We must not create a frame. When the child unwinds to call
exec it will clobber the same frame that the parent
needs to unwind. */
/* Return, and DO NOT restore rp. The child may have called
functions that updated the frame's rp. This works because
- the kernel ensures rp is preserved across the vfork
+ the kernel ensures rp is preserved across the vfork
syscall. */
bv,n %r0(%rp)
#include_next <pthreadP.h>
-#ifndef _PTHREADP_H_HPPA_
+#ifndef _PTHREADP_H_HPPA_
#define _PTHREADP_H_HPPA_ 1
/* Internal cond functions. */
do arguments (read arg5 and arg6 to registers)
setup frame
-
+
check if there are threads, yes jump to pseudo_cancel
-
+
unthreaded:
syscall
check syscall return (jump to pre_end)
set errno
set return to -1
(jump to pre_end)
-
+
pseudo_cancel:
cenable
syscall
check syscall return (jump to pre_end)
set errno
set return to -1
-
+
pre_end
restore stack
-
+
It is expected that 'ret' and 'END' macros will
- append an 'undo arguments' and 'return' to the
+ append an 'undo arguments' and 'return' to the
this PSEUDO macro. */
-
+
# undef PSEUDO
# define PSEUDO(name, syscall_name, args) \
ENTRY (__##syscall_name##_nocancel) \
/* Do not load oSS_SP into %sp. The value of oSS_SP indicates
the start of the user allocated stack, but not the sp that
- should be used by the new context. In fact makecontext
+ should be used by the new context. In fact makecontext
will create a frame, and adjust sp as required. We do not
support calling getcontext and modifying ss_sp without
a call to makecontext to synchronize ss_sp into the machine
/* No further context available. Exit now. */
bl _exit, %r2
ldi -1, %r26
-
+
.Lerror:
/* Epilogue */
# proper socket implementations:
accept - accept Ci:iBN __libc_accept __accept accept
bind - bind i:ipi __bind bind
-connect - connect Ci:ipi __libc_connect __connect_internal __connect connect
+connect - connect Ci:ipi __libc_connect __connect_internal __connect connect
getpeername - getpeername i:ipp __getpeername getpeername
getsockname - getsockname i:ipp __getsockname getsockname
getsockopt - getsockopt i:iiiBN __getsockopt getsockopt
socket - socket i:iii __socket socket
socketpair - socketpair i:iiif __socketpair socketpair
-setrlimit - setrlimit i:ip __setrlimit setrlimit
-getrlimit - getrlimit i:ip __getrlimit getrlimit
+setrlimit - setrlimit i:ip __setrlimit setrlimit
+getrlimit - getrlimit i:ip __getrlimit getrlimit
prlimit64 EXTRA prlimit64 i:iipp __prlimit64 prlimit64@@GLIBC_2.17
INTERNAL_SYSCALL, and all the generated pure assembly syscall wrappers.
How often the function is used is unknown. */
-long int
-syscall (long int __sysno, ...)
+long int
+syscall (long int __sysno, ...)
{
/* FIXME: Keep this matching INLINE_SYSCALL for hppa */
va_list args;
arg4 = va_arg (args, long int);
arg5 = va_arg (args, long int);
va_end (args);
-
+
{
register unsigned long int __res asm("r28");
PIC_REG_DEF
/* Successful; return the syscall's value. */
rts
#endif
-
+
PSEUDO_END (__socket)
#ifndef NO_WEAK_ALIAS
loadbase = _dl_lookup_symbol_x ("_dl_var_init", l, &ref, l->l_local_scope,
NULL, 0, 1, NULL);
-
+
for (scope = l->l_local_scope; *scope != NULL; scope++)
for (i = 0; i < (*scope)->r_nlist; i++)
if ((*scope)->r_list[i] == loadbase)
: (fl)) \
: ((fl) | (((private) ^ FUTEX_PRIVATE_FLAG) \
& THREAD_GETMEM (THREAD_SELF, header.private_futex))))
-# endif
+# endif
#endif
#if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)
-/* For the nofpu case the old/new versions are the same function. */
+/* For the nofpu case the old/new versions are the same function. */
strong_alias (__getcontext, __novec_getcontext)
compat_symbol (libc, __novec_getcontext, getcontext, GLIBC_2_3_3)
#if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)
-/* For the nofpu case the old/new versions are the same function. */
+/* For the nofpu case the old/new versions are the same function. */
strong_alias (__setcontext, __novec_setcontext)
compat_symbol (libc, __novec_setcontext, setcontext, GLIBC_2_3_3)
#if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)
-/* For the nofpu case the old/new versions are the same function. */
+/* For the nofpu case the old/new versions are the same function. */
strong_alias (__swapcontext, __novec_swapcontext)
compat_symbol (libc, __novec_swapcontext, swapcontext, GLIBC_2_3_3)
/* We need to switch the argument convention around from
libc to kernel:
-
+
libc:
r0 fn
r1 child_stack
r4 ptid
r5 tls
r6 ctid
-
+
kernel:
r0 flags
r1 child_stack [same as libc]
r2 ptid
r3 ctid
r4 tls
-
+
Plus the callee-saves as described at .Lthread_start, below. */
{
move r32, r0
movei r1, EINVAL
j SYSCALL_ERROR_NAME
}
-
+
/* This function expects to receive:
-
+
sp: the top of a valid stack area
r30: clone() flags
r31: the argument to pass to the user function
mtspr EX_CONTEXT_0_1, r12
iret
jrp lr /* keep the backtracer happy */
-
+
.Lsigreturn:
/* This is a context obtained from a signal handler.
Perform a full restore by pushing the context
/* Save the current context. */
jal __getcontext
-
+
/* Tear down the frame and restore r0, r1, and lr. */
{
BNEZ r0, .Lerror