[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: