diff options
Diffstat (limited to 'sysdeps/s390/bits')
-rw-r--r-- | sysdeps/s390/bits/byteswap.h | 86 | ||||
-rw-r--r-- | sysdeps/s390/bits/huge_val.h | 73 | ||||
-rw-r--r-- | sysdeps/s390/bits/setjmp.h | 52 | ||||
-rw-r--r-- | sysdeps/s390/bits/string.h | 144 |
4 files changed, 0 insertions, 355 deletions
diff --git a/sysdeps/s390/bits/byteswap.h b/sysdeps/s390/bits/byteswap.h deleted file mode 100644 index ad20e97dc6..0000000000 --- a/sysdeps/s390/bits/byteswap.h +++ /dev/null @@ -1,86 +0,0 @@ -/* Macros to swap the order of bytes in integer values. s390 version. - Copyright (C) 2000 Free Software Foundation, Inc. - Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). - This file is part of the GNU C Library. - - 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. */ - -#if !defined _BYTESWAP_H && !defined _NETINET_IN_H -# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead." -#endif - -#define __bswap_constant_16(x) \ - ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)) - -/* Swap bytes in 16 bit value. */ -#if defined __GNUC__ && __GNUC__ >= 2 -# define __bswap_16(x) \ - (__extension__ \ - ({ unsigned short int __v; \ - if (__builtin_constant_p (x)) \ - __v = __bswap_constant_16 (x); \ - else { \ - unsigned short int __tmp = (unsigned short int) (x); \ - __asm__ __volatile__ ( \ - "sr %0,%0\n" \ - "la 1,%1\n" \ - "icm %0,2,1(1)\n" \ - "ic %0,0(1)" \ - : "=&d" (__v) : "m" (__tmp) : "1"); \ - } \ - __v; })) -#else -/* This is better than nothing. */ -#define __bswap_16(x) __bswap_constant_16 (x) -#endif - -/* Swap bytes in 32 bit value. */ -#define __bswap_constant_32(x) \ - ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \ - (((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24)) - -#if defined __GNUC__ && __GNUC__ >= 2 -# define __bswap_32(x) \ - (__extension__ \ - ({ unsigned int __v; \ - if (__builtin_constant_p (x)) \ - __v = __bswap_constant_32 (x); \ - else { \ - unsigned int __tmp = (unsigned int) (x); \ - __asm__ __volatile__ ( \ - "la 1,%1\n" \ - "icm %0,8,3(1)\n" \ - "icm %0,4,2(1)\n" \ - "icm %0,2,1(1)\n" \ - "ic %0,0(1)" \ - : "=&d" (__v) : "m" (__tmp) : "1"); \ - } \ - __v; })) -#else -# define __bswap_32(x) __bswap_constant_32 (x) -#endif - -#if defined __GNUC__ && __GNUC__ >= 2 -/* Swap bytes in 64 bit value. */ -# define __bswap_64(x) \ - __extension__ \ - ({ union { unsigned long long int __ll; \ - unsigned long int __l[2]; } __w, __r; \ - __w.__ll = (x); \ - __r.__l[0] = __bswap_32 (__w.__l[1]); \ - __r.__l[1] = __bswap_32 (__w.__l[0]); \ - __r.__ll; }) -#endif diff --git a/sysdeps/s390/bits/huge_val.h b/sysdeps/s390/bits/huge_val.h deleted file mode 100644 index 0c8264c90f..0000000000 --- a/sysdeps/s390/bits/huge_val.h +++ /dev/null @@ -1,73 +0,0 @@ -/* `HUGE_VAL' constants for s390 (where it is infinity). - Used by <stdlib.h> and <math.h> functions for overflow. - Copyright (C) 2000 Free Software Foundation, Inc. - Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). - This file is part of the GNU C Library. - - 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 _MATH_H -# error "Never use <bits/huge_val.h> directly; include <math.h> instead." -#endif - -#include <features.h> - -/* IEEE positive infinity (-HUGE_VAL is negative infinity). */ - -#if __GNUC_PREREQ(2,96) -# define HUGE_VAL (__extension__ 0x1.0p2047) -#else -#define __HUGE_VAL_bytes { 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 } - -#define __huge_val_t union { unsigned char __c[8]; double __d; } -#ifdef __GNUC__ -# define HUGE_VAL (__extension__ \ - ((__huge_val_t) { __c: __HUGE_VAL_bytes }).__d) -#else /* Not GCC. */ -static __huge_val_t __huge_val = { __HUGE_VAL_bytes }; -# define HUGE_VAL (__huge_val.__d) -#endif /* GCC. */ -#endif /* GCC 2.95 */ - - -/* ISO C 99 extensions: (float) HUGE_VALF and (long double) HUGE_VALL. */ - -#ifdef __USE_ISOC99 - -# if __GNUC_PREREQ(2,96) - -# define HUGE_VALF (__extension__ 0x1.0p255f) -# define HUGE_VALL (__extension__ 0x1.0p255f) - -# else - -# define __HUGE_VALF_bytes { 0x7f, 0x80, 0, 0 } - -# define __huge_valf_t union { unsigned char __c[4]; float __f; } -# ifdef __GNUC__ -# define HUGE_VALF (__extension__ \ - ((__huge_valf_t) { __c: __HUGE_VALF_bytes }).__f) -# else /* Not GCC. */ -static __huge_valf_t __huge_valf = { __HUGE_VALF_bytes }; -# define HUGE_VALF (__huge_valf.__f) -# endif /* GCC. */ - -/* On 390 there is no 'long double' format. Make it the same as 'double' */ -# define HUGE_VALL HUGE_VAL - -# endif /* GCC 2.95 */ - -#endif /* __USE_ISOC99. */ diff --git a/sysdeps/s390/bits/setjmp.h b/sysdeps/s390/bits/setjmp.h deleted file mode 100644 index 0e4e36e713..0000000000 --- a/sysdeps/s390/bits/setjmp.h +++ /dev/null @@ -1,52 +0,0 @@ -/* Copyright (C) 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - 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. */ - -/* Define the machine-dependent type `jmp_buf'. IBM s390 version. */ - -#ifndef __S390_SETJMP_H__ -#define __S390_SETJMP_H__ - -#define __JB_GPR6 0 -#define __JB_GPR7 1 -#define __JB_GPR8 2 -#define __JB_GPR9 3 -#define __JB_GPR10 4 -#define __JB_GPR11 5 -#define __JB_GPR12 6 -#define __JB_GPR13 7 -#define __JB_GPR14 8 -#define __JB_GPR15 9 - -#ifndef _ASM - -typedef struct { - /* We save registers 6-15. */ - long int gregs[10]; - - /* We save fpu registers 4 and 6. */ - long long fpregs[2]; -} __jmp_buf[1]; - -#endif - -/* Test if longjmp to JMPBUF would unwind the frame - containing a local variable at ADDRESS. */ -#define _JMPBUF_UNWINDS(jmpbuf, address) \ - ((int) (address) < (jmpbuf)->gregs[__JB_GPR15]) - -#endif /* __S390_SETJMP_H__ */ diff --git a/sysdeps/s390/bits/string.h b/sysdeps/s390/bits/string.h deleted file mode 100644 index 791f939225..0000000000 --- a/sysdeps/s390/bits/string.h +++ /dev/null @@ -1,144 +0,0 @@ -/* Optimized, inlined string functions. s390 version. - Copyright (C) 2000, 2001 Free Software Foundation, Inc. - Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). - This file is part of the GNU C Library. - - 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 _STRING_H -# error "Never use <bits/string.h> directly; include <string.h> instead." -#endif - -/* The s390 processors can access unaligned multi-byte variables. */ -#define _STRING_ARCH_unaligned 1 - - -/* We only provide optimizations if the user selects them and if - GNU CC is used. */ -#if !defined __NO_STRING_INLINES && defined __USE_STRING_INLINES \ - && defined __GNUC__ && __GNUC__ >= 2 - -#ifndef __STRING_INLINE -# ifdef __cplusplus -# define __STRING_INLINE inline -# else -# define __STRING_INLINE extern __inline -# endif -#endif - -#define _HAVE_STRING_ARCH_strlen 1 -__STRING_INLINE size_t -strlen (__const char *__str) -{ - size_t __len; - - __asm__ __volatile__ (" sr 0,0\n" - " lr %0,%1\n" - "0: srst 0,%0\n" - " jo 0b\n" - " lr %0,0\n" - " sr %0,%1" - : "=&a" (__len) : "a" (__str) - : "cc", "0" ); - return __len; -} - -/* Copy SRC to DEST. */ -#define _HAVE_STRING_ARCH_strcpy 1 -__STRING_INLINE char * -strcpy (char *__dest, __const char *__src) -{ - char *tmp = __dest; - - __asm__ __volatile__ (" sr 0,0\n" - "0: mvst %0,%1\n" - " jo 0b" - : "+&a" (__dest), "+&a" (__src) : - : "cc", "memory", "0" ); - return tmp; -} - -#define _HAVE_STRING_ARCH_strncpy 1 -__STRING_INLINE char * -strncpy (char *__dest, __const char *__src, size_t __n) -{ - char *tmp = __dest; - - if (__n <= 0) - return tmp; - __asm__ __volatile (" slr %0,%1\n" - "0: icm 0,1,0(%1)\n" - " stc 0,0(%0,%1)\n" - " jz 2f\n" - " la %1,1(%1)\n" - " brct %2,0b\n" - " j 3f\n" - "1: la %1,1(%1)\n" - " stc 0,0(%0,%1)\n" - "2: brct %2,1b\n" - "3:" - : "+&a" (__dest), "+&a" (__src), "+&d" (__n) : - : "cc", "memory", "0" ); - return tmp; -} - -/* Append SRC onto DEST. */ -#define _HAVE_STRING_ARCH_strcat 1 -__STRING_INLINE char * -strcat(char *__dest, const char *__src) -{ - char *tmp = __dest; - - __asm__ __volatile__ (" sr 0,0\n" - "0: srst 0,%0\n" - " jo 0b\n" - " lr %0,0\n" - " sr 0,0\n" - "1: mvst %0,%1\n" - " jo 1b" - : "+&a" (__dest), "+&a" (__src) : - : "cc", "memory", "0" ); - return tmp; -} - -/* Append no more than N characters from SRC onto DEST. */ -#define _HAVE_STRING_ARCH_strncat 1 -__STRING_INLINE char * -strncat (char *__dest, __const char *__src, size_t __n) -{ - char *tmp = __dest; - - if (__n <= 0) - return tmp; - __asm__ __volatile__ (" sr 0,0\n" - "0: srst 0,%0\n" - " jo 0b\n" - " lr %0,0\n" - " slr %0,%1\n" - "1: icm 0,1,0(%1)\n" - " stc 0,0(%0,%1)\n" - " jz 2f\n" - " la %1,1(%1)\n" - " brct %2,1b\n" - " la %0,0(%0,%1)\n" - " xc 0(1,%0),0(%0)\n" - "2:" - : "+&a" (__dest), "+&a" (__src), "+&d" (__n) : - : "cc", "memory", "0" ); - return tmp; -} - -#endif /* Use string inlines && GNU CC. */ |