~ubuntu-branches/ubuntu/utopic/eglibc/utopic

« back to all changes in this revision

Viewing changes to sysdeps/s390/bits/byteswap.h

  • Committer: Package Import Robot
  • Author(s): Adam Conrad
  • Date: 2012-10-26 05:14:58 UTC
  • mfrom: (1.5.1) (4.4.22 experimental)
  • Revision ID: package-import@ubuntu.com-20121026051458-oryotr4i03ob5pab
Tags: 2.16-0ubuntu1
* Merge with unreleased 2.16 in Debian experimental, remaining changes:
  - Drop the Breaks line from libc6, which refers to a Debian transition
  - Remove the libc6 recommends on libc6-i686, which we don't build
  - Enable libc6{,-dev}-armel on armhf and libc6{-dev}-armhf on armel
  - Ship update-locale and validlocale in /usr/sbin in libc-bin
  - Don't build locales or locales-all in Ubuntu, we rely on langpacks
  - Heavily mangle the way we do service restarting on major upgrades
  - Use different MIN_KERNEL_SUPPORTED versions than Debian, due to
    buildd needs.  This should be universally bumped to 3.2.0 once all
    our buildds (including the PPA guests) are running precise kernels
  - Build i386 variants as -march=i686, build amd64 with -O3, and build
    ppc64 variants (both 64-bit and 32-bit) with -O3 -fno-tree-vectorize
  - Re-enable unsubmitted-ldconfig-cache-abi.diff and rebuild the cache
    on upgrades from previous versions that used a different constant
  - debian/patches/any/local-CVE-2012-3406.diff: switch to malloc when
    array grows too large to handle via alloca extension (CVE-2012-3406)
  - Build generic i386/i686 flavour with -mno-tls-direct-seg-refs
* Changes added/dropped with this merge while reducing our delta:
  - Stop building glibc docs from the eglibc source, and instead make
    the glibc-docs stub have a hard dependency on glibc-doc-reference
  - Remove outdated conflicts against ancient versions of ia32-libs
  - Drop the tzdata dependency from libc6, it's in required and minimal
  - Use gcc-4.7/g++-4.7 by default on all our supported architectures
  - Save our historical changelog as changelog.ubuntu in the source
  - Drop nscd's libaudit build-dep for now, as libaudit is in universe
  - Drop the unnecessary Breaks from libc6 to locales and locales-all
  - Ship xen's ld.so.conf.d snippet as /etc/ld.so.conf.d/libc6-xen.conf
* Disable hard failures on the test suite for the first upload to raring

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* Macros to swap the order of bytes in integer values.  s390 version.
2
 
   Copyright (C) 2000-2003, 2008, 2011 Free Software Foundation, Inc.
 
2
   Copyright (C) 2000-2012 Free Software Foundation, Inc.
3
3
   Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
4
4
   This file is part of the GNU C Library.
5
5
 
14
14
   Lesser General Public License for more details.
15
15
 
16
16
   You should have received a copy of the GNU Lesser General Public
17
 
   License along with the GNU C Library; if not, write to the Free
18
 
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19
 
   02111-1307 USA.  */
 
17
   License along with the GNU C Library; if not, see
 
18
   <http://www.gnu.org/licenses/>.  */
20
19
 
21
20
#if !defined _BYTESWAP_H && !defined _NETINET_IN_H && !defined _ENDIAN_H
22
21
# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead."
28
27
#define _BITS_BYTESWAP_H 1
29
28
 
30
29
#define __bswap_constant_16(x) \
31
 
     ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))
 
30
        ((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)))
32
31
 
33
 
/* Swap bytes in 16 bit value. */
34
 
#if defined __GNUC__ && __GNUC__ >= 2
35
 
# if __WORDSIZE == 64
36
 
#  define __bswap_16(x) \
37
 
     (__extension__                                                           \
38
 
      ({ unsigned short int __v, __x = (x);                                   \
39
 
         if (__builtin_constant_p (x))                                        \
40
 
           __v = __bswap_constant_16 (__x);                                   \
41
 
         else {                                                               \
42
 
           unsigned short int __tmp = (unsigned short int) (__x);             \
43
 
           __asm__ __volatile__ (                                             \
44
 
              "lrvh %0,%1"                                                    \
45
 
              : "=&d" (__v) : "m" (__tmp) );                                  \
46
 
         }                                                                    \
47
 
         __v; }))
48
 
# else
49
 
#  define __bswap_16(x) \
50
 
     (__extension__                                                           \
51
 
      ({ unsigned short int __v, __x = (x);                                   \
52
 
         if (__builtin_constant_p (x))                                        \
53
 
           __v = __bswap_constant_16 (__x);                                   \
54
 
         else {                                                               \
55
 
           unsigned short int __tmp = (unsigned short int) (__x);             \
56
 
           __asm__ __volatile__ (                                             \
57
 
              "sr   %0,%0\n"                                                  \
58
 
              "la   1,%1\n"                                                   \
59
 
              "icm  %0,2,1(1)\n"                                              \
60
 
              "ic   %0,0(1)"                                                  \
61
 
              : "=&d" (__v) : "m" (__tmp) : "1");                             \
62
 
         }                                                                    \
63
 
         __v; }))
64
 
# endif
65
 
#else
66
 
/* This is better than nothing.  */
67
 
static __inline unsigned short int
68
 
__bswap_16 (unsigned short int __bsx)
69
 
{
70
 
  return __bswap_constant_16 (__bsx);
71
 
}
72
 
#endif
 
32
/* Get __bswap_16.  */
 
33
#include <bits/byteswap-16.h>
73
34
 
74
35
/* Swap bytes in 32 bit value.  */
75
36
#define __bswap_constant_32(x) \
151
112
          __r.__l[1] = __bswap_32 (__w.__l[0]);         \
152
113
          __r.__ll; })
153
114
# endif
154
 
#else
 
115
#elif __GLIBC_HAVE_LONG_LONG
155
116
# define __bswap_constant_64(x) \
156
 
     ((((x) & 0xff00000000000000ul) >> 56)                                    \
157
 
      | (((x) & 0x00ff000000000000ul) >>  40)                                 \
158
 
      | (((x) & 0x0000ff0000000000ul) >> 24)                                  \
159
 
      | (((x) & 0x000000ff00000000ul) >> 8)                                   \
160
 
      | (((x) & 0x00000000ff000000ul) << 8)                                   \
161
 
      | (((x) & 0x0000000000ff0000ul) << 24)                                  \
162
 
      | (((x) & 0x000000000000ff00ul) << 40)                                  \
163
 
      | (((x) & 0x00000000000000fful) << 56))
 
117
     ((((x) & 0xff00000000000000ull) >> 56)                                   \
 
118
      | (((x) & 0x00ff000000000000ull) >> 40)                                 \
 
119
      | (((x) & 0x0000ff0000000000ull) >> 24)                                 \
 
120
      | (((x) & 0x000000ff00000000ull) >> 8)                                  \
 
121
      | (((x) & 0x00000000ff000000ull) << 8)                                  \
 
122
      | (((x) & 0x0000000000ff0000ull) << 24)                                 \
 
123
      | (((x) & 0x000000000000ff00ull) << 40)                                 \
 
124
      | (((x) & 0x00000000000000ffull) << 56))
164
125
 
165
126
static __inline unsigned long long int
166
127
__bswap_64 (unsigned long long int __bsx)