Home | History | Annotate | Line # | Download | only in tests
      1      1.1  macallan #include <fdt.h>
      2      1.1  macallan #include "testdata.h"
      3      1.1  macallan 
      4      1.1  macallan #define FDTLONG(val) \
      5      1.1  macallan 	.byte	((val) >> 24) & 0xff ; \
      6      1.1  macallan 	.byte	((val) >> 16) & 0xff ; \
      7      1.1  macallan 	.byte	((val) >> 8) & 0xff ; \
      8      1.1  macallan 	.byte	(val) & 0xff	;
      9      1.1  macallan 
     10      1.1  macallan #define TREE_HDR(tree) \
     11      1.1  macallan 	.balign	8		; \
     12  1.1.1.3     skrll 	.globl	tree		; \
     13      1.1  macallan tree:	\
     14      1.1  macallan 	FDTLONG(FDT_MAGIC)	; \
     15      1.1  macallan 	FDTLONG(tree##_end - tree) ; \
     16      1.1  macallan 	FDTLONG(tree##_struct - tree) ; \
     17      1.1  macallan 	FDTLONG(tree##_strings - tree) ; \
     18      1.1  macallan 	FDTLONG(tree##_rsvmap - tree) ; \
     19      1.1  macallan 	FDTLONG(0x11)		; \
     20      1.1  macallan 	FDTLONG(0x10)		; \
     21      1.1  macallan 	FDTLONG(0)		; \
     22      1.1  macallan 	FDTLONG(tree##_strings_end - tree##_strings) ; \
     23      1.1  macallan 	FDTLONG(tree##_struct_end - tree##_struct) ;
     24      1.1  macallan 
     25  1.1.1.3     skrll #define RSVMAP_ENTRY(addrh, addrl, lenh, lenl) \
     26  1.1.1.3     skrll 	FDTLONG(addrh)		; \
     27  1.1.1.3     skrll 	FDTLONG(addrl)		; \
     28  1.1.1.3     skrll 	FDTLONG(lenh)		; \
     29  1.1.1.3     skrll 	FDTLONG(lenl)
     30      1.1  macallan 
     31      1.1  macallan #define EMPTY_RSVMAP(tree) \
     32      1.1  macallan 	.balign	8		; \
     33      1.1  macallan tree##_rsvmap:			; \
     34  1.1.1.3     skrll 	RSVMAP_ENTRY(0, 0, 0, 0) \
     35      1.1  macallan tree##_rsvmap_end:		;
     36      1.1  macallan 
     37      1.1  macallan #define PROPHDR(tree, name, len) \
     38      1.1  macallan 	FDTLONG(FDT_PROP)	; \
     39      1.1  macallan 	FDTLONG(len)		; \
     40      1.1  macallan 	FDTLONG(tree##_##name - tree##_strings) ;
     41      1.1  macallan 
     42  1.1.1.3     skrll #define PROP_EMPTY(tree, name) \
     43  1.1.1.3     skrll 	PROPHDR(tree, name, 0)	;
     44  1.1.1.3     skrll 
     45      1.1  macallan #define PROP_INT(tree, name, val) \
     46      1.1  macallan 	PROPHDR(tree, name, 4) \
     47      1.1  macallan 	FDTLONG(val)		;
     48      1.1  macallan 
     49  1.1.1.3     skrll #define PROP_INT64(tree, name, valh, vall) \
     50      1.1  macallan 	PROPHDR(tree, name, 8) \
     51  1.1.1.3     skrll 	FDTLONG(valh)		; \
     52  1.1.1.3     skrll 	FDTLONG(vall)		;
     53      1.1  macallan 
     54      1.1  macallan #define PROP_STR(tree, name, str) \
     55      1.1  macallan 	PROPHDR(tree, name, 55f - 54f) \
     56      1.1  macallan 54:	\
     57      1.1  macallan 	.string	str		; \
     58      1.1  macallan 55:	\
     59      1.1  macallan 	.balign	4		;
     60      1.1  macallan 
     61      1.1  macallan #define BEGIN_NODE(name) \
     62      1.1  macallan 	FDTLONG(FDT_BEGIN_NODE)	; \
     63      1.1  macallan 	.string	name		; \
     64      1.1  macallan 	.balign 4		;
     65      1.1  macallan 
     66      1.1  macallan #define END_NODE \
     67      1.1  macallan 	FDTLONG(FDT_END_NODE)	;
     68      1.1  macallan 
     69      1.1  macallan #define STRING(tree, name, str) \
     70      1.1  macallan tree##_##name:			; \
     71      1.1  macallan 	.string	str		;
     72      1.1  macallan 
     73      1.1  macallan 	.data
     74      1.1  macallan 
     75      1.1  macallan 	TREE_HDR(test_tree1)
     76      1.1  macallan 
     77      1.1  macallan 	.balign	8
     78      1.1  macallan test_tree1_rsvmap:
     79  1.1.1.3     skrll 	RSVMAP_ENTRY(TEST_ADDR_1H, TEST_ADDR_1L, TEST_SIZE_1H, TEST_SIZE_1L)
     80  1.1.1.3     skrll 	RSVMAP_ENTRY(TEST_ADDR_2H, TEST_ADDR_2L, TEST_SIZE_2H, TEST_SIZE_2L)
     81  1.1.1.3     skrll 	RSVMAP_ENTRY(0, 0, 0, 0)
     82      1.1  macallan test_tree1_rsvmap_end:
     83      1.1  macallan 
     84      1.1  macallan test_tree1_struct:
     85      1.1  macallan 	BEGIN_NODE("")
     86      1.1  macallan 	PROP_STR(test_tree1, compatible, "test_tree1")
     87      1.1  macallan 	PROP_INT(test_tree1, prop_int, TEST_VALUE_1)
     88  1.1.1.3     skrll 	PROP_INT64(test_tree1, prop_int64, TEST_VALUE64_1H, TEST_VALUE64_1L)
     89      1.1  macallan 	PROP_STR(test_tree1, prop_str, TEST_STRING_1)
     90      1.1  macallan 	PROP_INT(test_tree1, address_cells, 1)
     91      1.1  macallan 	PROP_INT(test_tree1, size_cells, 0)
     92      1.1  macallan 
     93      1.1  macallan 	BEGIN_NODE("subnode@1")
     94      1.1  macallan 	PROP_STR(test_tree1, compatible, "subnode1")
     95      1.1  macallan 	PROP_INT(test_tree1, reg, 1)
     96      1.1  macallan 	PROP_INT(test_tree1, prop_int, TEST_VALUE_1)
     97      1.1  macallan 
     98      1.1  macallan 	BEGIN_NODE("subsubnode")
     99      1.1  macallan 	PROP_STR(test_tree1, compatible, "subsubnode1\0subsubnode")
    100  1.1.1.3     skrll 	PROP_STR(test_tree1, placeholder, "this is a placeholder string\0string2")
    101      1.1  macallan 	PROP_INT(test_tree1, prop_int, TEST_VALUE_1)
    102      1.1  macallan 	END_NODE
    103      1.1  macallan 
    104      1.1  macallan 	BEGIN_NODE("ss1")
    105      1.1  macallan 	END_NODE
    106      1.1  macallan 
    107      1.1  macallan 	END_NODE
    108      1.1  macallan 
    109      1.1  macallan 	BEGIN_NODE("subnode@2")
    110      1.1  macallan 	PROP_INT(test_tree1, reg, 2)
    111      1.1  macallan 	PROP_INT(test_tree1, linux_phandle, PHANDLE_1)
    112      1.1  macallan 	PROP_INT(test_tree1, prop_int, TEST_VALUE_2)
    113      1.1  macallan 	PROP_INT(test_tree1, address_cells, 1)
    114      1.1  macallan 	PROP_INT(test_tree1, size_cells, 0)
    115      1.1  macallan 
    116      1.1  macallan 	BEGIN_NODE("subsubnode@0")
    117      1.1  macallan 	PROP_INT(test_tree1, reg, 0)
    118      1.1  macallan 	PROP_INT(test_tree1, phandle, PHANDLE_2)
    119      1.1  macallan 	PROP_STR(test_tree1, compatible, "subsubnode2\0subsubnode")
    120      1.1  macallan 	PROP_INT(test_tree1, prop_int, TEST_VALUE_2)
    121      1.1  macallan 	END_NODE
    122      1.1  macallan 
    123      1.1  macallan 	BEGIN_NODE("ss2")
    124      1.1  macallan 	END_NODE
    125      1.1  macallan 
    126      1.1  macallan 	END_NODE
    127      1.1  macallan 
    128      1.1  macallan 	END_NODE
    129      1.1  macallan 	FDTLONG(FDT_END)
    130      1.1  macallan test_tree1_struct_end:
    131      1.1  macallan 
    132      1.1  macallan test_tree1_strings:
    133      1.1  macallan 	STRING(test_tree1, compatible, "compatible")
    134      1.1  macallan 	STRING(test_tree1, prop_int, "prop-int")
    135      1.1  macallan 	STRING(test_tree1, prop_int64, "prop-int64")
    136      1.1  macallan 	STRING(test_tree1, prop_str, "prop-str")
    137      1.1  macallan 	STRING(test_tree1, linux_phandle, "linux,phandle")
    138      1.1  macallan 	STRING(test_tree1, phandle, "phandle")
    139      1.1  macallan 	STRING(test_tree1, reg, "reg")
    140  1.1.1.3     skrll 	STRING(test_tree1, placeholder, "placeholder")
    141      1.1  macallan 	STRING(test_tree1, address_cells, "#address-cells")
    142      1.1  macallan 	STRING(test_tree1, size_cells, "#size-cells")
    143      1.1  macallan test_tree1_strings_end:
    144      1.1  macallan test_tree1_end:
    145      1.1  macallan 
    146      1.1  macallan 
    147      1.1  macallan 	TREE_HDR(truncated_property)
    148      1.1  macallan 	EMPTY_RSVMAP(truncated_property)
    149      1.1  macallan 
    150      1.1  macallan truncated_property_struct:
    151      1.1  macallan 	BEGIN_NODE("")
    152      1.1  macallan 	PROPHDR(truncated_property, prop_truncated, 4)
    153      1.1  macallan 	/* Oops, no actual property data here */
    154      1.1  macallan truncated_property_struct_end:
    155      1.1  macallan 
    156      1.1  macallan truncated_property_strings:
    157      1.1  macallan 	STRING(truncated_property, prop_truncated, "truncated")
    158      1.1  macallan truncated_property_strings_end:
    159      1.1  macallan 
    160      1.1  macallan truncated_property_end:
    161      1.1  macallan 
    162      1.1  macallan 
    163      1.1  macallan 	TREE_HDR(bad_node_char)
    164      1.1  macallan 	EMPTY_RSVMAP(bad_node_char)
    165      1.1  macallan 
    166      1.1  macallan bad_node_char_struct:
    167      1.1  macallan 	BEGIN_NODE("")
    168      1.1  macallan 	BEGIN_NODE("sub$node")
    169      1.1  macallan 	END_NODE
    170      1.1  macallan 	END_NODE
    171      1.1  macallan 	FDTLONG(FDT_END)
    172      1.1  macallan bad_node_char_struct_end:
    173      1.1  macallan 
    174      1.1  macallan bad_node_char_strings:
    175      1.1  macallan bad_node_char_strings_end:
    176      1.1  macallan bad_node_char_end:
    177      1.1  macallan 
    178      1.1  macallan 
    179      1.1  macallan 	TREE_HDR(bad_node_format)
    180      1.1  macallan 	EMPTY_RSVMAP(bad_node_format)
    181      1.1  macallan 
    182      1.1  macallan bad_node_format_struct:
    183      1.1  macallan 	BEGIN_NODE("")
    184      1.1  macallan 	BEGIN_NODE("subnode@1@2")
    185      1.1  macallan 	END_NODE
    186      1.1  macallan 	END_NODE
    187      1.1  macallan 	FDTLONG(FDT_END)
    188      1.1  macallan bad_node_format_struct_end:
    189      1.1  macallan 
    190      1.1  macallan bad_node_format_strings:
    191      1.1  macallan bad_node_format_strings_end:
    192      1.1  macallan bad_node_format_end:
    193      1.1  macallan 
    194      1.1  macallan 
    195      1.1  macallan 	TREE_HDR(bad_prop_char)
    196      1.1  macallan 	EMPTY_RSVMAP(bad_prop_char)
    197      1.1  macallan 
    198      1.1  macallan bad_prop_char_struct:
    199      1.1  macallan 	BEGIN_NODE("")
    200      1.1  macallan 	PROP_INT(bad_prop_char, prop, TEST_VALUE_1)
    201      1.1  macallan 	END_NODE
    202      1.1  macallan 	FDTLONG(FDT_END)
    203      1.1  macallan bad_prop_char_struct_end:
    204      1.1  macallan 
    205      1.1  macallan bad_prop_char_strings:
    206      1.1  macallan 	STRING(bad_prop_char, prop, "prop$erty")
    207      1.1  macallan bad_prop_char_strings_end:
    208      1.1  macallan bad_prop_char_end:
    209  1.1.1.2     skrll 
    210  1.1.1.2     skrll 
    211  1.1.1.2     skrll 	/* overflow_size_strings */
    212  1.1.1.2     skrll 	.balign	8
    213  1.1.1.3     skrll 	.globl	ovf_size_strings
    214  1.1.1.2     skrll ovf_size_strings:
    215  1.1.1.2     skrll 	FDTLONG(FDT_MAGIC)
    216  1.1.1.2     skrll 	FDTLONG(ovf_size_strings_end - ovf_size_strings)
    217  1.1.1.2     skrll 	FDTLONG(ovf_size_strings_struct - ovf_size_strings)
    218  1.1.1.2     skrll 	FDTLONG(ovf_size_strings_strings - ovf_size_strings)
    219  1.1.1.2     skrll 	FDTLONG(ovf_size_strings_rsvmap - ovf_size_strings)
    220  1.1.1.2     skrll 	FDTLONG(0x11)
    221  1.1.1.2     skrll 	FDTLONG(0x10)
    222  1.1.1.2     skrll 	FDTLONG(0)
    223  1.1.1.2     skrll 	FDTLONG(0xffffffff)
    224  1.1.1.2     skrll 	FDTLONG(ovf_size_strings_struct_end - ovf_size_strings_struct)
    225  1.1.1.2     skrll 	EMPTY_RSVMAP(ovf_size_strings)
    226  1.1.1.2     skrll 
    227  1.1.1.2     skrll ovf_size_strings_struct:
    228  1.1.1.2     skrll 	BEGIN_NODE("")
    229  1.1.1.2     skrll 	PROP_INT(ovf_size_strings, bad_string, 0)
    230  1.1.1.2     skrll 	END_NODE
    231  1.1.1.2     skrll 	FDTLONG(FDT_END)
    232  1.1.1.2     skrll ovf_size_strings_struct_end:
    233  1.1.1.2     skrll 
    234  1.1.1.2     skrll ovf_size_strings_strings:
    235  1.1.1.2     skrll 	STRING(ovf_size_strings, x, "x")
    236  1.1.1.2     skrll 	ovf_size_strings_bad_string = ovf_size_strings_strings + 0x10000000
    237  1.1.1.2     skrll ovf_size_strings_strings_end:
    238  1.1.1.2     skrll ovf_size_strings_end:
    239  1.1.1.3     skrll 
    240  1.1.1.3     skrll 
    241  1.1.1.3     skrll 	/* truncated_string */
    242  1.1.1.3     skrll 	TREE_HDR(truncated_string)
    243  1.1.1.3     skrll 	EMPTY_RSVMAP(truncated_string)
    244  1.1.1.3     skrll 
    245  1.1.1.3     skrll truncated_string_struct:
    246  1.1.1.3     skrll 	BEGIN_NODE("")
    247  1.1.1.3     skrll 	PROP_EMPTY(truncated_string, good_string)
    248  1.1.1.3     skrll 	PROP_EMPTY(truncated_string, bad_string)
    249  1.1.1.3     skrll 	END_NODE
    250  1.1.1.3     skrll 	FDTLONG(FDT_END)
    251  1.1.1.3     skrll truncated_string_struct_end:
    252  1.1.1.3     skrll 
    253  1.1.1.3     skrll truncated_string_strings:
    254  1.1.1.3     skrll 	STRING(truncated_string, good_string, "good")
    255  1.1.1.3     skrll truncated_string_bad_string:
    256  1.1.1.3     skrll 	.byte	'b'
    257  1.1.1.3     skrll 	.byte	'a'
    258  1.1.1.3     skrll 	.byte	'd'
    259  1.1.1.3     skrll 	/* NOTE: terminating \0 deliberately missing */
    260  1.1.1.3     skrll truncated_string_strings_end:
    261  1.1.1.3     skrll truncated_string_end:
    262  1.1.1.3     skrll 
    263  1.1.1.3     skrll 
    264  1.1.1.3     skrll 	/* truncated_memrsv */
    265  1.1.1.3     skrll 	TREE_HDR(truncated_memrsv)
    266  1.1.1.3     skrll 
    267  1.1.1.3     skrll truncated_memrsv_struct:
    268  1.1.1.3     skrll 	BEGIN_NODE("")
    269  1.1.1.3     skrll 	END_NODE
    270  1.1.1.3     skrll 	FDTLONG(FDT_END)
    271  1.1.1.3     skrll truncated_memrsv_struct_end:
    272  1.1.1.3     skrll 
    273  1.1.1.3     skrll truncated_memrsv_strings:
    274  1.1.1.3     skrll truncated_memrsv_strings_end:
    275  1.1.1.3     skrll 
    276  1.1.1.3     skrll 	.balign	8
    277  1.1.1.3     skrll truncated_memrsv_rsvmap:
    278  1.1.1.3     skrll 	RSVMAP_ENTRY(TEST_ADDR_1H, TEST_ADDR_1L, TEST_SIZE_1H, TEST_SIZE_1L)
    279  1.1.1.3     skrll truncated_memrsv_rsvmap_end:
    280  1.1.1.3     skrll 
    281  1.1.1.3     skrll truncated_memrsv_end:
    282