mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-10-30 10:45:40 +03:00 
			
		
		
		
	2005-12-16 Thorsten Kukuk <kukuk@suse.de> [BZ #1978] * sysdeps/unix/sysv/linux/internal_statvfs.c (__statvfs_getflags): Map more filesystem types to a string. * sysdeps/unix/sysv/linux/linux_fsinfo.h: Add SYSFS_MAGIC. 2005-12-19 Jakub Jelinek <jakub@redhat.com> * locale/Makefile (programs/%-kw.h): Run $(GPERF) inside of the programs subdirectory. * sysdeps/powerpc/powerpc32/__longjmp-common.S (__longjmp): Use PTR_DEMANGLE for PC if defined. * sysdeps/powerpc/powerpc64/__longjmp-common.S (__longjmp): Likewise. * sysdeps/unix/sysv/linux/ia64/__longjmp.S (__longjmp): Likewise. * sysdeps/s390/s390-32/__longjmp.c (__longjmp): Xor %r14 with THREAD_GET_POINTER_GUARD () if PTR_DEMANGLE is defined. * sysdeps/s390/s390-64/__longjmp.c (__longjmp): Likewise. * sysdeps/powerpc/powerpc32/setjmp-common.S (__sigsetjmp): Use PTR_MANGLE for PC if defined. * sysdeps/powerpc/powerpc64/setjmp-common.S (__sigsetjmp): Likewise. * sysdeps/s390/s390-32/setjmp.S (__sigsetjmp): Likewise. Avoid call to __sigjmp_save if IS_IN_rtld. * sysdeps/s390/s390-32/elf/setjmp.S (__sigsetjmp): Likewise. * sysdeps/s390/s390-64/setjmp.S (__sigsetjmp): Likewise. * sysdeps/s390/s390-64/elf/setjmp.S (__sigsetjmp): Likewise. * sysdeps/unix/sysv/linux/ia64/setjmp.S (__sigsetjmp): Likewise. * sysdeps/unix/sysv/linux/ia64/sysdep.h (PTR_MANGLE, PTR_DEMANGLE): Define. * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h: Include tls.h. (PTR_MANGLE, PTR_DEMANGLE): Define. * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h: Include tls.h (PTR_MANGLE, PTR_DEMANGLE): Define. * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Include tls.h. (PTR_MANGLE, PTR_DEMANGLE): Define. (SYSCALL_ERROR_HANDLER): Add missing semicolons. * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Include tls.h. (PTR_MANGLE, PTR_DEMANGLE): Define. * sysdeps/unix/sysv/linux/s390/s390-64/socket.S (__socket): Add SYSCALL_ERROR_HANDLER. 2005-12-19 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/sparc/sparc32/socket.S: Handle NO_WEAK_ALIAS. * sysdeps/unix/sysv/linux/sparc/sparc64/socket.S: Likewise. Patch by Clint Adams. 2005-12-16 Martin Schwidefsky <schwidefsky@de.ibm.com> * sysdeps/unix/sysv/linux/s390/sys/user.h: Copy struct user and dependent definitions from the kernel header to sys/user.h and remove the #include of asm/user.h.
		
			
				
	
	
		
			200 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			200 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /* Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005
 | |
|    Free Software Foundation, Inc.
 | |
|    Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
 | |
| 
 | |
|    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.
 | |
| 
 | |
|    The layout of the jmp_buf is as follows.  This is subject to change
 | |
|    and user-code should never depend on the particular layout of
 | |
|    jmp_buf!
 | |
| 
 | |
| 
 | |
|   	offset:	description:
 | |
| 	-------	------------
 | |
|   	0x000	stack pointer (r12)	; unchangeable (see _JMPBUF_UNWINDS)
 | |
|   	0x008	r1 (gp)
 | |
| 	0x010	caller's unat
 | |
| 	0x018	fpsr
 | |
|   	0x020	r4
 | |
|   	0x028	r5
 | |
|   	0x030	r6
 | |
|   	0x038	r7
 | |
|   	0x040	rp (b0)
 | |
|   	0x048	b1
 | |
|   	0x050	b2
 | |
|   	0x058	b3
 | |
|   	0x060	b4
 | |
|   	0x068	b5
 | |
|   	0x070	ar.pfs
 | |
|   	0x078	ar.lc
 | |
|   	0x080	pr
 | |
|   	0x088	ar.bsp			; unchangeable (see __longjmp.S)
 | |
|   	0x090	ar.unat
 | |
| 	0x098	&__jmp_buf	; address of the jmpbuf (needed to locate NaT bits in unat)
 | |
| 	0x0a0	 f2
 | |
| 	0x0b0	 f3
 | |
| 	0x0c0	 f4
 | |
| 	0x0d0	 f5
 | |
| 	0x0e0	f16
 | |
|   	0x0f0	f17
 | |
|   	0x100	f18
 | |
|   	0x110	f19
 | |
|   	0x120	f20
 | |
|   	0x130	f21
 | |
|   	0x130	f22
 | |
|   	0x140	f23
 | |
|   	0x150	f24
 | |
|   	0x160	f25
 | |
|   	0x170	f26
 | |
|   	0x180	f27
 | |
|   	0x190	f28
 | |
|   	0x1a0	f29
 | |
|   	0x1b0	f30
 | |
|   	0x1c0	f31 */
 | |
| 
 | |
| #include <sysdep.h>
 | |
| #include <features.h>
 | |
| 
 | |
| 	/* The following two entry points are the traditional entry points: */
 | |
| 
 | |
| LEAF(setjmp)
 | |
| 	alloc r8=ar.pfs,2,0,0,0
 | |
| 	mov in1=1
 | |
| 	br.cond.sptk.many _GI___sigsetjmp
 | |
| END(setjmp)
 | |
| 
 | |
| LEAF(_setjmp)
 | |
| 	alloc r8=ar.pfs,2,0,0,0
 | |
| 	mov in1=0
 | |
| 	br.cond.sptk.many _GI___sigsetjmp
 | |
| END(_setjmp)
 | |
| libc_hidden_def (_setjmp)
 | |
| 
 | |
| 	/* __sigsetjmp(__jmp_buf buf, int savemask) */
 | |
| 
 | |
| ENTRY(__sigsetjmp)
 | |
| 	.prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(2)
 | |
| 	alloc loc1=ar.pfs,2,5,2,0
 | |
| 	.save ar.unat, loc2
 | |
| 	mov loc2=ar.unat
 | |
| 	;;
 | |
| 	mov r17=ar.fpsr
 | |
| 	mov r2=in0
 | |
| 	add r3=8,in0
 | |
| 	;;
 | |
| .mem.offset 8,0;	st8.spill.nta [r2]=sp,16	// r12 (sp)
 | |
| .mem.offset 0,0;	st8.spill.nta [r3]=gp,16	// r1 (gp)
 | |
| 	;;
 | |
| 	st8.nta [r2]=loc2,16		// save caller's unat
 | |
| 	st8.nta [r3]=r17,16		// save fpsr
 | |
| 	add r8=0xa0,in0
 | |
| 	;;
 | |
| .mem.offset 8,0;	st8.spill.nta [r2]=r4,16	// r4
 | |
| .mem.offset 0,0;	st8.spill.nta [r3]=r5,16	// r5
 | |
| 	add r9=0xb0,in0
 | |
| 	;;
 | |
| 	stf.spill.nta [r8]=f2,32
 | |
| 	stf.spill.nta [r9]=f3,32
 | |
| 	mov loc0=rp
 | |
| 	.body
 | |
| 	;;
 | |
| 	stf.spill.nta [r8]=f4,32
 | |
| 	stf.spill.nta [r9]=f5,32
 | |
| 	mov r17=b1
 | |
| 	;;
 | |
| 	stf.spill.nta [r8]=f16,32
 | |
| 	stf.spill.nta [r9]=f17,32
 | |
| 	mov r18=b2
 | |
| 	;;
 | |
| 	stf.spill.nta [r8]=f18,32
 | |
| 	stf.spill.nta [r9]=f19,32
 | |
| 	mov r19=b3
 | |
| 	;;
 | |
| 	stf.spill.nta [r8]=f20,32
 | |
| 	stf.spill.nta [r9]=f21,32
 | |
| 	mov r20=b4
 | |
| 	;;
 | |
| 	stf.spill.nta [r8]=f22,32
 | |
| 	stf.spill.nta [r9]=f23,32
 | |
| 	mov r21=b5
 | |
| 	;;
 | |
| 	stf.spill.nta [r8]=f24,32
 | |
| 	stf.spill.nta [r9]=f25,32
 | |
| 	mov r22=ar.lc
 | |
| 	;;
 | |
| 	stf.spill.nta [r8]=f26,32
 | |
| 	stf.spill.nta [r9]=f27,32
 | |
| 	mov r24=pr
 | |
| 	;;
 | |
| 	stf.spill.nta [r8]=f28,32
 | |
| 	stf.spill.nta [r9]=f29,32
 | |
| #ifdef PTR_MANGLE
 | |
| 	mov loc3=loc0
 | |
| 	;;
 | |
| 	PTR_MANGLE (loc3, loc4)
 | |
| #else
 | |
| 	;;
 | |
| #endif
 | |
| 	stf.spill.nta [r8]=f30
 | |
| 	stf.spill.nta [r9]=f31
 | |
| 
 | |
| .mem.offset 8,0;	st8.spill.nta [r2]=r6,16	// r6
 | |
| .mem.offset 0,0;	st8.spill.nta [r3]=r7,16	// r7
 | |
| 	;;
 | |
| 	mov r23=ar.bsp
 | |
| 	mov r25=ar.unat
 | |
| 	mov out0=in0
 | |
| 
 | |
| #ifdef PTR_MANGLE
 | |
| 	st8.nta [r2]=loc3,16		// b0
 | |
| #else
 | |
| 	st8.nta [r2]=loc0,16		// b0
 | |
| #endif
 | |
| 	st8.nta [r3]=r17,16		// b1
 | |
| 	mov out1=in1
 | |
| 	;;
 | |
| 	st8.nta [r2]=r18,16		// b2
 | |
| 	st8.nta [r3]=r19,16		// b3
 | |
| 	;;
 | |
| 	st8.nta [r2]=r20,16		// b4
 | |
| 	st8.nta [r3]=r21,16		// b5
 | |
| 	;;
 | |
| 	st8.nta [r2]=loc1,16		// ar.pfs
 | |
| 	st8.nta [r3]=r22,16		// ar.lc
 | |
| 	;;
 | |
| 	st8.nta [r2]=r24,16		// pr
 | |
| 	st8.nta [r3]=r23,16		// ar.bsp
 | |
| 	;;
 | |
| 	st8.nta [r2]=r25		// ar.unat
 | |
| 	st8.nta [r3]=in0		// &__jmp_buf
 | |
| #if defined NOT_IN_libc && defined IS_IN_rtld
 | |
| 	/* In ld.so we never save the signal mask.  */
 | |
| 	;;
 | |
| #else
 | |
| 	br.call.dpnt.few rp=__sigjmp_save
 | |
| #endif
 | |
| .ret0:					// force a new bundle ::q
 | |
| 	mov.m ar.unat=loc2		// restore caller's unat
 | |
| 	mov rp=loc0
 | |
| 	mov ar.pfs=loc1
 | |
| 	mov r8=0
 | |
| 	ret
 | |
| END(__sigsetjmp)
 | |
| strong_alias(__sigsetjmp, _GI___sigsetjmp)
 | |
| 
 | |
| weak_extern(_setjmp)
 | |
| weak_extern(setjmp)
 |