Add byteswap-16.h for __bswap_16
authorH.J. Lu <hjl.tools@gmail.com>
Fri, 6 Apr 2012 22:13:09 +0000 (15:13 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Fri, 6 Apr 2012 22:14:52 +0000 (15:14 -0700)
ChangeLog
bits/byteswap-16.h [new file with mode: 0644]
bits/byteswap.h
string/Makefile
sysdeps/i386/bits/byteswap-16.h [new file with mode: 0644]
sysdeps/i386/bits/byteswap.h
sysdeps/s390/bits/byteswap-16.h [new file with mode: 0644]
sysdeps/s390/bits/byteswap.h
sysdeps/x86_64/bits/byteswap-16.h [new file with mode: 0644]
sysdeps/x86_64/bits/byteswap.h

index 27980f5..91e8361 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2012-04-06  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * bits/byteswap.h (__bswap_16): Removed.
+       Include <bits/byteswap-16.h> to get __bswap_16.
+       * sysdeps/i386/bits/byteswap.h: Likewise.
+       * sysdeps/s390/bits/byteswap.h: Likewise.
+       * sysdeps/x86_64/bits/byteswap.h: Likewise.
+       * bits/byteswap-16.h: New file.
+       * sysdeps/i386/bits/byteswap-16.h: Likewise.
+       * sysdeps/s390/bits/byteswap-16.h: Likewise.
+       * sysdeps/x86_64/bits/byteswap-16.h: Likewise.
+       * string/Makefile (headers): Add bits/byteswap-16.h.
+
 2012-04-06  Paul Pluzhnikov  <ppluzhnikov@google.com>
 
        [BZ #13895]
diff --git a/bits/byteswap-16.h b/bits/byteswap-16.h
new file mode 100644 (file)
index 0000000..078dd0e
--- /dev/null
@@ -0,0 +1,33 @@
+/* Macros to swap the order of bytes in 16-bit integer values.
+   Copyright (C) 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
+
+#ifdef __GNUC__
+# define __bswap_16(x) \
+    (__extension__                                                           \
+     ({ unsigned short int __bsx = (x); __bswap_constant_16 (__bsx); }))
+#else
+static __inline unsigned short int
+__bswap_16 (unsigned short int __bsx)
+{
+  return __bswap_constant_16 (__bsx);
+}
+#endif
index 31e9a16..6e3ed3f 100644 (file)
 #define __bswap_constant_16(x) \
      ((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8))
 
-#ifdef __GNUC__
-# define __bswap_16(x) \
-    (__extension__                                                           \
-     ({ unsigned short int __bsx = (x); __bswap_constant_16 (__bsx); }))
-#else
-static __inline unsigned short int
-__bswap_16 (unsigned short int __bsx)
-{
-  return __bswap_constant_16 (__bsx);
-}
-#endif
+/* Get __bswap_16.  */
+#include <bits/byteswap-16.h>
 
 /* Swap bytes in 32 bit value.  */
 #define __bswap_constant_32(x) \
index 0e42d31..80923a2 100644 (file)
@@ -21,8 +21,8 @@
 subdir := string
 
 headers        := string.h strings.h memory.h endian.h bits/endian.h \
-          argz.h envz.h byteswap.h bits/byteswap.h bits/string.h \
-          bits/string2.h bits/string3.h
+          argz.h envz.h byteswap.h bits/byteswap.h bits/byteswap-16.h \
+          bits/string.h bits/string2.h bits/string3.h
 
 routines       := strcat strchr strcmp strcoll strcpy strcspn          \
                   strverscmp strdup strndup                            \
diff --git a/sysdeps/i386/bits/byteswap-16.h b/sysdeps/i386/bits/byteswap-16.h
new file mode 100644 (file)
index 0000000..584eb86
--- /dev/null
@@ -0,0 +1,49 @@
+/* Macros to swap the order of bytes in 16-bit integer values.
+   Copyright (C) 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
+
+#ifdef __GNUC__
+# if __GNUC__ >= 2
+#  define __bswap_16(x) \
+     (__extension__                                                          \
+      ({ register unsigned short int __v, __x = (unsigned short int) (x);     \
+        if (__builtin_constant_p (__x))                                      \
+          __v = __bswap_constant_16 (__x);                                   \
+        else                                                                 \
+          __asm__ ("rorw $8, %w0"                                            \
+                   : "=r" (__v)                                              \
+                   : "0" (__x)                                               \
+                   : "cc");                                                  \
+        __v; }))
+# else
+/* This is better than nothing.  */
+#  define __bswap_16(x) \
+     (__extension__                                                          \
+      ({ register unsigned short int __x = (unsigned short int) (x);         \
+        __bswap_constant_16 (__x); }))
+# endif
+#else
+static __inline unsigned short int
+__bswap_16 (unsigned short int __bsx)
+{
+  return __bswap_constant_16 (__bsx);
+}
+#endif
index fb0a827..3542816 100644 (file)
 #define __bswap_constant_16(x) \
      ((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)))
 
-#ifdef __GNUC__
-# if __GNUC__ >= 2
-#  define __bswap_16(x) \
-     (__extension__                                                          \
-      ({ register unsigned short int __v, __x = (unsigned short int) (x);     \
-        if (__builtin_constant_p (__x))                                      \
-          __v = __bswap_constant_16 (__x);                                   \
-        else                                                                 \
-          __asm__ ("rorw $8, %w0"                                            \
-                   : "=r" (__v)                                              \
-                   : "0" (__x)                                               \
-                   : "cc");                                                  \
-        __v; }))
-# else
-/* This is better than nothing.  */
-#  define __bswap_16(x) \
-     (__extension__                                                          \
-      ({ register unsigned short int __x = (unsigned short int) (x);         \
-        __bswap_constant_16 (__x); }))
-# endif
-#else
-static __inline unsigned short int
-__bswap_16 (unsigned short int __bsx)
-{
-  return __bswap_constant_16 (__bsx);
-}
-#endif
+/* Get __bswap_16.  */
+#include <bits/byteswap-16.h>
 
 /* Swap bytes in 32 bit value.  */
 #define __bswap_constant_32(x) \
diff --git a/sysdeps/s390/bits/byteswap-16.h b/sysdeps/s390/bits/byteswap-16.h
new file mode 100644 (file)
index 0000000..8bfec78
--- /dev/null
@@ -0,0 +1,65 @@
+/* Macros to swap the order of bytes in 16-bit integer values.  s390 version
+   Copyright (C) 2012 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 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
+
+#include <bits/wordsize.h>
+
+/* Swap bytes in 16 bit value. */
+#if defined __GNUC__ && __GNUC__ >= 2
+# if __WORDSIZE == 64
+#  define __bswap_16(x) \
+     (__extension__                                                          \
+      ({ unsigned short int __v, __x = (x);                                  \
+        if (__builtin_constant_p (x))                                        \
+          __v = __bswap_constant_16 (__x);                                   \
+        else {                                                               \
+          unsigned short int __tmp = (unsigned short int) (__x);             \
+          __asm__ __volatile__ (                                             \
+             "lrvh %0,%1"                                                    \
+             : "=&d" (__v) : "m" (__tmp) );                                  \
+        }                                                                    \
+        __v; }))
+# else
+#  define __bswap_16(x) \
+     (__extension__                                                          \
+      ({ unsigned short int __v, __x = (x);                                  \
+        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; }))
+# endif
+#else
+/* This is better than nothing.  */
+static __inline unsigned short int
+__bswap_16 (unsigned short int __bsx)
+{
+  return __bswap_constant_16 (__bsx);
+}
+#endif
index fd7c279..e91d4cc 100644 (file)
 #define __bswap_constant_16(x) \
      ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))
 
-/* Swap bytes in 16 bit value. */
-#if defined __GNUC__ && __GNUC__ >= 2
-# if __WORDSIZE == 64
-#  define __bswap_16(x) \
-     (__extension__                                                          \
-      ({ unsigned short int __v, __x = (x);                                  \
-        if (__builtin_constant_p (x))                                        \
-          __v = __bswap_constant_16 (__x);                                   \
-        else {                                                               \
-          unsigned short int __tmp = (unsigned short int) (__x);             \
-          __asm__ __volatile__ (                                             \
-             "lrvh %0,%1"                                                    \
-             : "=&d" (__v) : "m" (__tmp) );                                  \
-        }                                                                    \
-        __v; }))
-# else
-#  define __bswap_16(x) \
-     (__extension__                                                          \
-      ({ unsigned short int __v, __x = (x);                                  \
-        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; }))
-# endif
-#else
-/* This is better than nothing.  */
-static __inline unsigned short int
-__bswap_16 (unsigned short int __bsx)
-{
-  return __bswap_constant_16 (__bsx);
-}
-#endif
+/* Get __bswap_16.  */
+#include <bits/byteswap-16.h>
 
 /* Swap bytes in 32 bit value.  */
 #define __bswap_constant_32(x) \
diff --git a/sysdeps/x86_64/bits/byteswap-16.h b/sysdeps/x86_64/bits/byteswap-16.h
new file mode 100644 (file)
index 0000000..584eb86
--- /dev/null
@@ -0,0 +1,49 @@
+/* Macros to swap the order of bytes in 16-bit integer values.
+   Copyright (C) 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
+
+#ifdef __GNUC__
+# if __GNUC__ >= 2
+#  define __bswap_16(x) \
+     (__extension__                                                          \
+      ({ register unsigned short int __v, __x = (unsigned short int) (x);     \
+        if (__builtin_constant_p (__x))                                      \
+          __v = __bswap_constant_16 (__x);                                   \
+        else                                                                 \
+          __asm__ ("rorw $8, %w0"                                            \
+                   : "=r" (__v)                                              \
+                   : "0" (__x)                                               \
+                   : "cc");                                                  \
+        __v; }))
+# else
+/* This is better than nothing.  */
+#  define __bswap_16(x) \
+     (__extension__                                                          \
+      ({ register unsigned short int __x = (unsigned short int) (x);         \
+        __bswap_constant_16 (__x); }))
+# endif
+#else
+static __inline unsigned short int
+__bswap_16 (unsigned short int __bsx)
+{
+  return __bswap_constant_16 (__bsx);
+}
+#endif
index 472281f..d7e503c 100644 (file)
 #define __bswap_constant_16(x) \
      ((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)))
 
-#if defined __GNUC__ && __GNUC__ >= 2
-# define __bswap_16(x) \
-     (__extension__                                                          \
-      ({ register unsigned short int __v, __x = (unsigned short int) (x);     \
-        if (__builtin_constant_p (__x))                                      \
-          __v = __bswap_constant_16 (__x);                                   \
-        else                                                                 \
-          __asm__ ("rorw $8, %w0"                                            \
-                   : "=r" (__v)                                              \
-                   : "0" (__x)                                               \
-                   : "cc");                                                  \
-        __v; }))
-#else
-/* This is better than nothing.  */
-# define __bswap_16(x) \
-     (__extension__                                                          \
-      ({ register unsigned short int __x = (unsigned short int) (x);          \
-        __bswap_constant_16 (__x); }))
-#endif
-
+/* Get __bswap_16.  */
+#include <bits/byteswap-16.h>
 
 /* Swap bytes in 32 bit value.  */
 #define __bswap_constant_32(x) \