69 lines
1.7 KiB
Plaintext
69 lines
1.7 KiB
Plaintext
$OpenBSD: patch-cbits_bitfn_h,v 1.3 2011/04/12 10:43:04 jasper Exp $
|
|
|
|
- Don't redefine swap32/swap64.
|
|
|
|
--- cbits/bitfn.h.orig Tue Apr 12 12:34:26 2011
|
|
+++ cbits/bitfn.h Tue Apr 12 12:36:53 2011
|
|
@@ -30,14 +30,17 @@
|
|
/**********************************************************/
|
|
# if (defined(__i386__))
|
|
# define ARCH_HAS_SWAP32
|
|
+# ifndef swap32
|
|
static inline uint32_t bitfn_swap32(uint32_t a)
|
|
{
|
|
asm ("bswap %0" : "=r" (a) : "0" (a));
|
|
return a;
|
|
}
|
|
+# endif
|
|
/**********************************************************/
|
|
# elif (defined(__arm__))
|
|
# define ARCH_HAS_SWAP32
|
|
+# ifndef swap32
|
|
static inline uint32_t bitfn_swap32(uint32_t a)
|
|
{
|
|
uint32_t tmp = a;
|
|
@@ -48,22 +51,28 @@ static inline uint32_t bitfn_swap32(uint32_t a)
|
|
: "=r" (a), "=r" (tmp) : "0" (a), "1" (tmp));
|
|
return a;
|
|
}
|
|
+# endif
|
|
/**********************************************************/
|
|
# elif defined(__x86_64__)
|
|
# define ARCH_HAS_SWAP32
|
|
# define ARCH_HAS_SWAP64
|
|
+# ifndef swap32
|
|
static inline uint32_t bitfn_swap32(uint32_t a)
|
|
{
|
|
asm ("bswap %0" : "=r" (a) : "0" (a));
|
|
return a;
|
|
}
|
|
|
|
+# endif
|
|
+# ifndef swap64
|
|
+
|
|
static inline uint64_t bitfn_swap64(uint64_t a)
|
|
{
|
|
asm ("bswap %0" : "=r" (a) : "0" (a));
|
|
return a;
|
|
}
|
|
|
|
+# endif
|
|
# endif
|
|
#endif /* NO_INLINE_ASM */
|
|
/**********************************************************/
|
|
@@ -111,12 +120,14 @@ static inline void array_swap32(uint32_t *d, uint32_t
|
|
}
|
|
#endif
|
|
|
|
+#ifndef swap64
|
|
#ifndef ARCH_HAS_SWAP64
|
|
static inline uint64_t bitfn_swap64(uint64_t a)
|
|
{
|
|
return ((uint64_t) bitfn_swap32((uint32_t) (a >> 32))) |
|
|
(((uint64_t) bitfn_swap32((uint32_t) a)) << 32);
|
|
}
|
|
+#endif
|
|
#endif
|
|
|
|
#ifndef ARCH_HAS_ARRAY_SWAP64
|