Lines Matching defs:dt
104 static int oops(devicetree_t *dt, const char *msg) {
105 if (dt->error)
106 dt->error(msg);
110 int dt_init(devicetree_t *dt, void *data, uint32_t len) {
113 dt->top.data = data;
114 dt->top.size = len;
116 s = dt->top;
118 dt->hdr.magic = suint32_t(&s);
119 dt->hdr.size = suint32_t(&s);
120 dt->hdr.off_struct = suint32_t(&s);
121 dt->hdr.off_strings = suint32_t(&s);
122 dt->hdr.off_reserve = suint32_t(&s);
123 dt->hdr.version = suint32_t(&s);
124 dt->hdr.version_compat = suint32_t(&s);
125 dt->hdr.boot_cpuid = suint32_t(&s);
126 dt->hdr.sz_strings = suint32_t(&s);
127 dt->hdr.sz_struct = suint32_t(&s);
129 if (dt->hdr.magic != DT_MAGIC)
130 return oops(dt, "bad magic");
131 if (dt->hdr.size > dt->top.size)
132 return oops(dt, "bogus size field");
133 if (dt->hdr.version != 17)
134 return oops(dt, "version != 17");
135 if (sslice(&dt->top, &dt->dt, dt->hdr.off_struct, dt->hdr.sz_struct))
136 return oops(dt, "invalid structure off/len");
137 if (sslice(&dt->top, &dt->ds, dt->hdr.off_strings, dt->hdr.sz_strings))
138 return oops(dt, "invalid strings off/len");
147 slice_t dt, ds;
150 dt = dtree->dt;
153 while (!sempty(&dt)) {
154 uint32_t type = suint32_t(&dt);
162 p = sstring(&dt);
174 sz = suint32_t(&dt);
175 str = suint32_t(&dt);
176 data = sdata(&dt, sz);