From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Christoph Egger" Subject: Re: [PATCH 3/3] Add support for OpenBSD Date: Wed, 18 Oct 2006 10:55:57 +0200 Message-ID: <200610181055.58035.Christoph.Egger@amd.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Keir Fraser Cc: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org On Thursday 19 October 2006 09:51, Keir Fraser wrote: > On 18/10/06 8:08 am, "Christoph Egger" 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__ */ -----------------------------------------------------------------------------------