aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--clients/net-snk/include/endian.h46
-rw-r--r--clients/net-snk/kernel/Makefile2
-rw-r--r--clients/net-snk/kernel/endian.c30
-rw-r--r--include/byteorder.h78
-rw-r--r--lib/libnvram/nvram.c7
-rw-r--r--lib/libnvram/nvram.h20
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 */