diff options
Diffstat (limited to 'sys/arch/pc532/include')
-rw-r--r-- | sys/arch/pc532/include/endian.h | 136 |
1 files changed, 32 insertions, 104 deletions
diff --git a/sys/arch/pc532/include/endian.h b/sys/arch/pc532/include/endian.h index 388513c91f8..014e749daaf 100644 --- a/sys/arch/pc532/include/endian.h +++ b/sys/arch/pc532/include/endian.h @@ -1,9 +1,7 @@ -/* $OpenBSD: endian.h,v 1.3 1997/04/04 03:05:33 millert Exp $ */ -/* $NetBSD: endian.h,v 1.8 1995/06/18 07:13:46 phil Exp $ */ +/* $OpenBSD: endian.h,v 1.4 1997/11/09 23:05:12 niklas Exp $ */ -/* - * Copyright (c) 1987, 1991 Regents of the University of California. - * All rights reserved. +/*- + * Copyright (c) 1997 Niklas Hallqvist. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -15,117 +13,47 @@ * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. + * This product includes software developed by Niklas Hallqvist. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)endian.h 7.8 (Berkeley) 4/3/91 + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _PC532_ENDIAN_H_ #define _PC532_ENDIAN_H_ -/* - * Define the order of 32-bit words in 64-bit words. - */ -#define _QUAD_HIGHWORD 1 -#define _QUAD_LOWWORD 0 - -#ifndef _POSIX_SOURCE -/* - * Definitions for byte order, according to byte significance from low - * address to high. - */ -#define LITTLE_ENDIAN 1234 /* LSB first: i386, vax, ns32000 */ -#define BIG_ENDIAN 4321 /* MSB first: 68000, ibm, net */ -#define PDP_ENDIAN 3412 /* LSB first in word, MSW first in int32_t */ - -#define BYTE_ORDER LITTLE_ENDIAN - -#include <sys/cdefs.h> - -typedef u_int32_t in_addr_t; -typedef u_int16_t in_port_t; - -__BEGIN_DECLS -u_int32_t htonl __P((u_int32_t)); -u_int16_t htons __P((u_int16_t)); -u_int32_t ntohl __P((u_int32_t)); -u_int16_t ntohs __P((u_int16_t)); -__END_DECLS - - #ifdef __GNUC__ -#define __byte_swap_int32_variable(x) \ -({ register u_int32_t __x = (x); \ - __asm ("rotw 8,%1; rotd 16,%1; rotw 8,%1" \ - : "=r" (__x) \ - : "0" (__x)); \ - __x; }) +#define __swap32md(x) ({ \ + register u_int32_t __x = (x); \ +\ + __asm ("rotw 8,%1; rotd 16,%1; rotw 8,%1" : "=r" (__x) : "0" (__x)); \ + __x; \ +}) -#define __byte_swap_int16_variable(x) \ -({ register u_int16_t __x = (x); \ - __asm ("rotw 8,%1" \ - : "=r" (__x) \ - : "0" (__x)); \ - __x; }) +#define __swap16md(x) ({ \ + register u_int16_t __x = (x); \ +\ + __asm ("rotw 8,%1" : "=r" (__x) : "0" (__x)); \ + __x; \ +}) - -#ifdef __OPTIMIZE__ - -#define __byte_swap_int32_constant(x) \ - ((((x) & 0xff000000) >> 24) | \ - (((x) & 0x00ff0000) >> 8) | \ - (((x) & 0x0000ff00) << 8) | \ - (((x) & 0x000000ff) << 24)) -#define __byte_swap_int16__constant(x) \ - ((((x) & 0xff00) >> 8) | \ - (((x) & 0x00ff) << 8)) -#define __byte_swap_int32(x) \ - (__builtin_constant_p((x)) ? \ - __byte_swap_int32_constant(x) : __byte_swap_int32_variable(x)) -#define __byte_swap_int16(x) \ - (__builtin_constant_p((x)) ? \ - __byte_swap_int16_constant(x) : __byte_swap_int16_variable(x)) - -#else /* __OPTIMIZE__ */ - -#define __byte_swap_int32(x) __byte_swap_int32_variable(x) -#define __byte_swap_int16(x) __byte_swap_int16_variable(x) - -#endif /* __OPTIMIZE__ */ - -#define ntohl(x) __byte_swap_int32(x) -#define ntohs(x) __byte_swap_int16(x) -#define htonl(x) __byte_swap_int32(x) -#define htons(x) __byte_swap_int16(x) +/* Tell sys/endian.h we have MD variants of the swap macros. */ +#define MD_SWAP #endif /* __GNUC__ */ - -/* - * Macros for network/external number representation conversion. - */ -#define NTOHL(x) (x) = ntohl((u_int32_t)x) -#define NTOHS(x) (x) = ntohs((u_int16_t)x) -#define HTONL(x) (x) = htonl((u_int32_t)x) -#define HTONS(x) (x) = htons((u_int16_t)x) - -#endif /* _POSIX_SOURCE */ +#define BYTE_ORDER 1234 +#include <sys/endian.h> #endif /* _PC532_ENDIAN_H_ */ |