r5102 - in glibc-package/trunk/debian/patches: . m68k
Author: aurel32
Date: 2011-12-21 02:55:43 +0000 (Wed, 21 Dec 2011)
New Revision: 5102
Added:
glibc-package/trunk/debian/patches/m68k/cvs-byteswap.diff
Removed:
glibc-package/trunk/debian/patches/m68k/local-byteswap.diff
Modified:
glibc-package/trunk/debian/patches/series
Log:
* patches/m68k/cvs-byteswap.diff: fix m68k optimized version of
<bits/byteswap.h>. Closes: #652356.
Added: glibc-package/trunk/debian/patches/m68k/cvs-byteswap.diff
===================================================================
--- glibc-package/trunk/debian/patches/m68k/cvs-byteswap.diff (rev 0)
+++ glibc-package/trunk/debian/patches/m68k/cvs-byteswap.diff 2011-12-21 02:55:43 UTC (rev 5102)
@@ -0,0 +1,86 @@
+2011-03-06 Andreas Schwab <schwab@linux-m68k.org>
+
+ * ports/sysdeps/m68k/bits/byteswap.h (__bswap_16, __bswap_32)
+ (__bswap_64): Implement as inline functions.
+
+diff --git a/ports/sysdeps/m68k/bits/byteswap.h b/ports/sysdeps/m68k/bits/byteswap.h
+index a2546c9..4f31d95 100644
+--- a/ports/sysdeps/m68k/bits/byteswap.h
++++ b/ports/sysdeps/m68k/bits/byteswap.h
+@@ -30,36 +30,29 @@
+ #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
+
+ /* Swap bytes in 32 bit value. */
+ #define __bswap_constant_32(x) \
+ ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) | \
+ (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24))
+
+-#if defined __GNUC__ && __GNUC__ >= 2 && !defined(__mcoldfire__)
+-# define __bswap_32(x) \
+- __extension__ \
+- ({ unsigned int __bswap_32_v; \
+- if (__builtin_constant_p (x)) \
+- __bswap_32_v = __bswap_constant_32 (x); \
+- else \
+- __asm__ __volatile__ ("ror%.w %#8, %0;" \
+- "swap %0;" \
+- "ror%.w %#8, %0" \
+- : "=d" (__bswap_32_v) \
+- : "0" ((unsigned int) (x))); \
+- __bswap_32_v; })
++#if !defined(__mcoldfire__)
++static __inline unsigned int
++__bswap_32 (unsigned int __bsx)
++{
++ if (__builtin_constant_p (__bsx))
++ return __bswap_constant_32 (__bsx);
++ __asm__ __volatile__ ("ror%.w %#8, %0;"
++ "swap %0;"
++ "ror%.w %#8, %0"
++ : "+d" (__bsx));
++ return __bsx;
++}
+ #else
+ static __inline unsigned int
+ __bswap_32 (unsigned int __bsx)
+@@ -81,19 +74,14 @@ __bswap_32 (unsigned int __bsx)
+ | (((x) & 0x00000000000000ffull) << 56))
+
+ /* Swap bytes in 64 bit value. */
+-# define __bswap_64(x) \
+- __extension__ \
+- ({ union { unsigned long long int __ll; \
+- unsigned long int __l[2]; } __bswap_64_v, __bswap_64_r; \
+- if (__builtin_constant_p (x)) \
+- __bswap_64_r.__ll = __bswap_constant_64 (x); \
+- else \
+- { \
+- __bswap_64_v.__ll = (x); \
+- __bswap_64_r.__l[0] = __bswap_32 (__bswap_64_v.__l[1]); \
+- __bswap_64_r.__l[1] = __bswap_32 (__bswap_64_v.__l[0]); \
+- } \
+- __bswap_64_r.__ll; })
++static __inline unsigned long long
++__bswap_64 (unsigned long long __bsx)
++{
++ if (__builtin_constant_p (__bsx))
++ return __bswap_constant_64 (__bsx);
++ return (__bswap_32 (__bsx >> 32)
++ | ((unsigned long long) __bswap_32 (__bsx) << 32));
++}
+ #endif
+
+ #endif /* _BITS_BYTESWAP_H */
Deleted: glibc-package/trunk/debian/patches/m68k/local-byteswap.diff
===================================================================
--- glibc-package/trunk/debian/patches/m68k/local-byteswap.diff 2011-12-19 17:38:40 UTC (rev 5101)
+++ glibc-package/trunk/debian/patches/m68k/local-byteswap.diff 2011-12-21 02:55:43 UTC (rev 5102)
@@ -1,102 +0,0 @@
---- a/ports/sysdeps/m68k/bits/byteswap.h
-+++ /dev/null
-@@ -1,99 +0,0 @@
--/* Macros to swap the order of bytes in integer values. m68k version.
-- Copyright (C) 1997, 2002, 2008 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, 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 && !defined _ENDIAN_H
--# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead."
--#endif
--
--#ifndef _BITS_BYTESWAP_H
--#define _BITS_BYTESWAP_H 1
--
--/* Swap bytes in 16 bit value. We don't provide an assembler version
-- because GCC is smart enough to generate optimal assembler output, and
-- this allows for better cse. */
--#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
--
--/* Swap bytes in 32 bit value. */
--#define __bswap_constant_32(x) \
-- ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) | \
-- (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24))
--
--#if defined __GNUC__ && __GNUC__ >= 2 && !defined(__mcoldfire__)
--# define __bswap_32(x) \
-- __extension__ \
-- ({ unsigned int __bswap_32_v; \
-- if (__builtin_constant_p (x)) \
-- __bswap_32_v = __bswap_constant_32 (x); \
-- else \
-- __asm__ __volatile__ ("ror%.w %#8, %0;" \
-- "swap %0;" \
-- "ror%.w %#8, %0" \
-- : "=d" (__bswap_32_v) \
-- : "0" ((unsigned int) (x))); \
-- __bswap_32_v; })
--#else
--static __inline unsigned int
--__bswap_32 (unsigned int __bsx)
--{
-- return __bswap_constant_32 (__bsx);
--}
--#endif
--
--#if defined __GNUC__ && __GNUC__ >= 2
--/* Swap bytes in 64 bit value. */
--# define __bswap_constant_64(x) \
-- ((((x) & 0xff00000000000000ull) >> 56) \
-- | (((x) & 0x00ff000000000000ull) >> 40) \
-- | (((x) & 0x0000ff0000000000ull) >> 24) \
-- | (((x) & 0x000000ff00000000ull) >> 8) \
-- | (((x) & 0x00000000ff000000ull) << 8) \
-- | (((x) & 0x0000000000ff0000ull) << 24) \
-- | (((x) & 0x000000000000ff00ull) << 40) \
-- | (((x) & 0x00000000000000ffull) << 56))
--
--/* Swap bytes in 64 bit value. */
--# define __bswap_64(x) \
-- __extension__ \
-- ({ union { unsigned long long int __ll; \
-- unsigned long int __l[2]; } __bswap_64_v, __bswap_64_r; \
-- if (__builtin_constant_p (x)) \
-- __bswap_64_r.__ll = __bswap_constant_64 (x); \
-- else \
-- { \
-- __bswap_64_v.__ll = (x); \
-- __bswap_64_r.__l[0] = __bswap_32 (__bswap_64_v.__l[1]); \
-- __bswap_64_r.__l[1] = __bswap_32 (__bswap_64_v.__l[0]); \
-- } \
-- __bswap_64_r.__ll; })
--#endif
--
--#endif /* _BITS_BYTESWAP_H */
Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series 2011-12-19 17:38:40 UTC (rev 5101)
+++ glibc-package/trunk/debian/patches/series 2011-12-21 02:55:43 UTC (rev 5102)
@@ -194,7 +194,7 @@
m68k/local-reloc.diff
m68k/local-pthread_lock.diff
m68k/submitted-gcc34-seccomment.diff
-m68k/local-byteswap.diff
+m68k/cvs-byteswap.diff
mips/local-lowlevellock.diff
mips/local-r10k.diff
Reply to: