WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [PATCH 3/3] Add support for OpenBSD

To: "Keir Fraser" <Keir.Fraser@xxxxxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH 3/3] Add support for OpenBSD
From: "Christoph Egger" <Christoph.Egger@xxxxxxx>
Date: Wed, 18 Oct 2006 10:55:57 +0200
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Thu, 19 Oct 2006 02:02:02 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <C15CED1F.2C05%Keir.Fraser@xxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Organization: AMD / OSRC
References: <C15CED1F.2C05%Keir.Fraser@xxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: KMail/1.9.4
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