diff options
-rw-r--r-- | clients/net-snk/include/endian.h | 46 | ||||
-rw-r--r-- | clients/net-snk/kernel/Makefile | 2 | ||||
-rw-r--r-- | clients/net-snk/kernel/endian.c | 30 | ||||
-rw-r--r-- | include/byteorder.h | 78 | ||||
-rw-r--r-- | lib/libnvram/nvram.c | 7 | ||||
-rw-r--r-- | lib/libnvram/nvram.h | 20 |
6 files changed, 81 insertions, 102 deletions
diff --git a/clients/net-snk/include/endian.h b/clients/net-snk/include/endian.h deleted file mode 100644 index b4b9a94..0000000 --- a/clients/net-snk/include/endian.h +++ /dev/null @@ -1,46 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2004, 2008 IBM Corporation - * All rights reserved. - * This program and the accompanying materials - * are made available under the terms of the BSD License - * which accompanies this distribution, and is available at - * http://www.opensource.org/licenses/bsd-license.php - * - * Contributors: - * IBM Corporation - initial implementation - *****************************************************************************/ - - -#ifndef MY_ENDIAN_H -#define MY_ENDIAN_H - -#include <stdint.h> - -extern inline uint16_t bswap_16 (uint16_t x); -extern inline uint32_t bswap_32 (uint32_t x); -extern inline uint64_t bswap_64 (uint64_t x); -#define CPU_BIG_ENDIAN - -#ifndef CPU_BIG_ENDIAN -#define cpu_to_le64(x) (x) -#define cpu_to_le32(x) (x) -#define cpu_to_le16(x) (x) -#define cpu_to_be16(x) bswap_16(x) -#define cpu_to_be32(x) bswap_32(x) -#define le64_to_cpu(x) (x) -#define le32_to_cpu(x) (x) -#define le16_to_cpu(x) (x) -#define be32_to_cpu(x) bswap_32(x) -#else -#define cpu_to_le64(x) bswap_64(x) -#define cpu_to_le32(x) bswap_32(x) -#define cpu_to_le16(x) bswap_16(x) -#define cpu_to_be16(x) (x) -#define cpu_to_be32(x) (x) -#define le64_to_cpu(x) bswap_64(x) -#define le32_to_cpu(x) bswap_32(x) -#define le16_to_cpu(x) bswap_16(x) -#define be32_to_cpu(x) (x) -#endif - -#endif diff --git a/clients/net-snk/kernel/Makefile b/clients/net-snk/kernel/Makefile index 976d851..807bb3e 100644 --- a/clients/net-snk/kernel/Makefile +++ b/clients/net-snk/kernel/Makefile @@ -17,7 +17,7 @@ ifndef TOP endif include $(TOP)/make.rules -OBJS = init.o systemcall.o crt0.o endian.o timer.o modules.o +OBJS = init.o systemcall.o crt0.o timer.o modules.o OBJS2 = entry.o lowmem.o all: kernel.o diff --git a/clients/net-snk/kernel/endian.c b/clients/net-snk/kernel/endian.c deleted file mode 100644 index 04182f5..0000000 --- a/clients/net-snk/kernel/endian.c +++ /dev/null @@ -1,30 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2004, 2008 IBM Corporation - * All rights reserved. - * This program and the accompanying materials - * are made available under the terms of the BSD License - * which accompanies this distribution, and is available at - * http://www.opensource.org/licenses/bsd-license.php - * - * Contributors: - * IBM Corporation - initial implementation - *****************************************************************************/ - - -#include "endian.h" - -inline uint16_t bswap_16 (uint16_t x) -{ - return ((x&0xff00) >> 8) | ((x&0xff) << 8); -} - -inline uint32_t bswap_32 (uint32_t x) -{ - return bswap_16((x&0xffff0000) >> 16) | (bswap_16(x&0xffff) << 16); -} - -inline uint64_t bswap_64 (uint64_t x) -{ - return (unsigned long long) bswap_32((x&0xffffffff00000000ULL) >> 32) | - (unsigned long long) bswap_32(x&0xffffffffULL) << 32; -} diff --git a/include/byteorder.h b/include/byteorder.h new file mode 100644 index 0000000..0d7ebee --- /dev/null +++ b/include/byteorder.h @@ -0,0 +1,78 @@ +/****************************************************************************** + * Copyright (c) 2011 IBM Corporation + * All rights reserved. + * This program and the accompanying materials + * are made available under the terms of the BSD License + * which accompanies this distribution, and is available at + * http://www.opensource.org/licenses/bsd-license.php + * + * Contributors: + * IBM Corporation - initial implementation + *****************************************************************************/ + +/* + * Common byteorder (endianess) macros + */ + +#ifndef BYTEORDER_H +#define BYTEORDER_H + +static inline uint16_t +bswap_16 (uint16_t x) +{ + return ((x&0xff00) >> 8) | ((x&0xff) << 8); +} + +static inline uint32_t +bswap_32 (uint32_t x) +{ + return bswap_16(x >> 16) | (bswap_16(x) << 16); +} + +static inline uint64_t +bswap_64 (uint64_t x) +{ + return (uint64_t) bswap_32(x >> 32) | (uint64_t) bswap_32(x) << 32; +} + + +/* gcc defines __BIG_ENDIAN__ on big endian targets */ +#ifdef __BIG_ENDIAN__ + +#define cpu_to_be16(x) (x) +#define cpu_to_be32(x) (x) +#define cpu_to_be64(x) (x) + +#define be16_to_cpu(x) (x) +#define be32_to_cpu(x) (x) +#define be64_to_cpu(x) (x) + +#define le16_to_cpu(x) bswap_16(x) +#define le32_to_cpu(x) bswap_32(x) +#define le64_to_cpu(x) bswap_64(x) + +#define cpu_to_le16(x) bswap_16(x) +#define cpu_to_le32(x) bswap_32(x) +#define cpu_to_le64(x) bswap_64(x) + +#else + +#define cpu_to_be16(x) bswap_16(x) +#define cpu_to_be32(x) bswap_32(x) +#define cpu_to_be64(x) bswap_64(x) + +#define be16_to_cpu(x) bswap_16(x) +#define be32_to_cpu(x) bswap_32(x) +#define be64_to_cpu(x) bswap_64(x) + +#define le16_to_cpu(x) (x) +#define le32_to_cpu(x) (x) +#define le64_to_cpu(x) (x) + +#define cpu_to_le16(x) (x) +#define cpu_to_le32(x) (x) +#define cpu_to_le64(x) (x) + +#endif /* __BIG_ENDIAN__ */ + +#endif /* BYTEORDER_H */ diff --git a/lib/libnvram/nvram.c b/lib/libnvram/nvram.c index 7ec12d2..45b13b8 100644 --- a/lib/libnvram/nvram.c +++ b/lib/libnvram/nvram.c @@ -11,17 +11,14 @@ *****************************************************************************/ #include "cache.h" - -#include "../libc/include/stdio.h" -#include "../libc/include/string.h" -#include "../libc/include/stdlib.h" - #include "nvram.h" +#include <stdio.h> #include <stdarg.h> #include <string.h> #include <southbridge.h> #include <nvramlog.h> +#include <byteorder.h> #ifndef NVRAM_LENGTH #define NVRAM_LENGTH 0x10000 diff --git a/lib/libnvram/nvram.h b/lib/libnvram/nvram.h index d15b85e..1324809 100644 --- a/lib/libnvram/nvram.h +++ b/lib/libnvram/nvram.h @@ -33,26 +33,6 @@ typedef struct { #define PARTITION_HEADER_SIZE 16 -/* FIXME this should be done complete and in a more prominent place */ -#define __LITTLE_ENDIAN 1234 -#define __BIG_ENDIAN 4321 -#ifdef __i386__ -#define __BYTE_ORDER __LITTLE_ENDIAN -#else -#define __BYTE_ORDER __BIG_ENDIAN -#endif -#if __BYTE_ORDER == __BIG_ENDIAN -#define cpu_to_be64(x) (x) -#define be64_to_cpu(x) (x) -#define cpu_to_be32(x) (x) -#define be32_to_cpu(x) (x) -#else -#include <byteswap.h> -#define cpu_to_be64(x) bswap_64(x) -#define be64_to_cpu(x) bswap_64(x) -#define cpu_to_be32(x) bswap_32(x) -#define be32_to_cpu(x) bswap_32(x) -#endif /* exported functions */ |