|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] [PATCH 3/3] Add support for OpenBSD
On Thursday 19 October 2006 09:51, Keir Fraser wrote:
> On 18/10/06 8:08 am, "Christoph Egger" <Christoph.Egger@xxxxxxx> wrote:
> > /usr/include/sys/endian.h:156:1: this is the location of the previous
> > definition
> > boot/mkelf32.c:94:1: "swap32" redefined
> > /usr/include/sys/endian.h:157:1: this is the location of the previous
> > definition
> > boot/mkelf32.c:95:1: "swap64" redefined
> > /usr/include/sys/endian.h:158:1: this is the location of the previous
> > definition
>
> Is there a standard definition for these functions (i.e., can we be *sure*
> the original definitions have the same semantics as our own)? If not, which
> I think is the case, we're better off #undef'ing the old definitions.
This is the snippet of /usr/include/endian.h:
-----------------------------------------------------------------------------------
#ifdef __GNUC__
#define __swap16gen(x) __statement({ \
__uint16_t __swap16gen_x = (x); \
\
(__uint16_t)((__swap16gen_x & 0xff) << 8 | \
(__swap16gen_x & 0xff00) >> 8); \
})
#define __swap32gen(x) __statement({ \
__uint32_t __swap32gen_x = (x); \
\
(__uint32_t)((__swap32gen_x & 0xff) << 24 | \
(__swap32gen_x & 0xff00) << 8 | \
(__swap32gen_x & 0xff0000) >> 8 | \
(__swap32gen_x & 0xff000000) >> 24); \
})
#define __swap64gen(x) __statement({ \
__uint64_t __swap64gen_x = (x); \
\
(__uint64_t)((__swap64gen_x & 0xff) << 56 | \
(__swap64gen_x & 0xff00ULL) << 40 | \
(__swap64gen_x & 0xff0000ULL) << 24 | \
(__swap64gen_x & 0xff000000ULL) << 8 | \
(__swap64gen_x & 0xff00000000ULL) >> 8 | \
(__swap64gen_x & 0xff0000000000ULL) >> 24 | \
(__swap64gen_x & 0xff000000000000ULL) >> 40 | \
(__swap64gen_x & 0xff00000000000000ULL) >> 56); \
})
#else /* __GNUC__ */
/* Note that these macros evaluate their arguments several times. */
#define __swap16gen(x) \
(__uint16_t)(((__uint16_t)(x) & 0xffU) << 8 | ((__uint16_t)(x) & 0xff00U)
>> 8)
#define __swap32gen(x) \
(__uint32_t)(((__uint32_t)(x) & 0xff) << 24 | \
((__uint32_t)(x) & 0xff00) << 8 | ((__uint32_t)(x) & 0xff0000) >> 8 |\
((__uint32_t)(x) & 0xff000000) >> 24)
#define __swap64gen(x) \
(__uint64_t)((((__uint64_t)(x) & 0xff) << 56) | \
((__uint64_t)(x) & 0xff00ULL) << 40 | \
((__uint64_t)(x) & 0xff0000ULL) << 24 | \
((__uint64_t)(x) & 0xff000000ULL) << 8 | \
((__uint64_t)(x) & 0xff00000000ULL) >> 8 | \
((__uint64_t)(x) & 0xff0000000000ULL) >> 24 | \
((__uint64_t)(x) & 0xff000000000000ULL) >> 40 | \
((__uint64_t)(x) & 0xff00000000000000ULL) >> 56)
#endif /* __GNUC__ */
-----------------------------------------------------------------------------------
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|