This patch adds checks to the checking framework to verify that node and property names contain only legal characters, and in the case of node names there is at most one '@'. At present when coming from dts input, this is mostly already ensured by the grammer, however putting the check later means its easier to generate helpful error messages rather than just "syntax error". For dtb input, these checks replace the older similar check built into flattree.c. Testcases for the checks are also implemented. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
40 lines
1.1 KiB
C
40 lines
1.1 KiB
C
#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
|
|
|
|
#ifdef __ASSEMBLY__
|
|
#define ASM_CONST_LL(x) (x)
|
|
#else
|
|
#define ASM_CONST_LL(x) (x##ULL)
|
|
#endif
|
|
|
|
#define TEST_ADDR_1 ASM_CONST_LL(0xdeadbeef00000000)
|
|
#define TEST_SIZE_1 ASM_CONST_LL(0x100000)
|
|
#define TEST_ADDR_2 ASM_CONST_LL(123456789)
|
|
#define TEST_SIZE_2 ASM_CONST_LL(010000)
|
|
|
|
#define TEST_VALUE_1 0xdeadbeef
|
|
#define TEST_VALUE_2 123456789
|
|
|
|
#define PHANDLE_1 0x2000
|
|
#define PHANDLE_2 0x2001
|
|
|
|
#define TEST_STRING_1 "hello world"
|
|
#define TEST_STRING_2 "nastystring: \a\b\t\n\v\f\r\\\""
|
|
#define TEST_STRING_3 "\xde\xad\xbe\xef"
|
|
|
|
#ifndef __ASSEMBLY__
|
|
extern struct fdt_header _test_tree1;
|
|
extern struct fdt_header _truncated_property;
|
|
extern struct fdt_header _bad_node_char;
|
|
extern struct fdt_header _bad_node_format;
|
|
extern struct fdt_header _bad_prop_char;
|
|
#endif /* ! __ASSEMBLY */
|