mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-10-30 10:45:40 +03:00 
			
		
		
		
	1998-12-31 Ulrich Drepper <drepper@cygnus.com> * iconvdata/Makefile: Use rpath $ORIGIN for modules which use any of the conversion libraries. * include/features.h: Mention latest extensions in _POSIX_C_SOURCE description. * libio/genops.c (list_all_lock): New variable. (_IO_un_link, _IO_link_in): Acquire lock before modifying _IO_list_all. [PR libc/911]. * sysdeps/i386/i686/strtok.s: Add missing cld. * sysdeps/i386/i686/mempcpy.S: New file. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> Suppress parentheses warnings: * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c (DL_FIND_ARG_COMPONENTS): here, * sysdeps/powerpc/dl-machine.c: here, * sysdeps/powerpc/fclrexcpt.c (feclearexcept): here, * sysdeps/powerpc/fesetround.c (fesetround): here, * sysdeps/powerpc/feupdateenv.c (feupdateenv): here, * sysdeps/powerpc/fraiseexcpt.c (feraiseexcept): here, * sysdeps/powerpc/fsetexcptflg.c (fesetexceptflag): here, * sysdeps/powerpc/s_rint.c (__rint): here, * sysdeps/powerpc/s_rintf.c (__rintf): here, * sysdeps/powerpc/w_sqrt.c (__sqrt): here, * sysdeps/powerpc/w_sqrtf.c (__sqrtf): and here. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> * wcsmbs/wcstold.c [__NO_LONG_DOUBLE_MATH]: Include wchar.h. * wcsmbs/wcstold_l.c [__NO_LONG_DOUBLE_MATH]: Likewise. Also define appropropriate prototypes, correct procedure names. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> * sysdeps/generic/crypt-entry.c: Prototype __crypt_r, suppress warning. (__crypt_r): Add __restrict. * sysdeps/generic/crypt.h: Remove internal routine. Add __restrict. 1998-12-31 Ulrich Drepper <drepper@cygnus.com> * stdlib/longlong.h: Add missing #else in SPARC definitions. 1998-12-30 Andreas Jaeger <aj@arthur.rhein-neckar.de> Patches by Ralf Baechle <ralf@gnu.org>: * sysdeps/unix/sysv/linux/mips/sgidefs.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/asm.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/regdef.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/fpregdef.h: Removed. * sysdeps/unix/sysv/linux/mips/regdef.h: Removed. * sysdeps/unix/sysv/linux/mips/fpregdef.h: Removed. * sysdeps/unix/sysv/linux/mips/Makefile: Remove delete files. * sysdeps/unix/sysv/linux/mips/Dist: Remove deleted files. * sysdeps/mips/sys/fpregdef.h: New files, enhanced versions of deleted linux specific files. * sysdeps/mips/sys/asm.h: Likewise. * sysdeps/mips/sgidefs.h: Likewise. * sysdeps/mips/fpregdef.h: Likewise. * sysdeps/mips/regdef.h: Likewise. * sysdeps/mips/Makefile: Add new headers. * sysdeps/mips/Dist: Add new files. * sysdeps/mips/fpu_control.h (_FPU_DEFAULT): Change value. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * iconvdata/Makefile: Remove variable assignments and rules that are now auto-generated. Include $(objpfx)iconv-rules instead. Btw, that removes a few typos. (charmaps): New variable. ($(objpfx)iconv-rules): New target. (gen-8bit-modules): Renamed from sed-generated-headers, remove .h suffixes. (gen-8bit-gap-modules): Renamed from awk-generated-headers, remove .h suffixes. (gen-special-modules): New variable. (generated-modules): New variable. (headers): Use it. (before-compile): Likewise. (generated): Likewise, and add iconv-rules. * iconvdata/euc-cn.c: Renamed from euccn.c. * iconvdata/euc-jp.c: Renamed from eucjp.c. * iconvdata/euc-kr.c: Renamed from euckr.c. * iconvdata/euc-tw.c: Renamed from euctw.c. * iconvdata/iso_6937.c: Renamed from iso6937.c. * iconvdata/iso_6937-2.c: Renamed from iso6937-2.c. * iconvdata/t.61.c: Renamed from t61.c. * iconvdata/Makefile (distribute): Adjusted for those renames. Remove $(objpfx) from names. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * sysdeps/generic/hp-timing.h: Fix comment. * sysdeps/generic/dl-hash.h: Likewise. * sysdeps/i386/i686/hp-timing.h: Likewise. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * posix/fnmatch.c (fnmatch): Always pass unsigned char values to FOLD macro. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * nss/db-Makefile ($(VAR_DB)/shadow.db): Fix last change. 1998-12-29 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Sync with current Linux 2.1.132 kernel sources. 1998-12-28 Andreas Jaeger <aj@arthur.rhein-neckar.de> Patches by Ralf Baechle <ralf@gnu.org> for Linux/MIPS: * sysdeps/unix/sysv/linux/mips/syscalls.list: Add ipc, change pread/pwrite and llseek calls. * sysdeps/unix/sysv/linux/mips/sysdep.S: New file. 1998-12-29 Wolfram Gloger <wmglo@dent.med.uni-muenchen.de> * malloc/thread-m.h [_LIBC] : Fix for NO_THREADS case.
		
			
				
	
	
		
			378 lines
		
	
	
		
			9.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			378 lines
		
	
	
		
			9.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
 | |
|    This file is part of the GNU C Library.
 | |
|    Contributed by Ralf Baechle <ralf@gnu.org>.
 | |
| 
 | |
|    The GNU C Library is free software; you can redistribute it and/or
 | |
|    modify it under the terms of the GNU Library General Public License as
 | |
|    published by the Free Software Foundation; either version 2 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
 | |
|    Library General Public License for more details.
 | |
| 
 | |
|    You should have received a copy of the GNU Library General Public
 | |
|    License along with the GNU C Library; see the file COPYING.LIB.  If not,
 | |
|    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | |
|    Boston, MA 02111-1307, USA.  */
 | |
| 
 | |
| #ifndef _SYS_ASM_H
 | |
| #define _SYS_ASM_H
 | |
| 
 | |
| #include <sgidefs.h>
 | |
| 
 | |
| #ifndef CAT
 | |
| #ifdef __STDC__
 | |
| #define __CAT(str1,str2) str1##str2
 | |
| #else
 | |
| #define __CAT(str1,str2) str1/**/str2
 | |
| #endif
 | |
| #define CAT(str1,str2) __CAT(str1,str2)
 | |
| #endif
 | |
| 
 | |
| /*
 | |
|  * Macros to handle different pointer/register sizes for 32/64-bit code
 | |
|  *
 | |
|  * 64 bit address space isn't used yet, so we may use the R3000 32 bit
 | |
|  * defines for now.
 | |
|  */
 | |
| #define PTR	.word
 | |
| #define PTRSIZE	4
 | |
| #define PTRLOG	2
 | |
| 
 | |
| /*
 | |
|  * PIC specific declarations
 | |
|  */
 | |
| #ifdef __PIC__
 | |
| #define CPRESTORE(register)                             \
 | |
| 		.cprestore register
 | |
| #define CPADD(register)                                 \
 | |
| 		.cpadd	register
 | |
| #define CPLOAD(register)                                \
 | |
| 		.cpload	register
 | |
| #else
 | |
| #define CPRESTORE(register)
 | |
| #define CPADD(register)
 | |
| #define CPLOAD(register)
 | |
| #endif
 | |
| 
 | |
| /*
 | |
|  * LEAF - declare leaf routine
 | |
|  */
 | |
| #define	LEAF(symbol)                                    \
 | |
| 		.globl	symbol;                         \
 | |
| 		.align	2;                              \
 | |
| 		.type	symbol,@function;               \
 | |
| 		.ent	symbol,0;                       \
 | |
| symbol:		.frame	sp,0,ra
 | |
| 
 | |
| /*
 | |
|  * NESTED - declare nested routine entry point
 | |
|  */
 | |
| #define	NESTED(symbol, framesize, rpc)                  \
 | |
| 		.globl	symbol;                         \
 | |
| 		.align	2;                              \
 | |
| 		.type	symbol,@function;               \
 | |
| 		.ent	symbol,0;                       \
 | |
| symbol:		.frame	sp, framesize, rpc
 | |
| 
 | |
| /*
 | |
|  * END - mark end of function
 | |
|  */
 | |
| #define	END(function)                                   \
 | |
| 		.end	function;		        \
 | |
| 		.size	function,.-function
 | |
| 
 | |
| /*
 | |
|  * EXPORT - export definition of symbol
 | |
|  */
 | |
| #define	EXPORT(symbol)                                  \
 | |
| 		.globl	symbol;                         \
 | |
| symbol:
 | |
| 
 | |
| /*
 | |
|  * ABS - export absolute symbol
 | |
|  */
 | |
| #define	ABS(symbol,value)                               \
 | |
| 		.globl	symbol;                         \
 | |
| symbol		=	value
 | |
| 
 | |
| #define	PANIC(msg)                                      \
 | |
| 		.set	push;				\
 | |
| 		.set	reorder;                        \
 | |
| 		la	a0,8f;                          \
 | |
| 		jal	panic;                          \
 | |
| 9:		b	9b;                             \
 | |
| 		.set	pop;				\
 | |
| 		TEXT(msg)
 | |
| 
 | |
| /*
 | |
|  * Print formated string
 | |
|  */
 | |
| #define PRINT(string)                                   \
 | |
| 		.set	push;				\
 | |
| 		.set	reorder;                        \
 | |
| 		la	a0,8f;                          \
 | |
| 		jal	printk;                         \
 | |
| 		.set	pop;				\
 | |
| 		TEXT(string)
 | |
| 
 | |
| #define	TEXT(msg)                                       \
 | |
| 		.data;                                  \
 | |
| 8:		.asciiz	msg;                            \
 | |
| 		.previous;
 | |
| 
 | |
| /*
 | |
|  * Build text tables
 | |
|  */
 | |
| #define TTABLE(string)                                  \
 | |
| 		.text;                                  \
 | |
| 		.word	1f;                             \
 | |
| 		.previous;                              \
 | |
| 		.data;                                  \
 | |
| 1:		.asciz	string;                         \
 | |
| 		.previous
 | |
| 
 | |
| /*
 | |
|  * MIPS IV pref instruction.
 | |
|  * Use with .set noreorder only!
 | |
|  *
 | |
|  * MIPS IV implementations are free to treat this as a nop.  The R5000
 | |
|  * is one of them.  So we should have an option not to use this instruction.
 | |
|  */
 | |
| #if (_MIPS_ISA == _MIPS_ISA_MIPS4) || (_MIPS_ISA == _MIPS_ISA_MIPS5)
 | |
| #define PREF(hint,addr)                                 \
 | |
| 		pref	hint,addr
 | |
| #define PREFX(hint,addr)                                \
 | |
| 		prefx	hint,addr
 | |
| #else
 | |
| #define PREF
 | |
| #define PREFX
 | |
| #endif
 | |
| 
 | |
| /*
 | |
|  * MIPS ISA IV/V movn/movz instructions and equivalents for older CPUs.
 | |
|  */
 | |
| #if _MIPS_ISA == _MIPS_ISA_MIPS1
 | |
| #define MOVN(rd,rs,rt)                                  \
 | |
| 		.set	push;				\
 | |
| 		.set	reorder;			\
 | |
| 		beqz	rt,9f;                          \
 | |
| 		move	rd,rs;                          \
 | |
| 		.set	pop;				\
 | |
| 9:
 | |
| #define MOVZ(rd,rs,rt)                                  \
 | |
| 		.set	push;				\
 | |
| 		.set	reorder;			\
 | |
| 		bnez	rt,9f;                          \
 | |
| 		move	rd,rt;                          \
 | |
| 		.set	pop;				\
 | |
| 9:
 | |
| #endif /* _MIPS_ISA == _MIPS_ISA_MIPS1 */
 | |
| #if (_MIPS_ISA == _MIPS_ISA_MIPS2) || (_MIPS_ISA == _MIPS_ISA_MIPS3)
 | |
| #define MOVN(rd,rs,rt)                                  \
 | |
| 		.set	push;				\
 | |
| 		.set	noreorder;			\
 | |
| 		bnezl	rt,9f;                          \
 | |
| 		move	rd,rs;                          \
 | |
| 		.set	pop;				\
 | |
| 9:
 | |
| #define MOVZ(rd,rs,rt)                                  \
 | |
| 		.set	push;				\
 | |
| 		.set	noreorder;			\
 | |
| 		beqzl	rt,9f;                          \
 | |
| 		movz	rd,rs;                          \
 | |
| 		.set	pop;				\
 | |
| 9:
 | |
| #endif /* (_MIPS_ISA == _MIPS_ISA_MIPS2) || (_MIPS_ISA == _MIPS_ISA_MIPS3) */
 | |
| #if (_MIPS_ISA == _MIPS_ISA_MIPS4) || (_MIPS_ISA == _MIPS_ISA_MIPS5)
 | |
| #define MOVN(rd,rs,rt)                                  \
 | |
| 		movn	rd,rs,rt
 | |
| #define MOVZ(rd,rs,rt)                                  \
 | |
| 		movz	rd,rs,rt
 | |
| #endif /* (_MIPS_ISA == _MIPS_ISA_MIPS4) || (_MIPS_ISA == _MIPS_ISA_MIPS5) */
 | |
| 
 | |
| /*
 | |
|  * Stack alignment
 | |
|  */
 | |
| #if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2)
 | |
| #define ALSZ	7
 | |
| #define ALMASK	~7
 | |
| #endif
 | |
| #if (_MIPS_ISA == _MIPS_ISA_MIPS3) || (_MIPS_ISA == _MIPS_ISA_MIPS4) || \
 | |
|     (_MIPS_ISA == _MIPS_ISA_MIPS5)
 | |
| #define ALSZ	15
 | |
| #define ALMASK	~15
 | |
| #endif
 | |
| 
 | |
| /*
 | |
|  * Size of a register
 | |
|  */
 | |
| #ifdef __mips64
 | |
| #define SZREG	8
 | |
| #else
 | |
| #define SZREG	4
 | |
| #endif
 | |
| 
 | |
| /*
 | |
|  * Use the following macros in assemblercode to load/store registers,
 | |
|  * pointers etc.
 | |
|  */
 | |
| #if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2)
 | |
| #define REG_S sw
 | |
| #define REG_L lw
 | |
| #define PTR_SUBU subu
 | |
| #define PTR_ADDU addu
 | |
| #endif
 | |
| #if (_MIPS_ISA == _MIPS_ISA_MIPS3) || (_MIPS_ISA == _MIPS_ISA_MIPS4) || \
 | |
|     (_MIPS_ISA == _MIPS_ISA_MIPS5)
 | |
| #define REG_S sd
 | |
| #define REG_L ld
 | |
| /* We still live in a 32 bit address space ...  */
 | |
| #define PTR_SUBU subu
 | |
| #define PTR_ADDU addu
 | |
| #endif
 | |
| 
 | |
| /*
 | |
|  * How to add/sub/load/store/shift C int variables.
 | |
|  */
 | |
| #if (_MIPS_SZINT == 32)
 | |
| #define INT_ADD	add
 | |
| #define INT_ADDI	addi
 | |
| #define INT_ADDU	addu
 | |
| #define INT_ADDIU	addiu
 | |
| #define INT_SUB	add
 | |
| #define INT_SUBI	subi
 | |
| #define INT_SUBU	subu
 | |
| #define INT_SUBIU	subu
 | |
| #define INT_L		lw
 | |
| #define INT_S		sw
 | |
| #define LONG_SLL	sll
 | |
| #define LONG_SLLV	sllv
 | |
| #define LONG_SRL	srl
 | |
| #define LONG_SRLV	srlv
 | |
| #define LONG_SRA	sra
 | |
| #define LONG_SRAV	srav
 | |
| #endif
 | |
| 
 | |
| #if (_MIPS_SZINT == 64)
 | |
| #define INT_ADD	dadd
 | |
| #define INT_ADDI	daddi
 | |
| #define INT_ADDU	daddu
 | |
| #define INT_ADDIU	daddiu
 | |
| #define INT_SUB	dadd
 | |
| #define INT_SUBI	dsubi
 | |
| #define INT_SUBU	dsubu
 | |
| #define INT_SUBIU	dsubu
 | |
| #define INT_L		ld
 | |
| #define INT_S		sd
 | |
| #define LONG_SLL	dsll
 | |
| #define LONG_SLLV	dsllv
 | |
| #define LONG_SRL	dsrl
 | |
| #define LONG_SRLV	dsrlv
 | |
| #define LONG_SRA	dsra
 | |
| #define LONG_SRAV	dsrav
 | |
| #endif
 | |
| 
 | |
| /*
 | |
|  * How to add/sub/load/store/shift C long variables.
 | |
|  */
 | |
| #if (_MIPS_SZLONG == 32)
 | |
| #define LONG_ADD	add
 | |
| #define LONG_ADDI	addi
 | |
| #define LONG_ADDU	addu
 | |
| #define LONG_ADDIU	addiu
 | |
| #define LONG_SUB	add
 | |
| #define LONG_SUBI	subi
 | |
| #define LONG_SUBU	subu
 | |
| #define LONG_SUBIU	subu
 | |
| #define LONG_L		lw
 | |
| #define LONG_S		sw
 | |
| #define LONG_SLL	sll
 | |
| #define LONG_SLLV	sllv
 | |
| #define LONG_SRL	srl
 | |
| #define LONG_SRLV	srlv
 | |
| #define LONG_SRA	sra
 | |
| #define LONG_SRAV	srav
 | |
| #endif
 | |
| 
 | |
| #if (_MIPS_SZLONG == 64)
 | |
| #define LONG_ADD	dadd
 | |
| #define LONG_ADDI	daddi
 | |
| #define LONG_ADDU	daddu
 | |
| #define LONG_ADDIU	daddiu
 | |
| #define LONG_SUB	dadd
 | |
| #define LONG_SUBI	dsubi
 | |
| #define LONG_SUBU	dsubu
 | |
| #define LONG_SUBIU	dsubu
 | |
| #define LONG_L		ld
 | |
| #define LONG_S		sd
 | |
| #define LONG_SLL	dsll
 | |
| #define LONG_SLLV	dsllv
 | |
| #define LONG_SRL	dsrl
 | |
| #define LONG_SRLV	dsrlv
 | |
| #define LONG_SRA	dsra
 | |
| #define LONG_SRAV	dsrav
 | |
| #endif
 | |
| 
 | |
| /*
 | |
|  * How to add/sub/load/store/shift pointers.
 | |
|  */
 | |
| #if (_MIPS_SZLONG == 32)
 | |
| #define PTR_ADD	add
 | |
| #define PTR_ADDI	addi
 | |
| #define PTR_ADDU	addu
 | |
| #define PTR_ADDIU	addiu
 | |
| #define PTR_SUB		add
 | |
| #define PTR_SUBI	subi
 | |
| #define PTR_SUBU	subu
 | |
| #define PTR_SUBIU	subu
 | |
| #define PTR_L		lw
 | |
| #define PTR_S		sw
 | |
| #define PTR_SLL		sll
 | |
| #define PTR_SLLV	sllv
 | |
| #define PTR_SRL		srl
 | |
| #define PTR_SRLV	srlv
 | |
| #define PTR_SRA		sra
 | |
| #define PTR_SRAV	srav
 | |
| 
 | |
| #define PTR_SCALESHIFT	2
 | |
| #endif
 | |
| 
 | |
| #if (_MIPS_SZLONG == 64)
 | |
| #define PTR_ADD	dadd
 | |
| #define PTR_ADDI	daddi
 | |
| #define PTR_ADDU	daddu
 | |
| #define PTR_ADDIU	daddiu
 | |
| #define PTR_SUB		dadd
 | |
| #define PTR_SUBI	dsubi
 | |
| #define PTR_SUBU	dsubu
 | |
| #define PTR_SUBIU	dsubu
 | |
| #define PTR_L		ld
 | |
| #define PTR_S		sd
 | |
| #define PTR_SLL		dsll
 | |
| #define PTR_SLLV	dsllv
 | |
| #define PTR_SRL		dsrl
 | |
| #define PTR_SRLV	dsrlv
 | |
| #define PTR_SRA		dsra
 | |
| #define PTR_SRAV	dsrav
 | |
| 
 | |
| #define PTR_SCALESHIFT	3
 | |
| #endif
 | |
| 
 | |
| /*
 | |
|  * Some cp0 registers were extended to 64bit for MIPS III.
 | |
|  */
 | |
| #if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2)
 | |
| #define MFC0	mfc0
 | |
| #define MTC0	mtc0
 | |
| #endif
 | |
| #if (_MIPS_ISA == _MIPS_ISA_MIPS3) || (_MIPS_ISA == _MIPS_ISA_MIPS4) || \
 | |
|     (_MIPS_ISA == _MIPS_ISA_MIPS5)
 | |
| #define MFC0	dmfc0
 | |
| #define MTC0	dmtc0
 | |
| #endif
 | |
| 
 | |
| #endif /* sys/asm.h */
 |