[Crosstoolchain-logs] [device-tree-compiler] 139/357: libfdt: Consistently use big-endian property data in testcases

Hector Oron zumbi at moszumanska.debian.org
Thu Dec 8 17:06:07 UTC 2016


This is an automated email from the git hooks/post-receive script.

zumbi pushed a commit to branch upstream/1.3.x
in repository device-tree-compiler.

commit 874ff219afd310902707bf7d2362af7285ba559e
Author: David Gibson <david at gibson.dropbear.id.au>
Date:   Mon Sep 17 15:42:36 2007 +1000

    libfdt: Consistently use big-endian property data in testcases
    
    Flat device trees always have integers in their structure stored as
    big-endian.  From this point of view, property values are
    bags-of-bytes and any endianness is up to users of the device tree to
    determine.
    
    The libfdt testcases which use properties with integer values,
    currently use native endian format for the architecture on which the
    testcases are run.  This works ok for now, since both the creation and
    checking of the example device trees happen in the same endianness.
    
    This will become a problem, however, for tests of dtc which we want to
    add in the nearish future.  dtc always uses big-endian format for
    'cell' format data in properties; as it needs to in order to produce
    powerpc-usable device trees when hosted on a little-endian
    architecture.
    
    This patch, therefore, changes the libfdt testsuite to use big-endian
    format always for integer format data, in order to interoperate sanely
    with future dtc testcases.  This also means that the example trees
    created by the testsuite should now be byte-for-byte identical
    regardless of dtc and libfdt's host platform, which is arguably an
    advantage.
    
    Signed-off-by: David Gibson <david at gibson.dropbear.id.au>
---
 tests/testdata.h | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/tests/testdata.h b/tests/testdata.h
index 822c69a..15a4a35 100644
--- a/tests/testdata.h
+++ b/tests/testdata.h
@@ -1,5 +1,16 @@
-#define TEST_VALUE_1	0xdeadbeef
-#define TEST_VALUE_2	0xabcd1234
+#include <endian.h>
+
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define cell_to_fdt(x)	(x)
+#else
+/* We do this as a big hairy expression instead of using bswap_32()
+ * because we need it to work in asm as well as C. */
+#define cell_to_fdt(x)	((((x) >> 24) & 0xff) | (((x) >> 8) & 0xff00) \
+			 | (((x) << 8) & 0xff0000) | (((x) << 24) & 0xff000000))
+#endif
+
+#define TEST_VALUE_1	cell_to_fdt(0xdeadbeef)
+#define TEST_VALUE_2	cell_to_fdt(0xabcd1234)
 
 #define TEST_STRING_1	"hello world"
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/crosstoolchain/device-tree-compiler.git



More information about the Crosstoolchain-logs mailing list