ia64: split 16bit funcs out of byteswap.h and into byteswap-16.h

The main tree split the 16bit byteswap funcs out into a dedicated header.
Do the same for ia64.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
Mike Frysinger 2012-04-16 22:47:48 -04:00
parent 91e5f2e441
commit 756b23ec1b
3 changed files with 51 additions and 23 deletions

View File

@ -1,3 +1,9 @@
2012-04-27 Mike Frysinger <vapier@gentoo.org>
* sysdeps/ia64/bits/byteswap.h (__bswap_16): Removed.
Include <bits/byteswap-16.h> to get __bswap_16.
* sysdeps/ia64/bits/byteswap-16.h: New file.
2012-04-27 Mike Frysinger <vapier@gentoo.org> 2012-04-27 Mike Frysinger <vapier@gentoo.org>
* sysdeps/unix/sysv/linux/ia64/sys/ucontext.h: Delete __cplusplus * sysdeps/unix/sysv/linux/ia64/sys/ucontext.h: Delete __cplusplus

View File

@ -0,0 +1,42 @@
/* Macros to swap the order of bytes in 16-bit integer values.
Copyright (C) 1997-2012 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 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, see
<http://www.gnu.org/licenses/>. */
#ifndef _BITS_BYTESWAP_H
# error "Never use <bits/byteswap-16.h> directly; include <byteswap.h> instead."
#endif
#if defined __GNUC__ && __GNUC__ >= 2
# define __bswap_16(x) \
(__extension__ \
({ register unsigned short int __v, __x = (x); \
if (__builtin_constant_p (x)) \
__v = __bswap_constant_16 (__x); \
else \
__asm__ __volatile__ ("shl %0 = %1, 48 ;;" \
"mux1 %0 = %0, @rev ;;" \
: "=r" (__v) \
: "r" ((unsigned short int) (__x))); \
__v; }))
#else
/* This is better than nothing. */
static __inline unsigned short int
__bswap_16 (unsigned short int __bsx)
{
return __bswap_constant_16 (__bsx);
}
#endif

View File

@ -1,6 +1,5 @@
/* Macros to swap the order of bytes in integer values. /* Macros to swap the order of bytes in integer values.
Copyright (C) 1997,1998,2000,2002,2003,2008,2011 Copyright (C) 1997-2012 Free Software Foundation, Inc.
Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -28,27 +27,8 @@
#define __bswap_constant_16(x) \ #define __bswap_constant_16(x) \
((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))
#if defined __GNUC__ && __GNUC__ >= 2 /* Get __bswap_16. */
# define __bswap_16(x) \ #include <bits/byteswap-16.h>
(__extension__ \
({ register unsigned short int __v, __x = (x); \
if (__builtin_constant_p (x)) \
__v = __bswap_constant_16 (__x); \
else \
__asm__ __volatile__ ("shl %0 = %1, 48 ;;" \
"mux1 %0 = %0, @rev ;;" \
: "=r" (__v) \
: "r" ((unsigned short int) (__x))); \
__v; }))
#else
/* This is better than nothing. */
static __inline unsigned short int
__bswap_16 (unsigned short int __bsx)
{
return __bswap_constant_16 (__bsx);
}
#endif
/* Swap bytes in 32 bit value. */ /* Swap bytes in 32 bit value. */
#define __bswap_constant_32(x) \ #define __bswap_constant_32(x) \