mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-10-31 22:10:34 +03:00 
			
		
		
		
	* configure: Regenerated. * config.h.in (ASM_ALPHA_NG_SYMBOL_PREFIX): Remove #undef. * sysdeps/alpha/dl-machine.h (TRAMPOLINE_TEMPLATE): Use !samegp. (RTLD_START): Likewise. Access _dl_skip_args, _rtld_local, and _dl_fini via gp-relative relocations. * sysdeps/alpha/fpu/e_sqrt.c: Use !samegp. * elf/tls-macros.h: Add alpha versions. * sysdeps/alpha/dl-machine.h (elf_machine_rela): Handle TLS relocs. * sysdeps/unix/alpha/sysdep.S: Support USE___THREAD. * sysdeps/unix/alpha/sysdep.h: Likewise. Add SYSCALL_ERROR_HANDLER. * sysdeps/unix/sysv/linux/alpha/brk.S: Use it. * sysdeps/unix/sysv/linux/alpha/clone.S: Likewise. * sysdeps/unix/sysv/linux/alpha/getitimer.S: Likewise. * sysdeps/unix/sysv/linux/alpha/getrusage.S: Likewise. * sysdeps/unix/sysv/linux/alpha/gettimeofday.S: Likewise. * sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Likewise. * sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise. * sysdeps/unix/sysv/linux/alpha/rt_sigaction.S: Likewise. * sysdeps/unix/sysv/linux/alpha/select.S: Likewise. * sysdeps/unix/sysv/linux/alpha/setitimer.S: Likewise. * sysdeps/unix/sysv/linux/alpha/settimeofday.S: Likewise. * sysdeps/unix/sysv/linux/alpha/sigsuspend.S: Likewise. * sysdeps/unix/sysv/linux/alpha/syscall.S: Likewise. * sysdeps/unix/sysv/linux/alpha/utimes.S: Likewise. * sysdeps/unix/sysv/linux/alpha/wait4.S: Likewise. * sysdeps/unix/sysv/linux/alpha/sysdep.h: Re-include protect. Kill argument registers across the inline syscall. * sysdeps/unix/sysv/linux/alpha/clone.S: Add user_tid and tls args. * linuxthreads/sysdeps/alpha/tls.h: New file. * sysdeps/alpha/dl-tls.h: New file.
		
			
				
	
	
		
			82 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /* Copyright (C) 1993, 1995, 1996, 1997 Free Software Foundation, Inc.
 | |
|    This file is part of the GNU C Library.
 | |
|    Contributed by Brendan Kehoe <brendan@zen.org>, 1993.
 | |
| 
 | |
|    The GNU C Library is free software; you can redistribute it and/or
 | |
|    modify it under the terms of the GNU Lesser General Public
 | |
|    License as published by the Free Software Foundation; either
 | |
|    version 2.1 of the License, or (at your option) any later version.
 | |
| 
 | |
|    The GNU C Library is distributed in the hope that it will be useful,
 | |
|    but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | |
|    Lesser General Public License for more details.
 | |
| 
 | |
|    You should have received a copy of the GNU Lesser General Public
 | |
|    License along with the GNU C Library; if not, write to the Free
 | |
|    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
 | |
|    02111-1307 USA.  */
 | |
| 
 | |
| /* __brk is a special syscall under Linux since it never returns an
 | |
|    error.  Instead, the error condition is indicated by returning the old
 | |
|    break value (instead of the new, requested one).  */
 | |
| 
 | |
| #include <sysdep.h>
 | |
| #define _ERRNO_H
 | |
| #include <bits/errno.h>
 | |
| 
 | |
| #ifdef PIC
 | |
| .section .bss
 | |
| 	.align 3
 | |
| 	.globl __curbrk
 | |
| __curbrk: .skip 8
 | |
| 	.type __curbrk,@object
 | |
| 	.size __curbrk,8
 | |
| #else
 | |
| .comm __curbrk, 8
 | |
| #endif
 | |
| 
 | |
| 	.text
 | |
| LEAF(__brk, 8)
 | |
| 	ldgp	gp, 0(t12)
 | |
| 	subq	sp, 8, sp
 | |
| #ifdef PROF
 | |
| 	.set noat
 | |
| 	lda	AT, _mcount
 | |
| 	jsr	AT, (AT), _mcount
 | |
| 	.set at
 | |
| #endif
 | |
| 	.prologue 1
 | |
| 
 | |
| 	/* Save the requested brk across the system call.  */
 | |
| 	stq	a0, 0(sp)
 | |
| 
 | |
| 	ldiq	v0, __NR_brk
 | |
| 	call_pal PAL_callsys
 | |
| 
 | |
| 	ldq	a0, 0(sp)
 | |
| 
 | |
| 	/* Be prepared for an OSF-style brk.  */
 | |
| 	bne	a3, $err1
 | |
| 	beq	v0, $ok
 | |
| 
 | |
| 	/* Correctly handle the brk(0) query case.  */
 | |
| 	cmoveq	a0, v0, a0
 | |
| 	xor	a0, v0, t0
 | |
| 	bne	t0, $err0
 | |
| 
 | |
| 	/* Update __curbrk and return cleanly.  */
 | |
| 	mov	zero, v0
 | |
| $ok:	stq	a0, __curbrk
 | |
| 	addq	sp, 8, sp
 | |
| 	ret
 | |
| 
 | |
| 	/* What a horrible way to die.  */
 | |
| $err0:	ldi	v0, ENOMEM
 | |
| $err1:	addq	sp, 8, sp
 | |
| 	SYSCALL_ERROR_HANDLER
 | |
| 
 | |
| 	END(__brk)
 | |
| 
 | |
| weak_alias (__brk, brk)
 |