fd1bf3a5ae
This patch adds functions to libfdt for accessing the memory reservation map section of a device tree blob. fdt_num_mem_rsv() retreives the number of reservation entries in a dtb, and fdt_get_mem_rsv() retreives a specific reservation entry. fdt_add_mem_rsv() adds a new entry, and fdt_del_mem_rsv() removes a specific numbered entry. Testcases for these new functions are also included. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
31 lines
885 B
C
31 lines
885 B
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(0xabcd1234)
|
|
#define TEST_SIZE_2 ASM_CONST_LL(0x1234)
|
|
|
|
#define TEST_VALUE_1 cell_to_fdt(0xdeadbeef)
|
|
#define TEST_VALUE_2 cell_to_fdt(0xabcd1234)
|
|
|
|
#define TEST_STRING_1 "hello world"
|
|
|
|
#ifndef __ASSEMBLY__
|
|
extern struct fdt_header _test_tree1;
|
|
extern struct fdt_header _truncated_property;
|
|
#endif /* ! __ASSEMBLY */
|