2#ifndef LIBFDT_INTERNAL_H
3#define LIBFDT_INTERNAL_H
11#define FDT_ALIGN(x, a) (((x) + (a) - 1) & ~((a) - 1))
12#define FDT_TAGALIGN(x) (FDT_ALIGN((x), FDT_TAGSIZE))
14int32_t fdt_ro_probe_(
const void *fdt);
15#define FDT_RO_PROBE(fdt) \
18 if ((totalsize_ = fdt_ro_probe_(fdt)) < 0) \
22int fdt_check_node_offset_(
const void *fdt,
int offset);
23int fdt_check_prop_offset_(
const void *fdt,
int offset);
25const char *fdt_find_string_len_(
const char *strtab,
int tabsize,
const char *s,
27static inline const char *fdt_find_string_(
const char *strtab,
int tabsize,
30 return fdt_find_string_len_(strtab, tabsize, s, strlen(s));
33int fdt_node_end_offset_(
void *fdt,
int nodeoffset);
35static inline const void *fdt_offset_ptr_(
const void *fdt,
int offset)
37 return (
const char *)fdt + fdt_off_dt_struct(fdt) + offset;
40static inline void *fdt_offset_ptr_w_(
void *fdt,
int offset)
42 return (
void *)(uintptr_t)fdt_offset_ptr_(fdt, offset);
49 ((
const char *)fdt + fdt_off_mem_rsvmap(fdt));
55 return (
void *)(uintptr_t)fdt_mem_rsv_(fdt, n);
67static inline uint32_t fdt32_ld_(
const fdt32_t *p)
69 return fdt32_to_cpu(*p);
72static inline uint64_t fdt64_ld_(
const fdt64_t *p)
74 return fdt64_to_cpu(*p);
77#define FDT_SW_MAGIC (~FDT_MAGIC)
83#ifndef FDT_ASSUME_MASK
84#define FDT_ASSUME_MASK 0
114 ASSUME_PERFECT = 0xff,
130 ASSUME_VALID_DTB = 1 << 0,
142 ASSUME_VALID_INPUT = 1 << 1,
151 ASSUME_LATEST = 1 << 2,
160 ASSUME_NO_ROLLBACK = 1 << 3,
175 ASSUME_LIBFDT_ORDER = 1 << 4,
184 ASSUME_LIBFDT_FLAWLESS = 1 << 5,
193static inline bool can_assume_(
int mask)
195 return FDT_ASSUME_MASK & mask;
199#define can_assume(_assume) can_assume_(ASSUME_ ## _assume)