Lines Matching +full:on +full:- +full:die

1 // SPDX-License-Identifier: GPL-2.0-or-later
156 emit_offset_label(f, m->ref, m->offset); in asm_emit_data()
158 while ((d.len - off) >= sizeof(uint32_t)) { in asm_emit_data()
163 while ((d.len - off) >= 1) { in asm_emit_data()
177 fprintf(f, "\t.globl\t%s\n", l->label); in asm_emit_beginnode()
178 fprintf(f, "%s:\n", l->label); in asm_emit_beginnode()
192 fprintf(f, "\t.globl\t%s_end\n", l->label); in asm_emit_endnode()
193 fprintf(f, "%s_end:\n", l->label); in asm_emit_endnode()
203 fprintf(f, "\t.globl\t%s\n", l->label); in asm_emit_property()
204 fprintf(f, "%s:\n", l->label); in asm_emit_property()
226 for (i = 0; i < d->len; i++) { in stringtable_insert()
227 if (streq(str, d->val + i)) in stringtable_insert()
243 if (tree->deleted) in flatten_tree()
246 emit->beginnode(etarget, tree->labels); in flatten_tree()
248 if (vi->flags & FTF_FULLPATH) in flatten_tree()
249 emit->string(etarget, tree->fullpath, 0); in flatten_tree()
251 emit->string(etarget, tree->name, 0); in flatten_tree()
253 emit->align(etarget, sizeof(cell_t)); in flatten_tree()
258 if (streq(prop->name, "name")) in flatten_tree()
261 nameoff = stringtable_insert(strbuf, prop->name); in flatten_tree()
263 emit->property(etarget, prop->labels); in flatten_tree()
264 emit->cell(etarget, prop->val.len); in flatten_tree()
265 emit->cell(etarget, nameoff); in flatten_tree()
267 if ((vi->flags & FTF_VARALIGN) && (prop->val.len >= 8)) in flatten_tree()
268 emit->align(etarget, 8); in flatten_tree()
270 emit->data(etarget, prop->val); in flatten_tree()
271 emit->align(etarget, sizeof(cell_t)); in flatten_tree()
274 if ((vi->flags & FTF_NAMEPROPS) && !seen_name_prop) { in flatten_tree()
275 emit->property(etarget, NULL); in flatten_tree()
276 emit->cell(etarget, tree->basenamelen+1); in flatten_tree()
277 emit->cell(etarget, stringtable_insert(strbuf, "name")); in flatten_tree()
279 if ((vi->flags & FTF_VARALIGN) && ((tree->basenamelen+1) >= 8)) in flatten_tree()
280 emit->align(etarget, 8); in flatten_tree()
282 emit->string(etarget, tree->name, tree->basenamelen); in flatten_tree()
283 emit->align(etarget, sizeof(cell_t)); in flatten_tree()
290 emit->endnode(etarget, tree->labels); in flatten_tree()
300 for (re = reservelist; re; re = re->next) { in flatten_reserve_list()
301 d = data_append_re(d, re->address, re->size); in flatten_reserve_list()
324 fdt->magic = cpu_to_fdt32(FDT_MAGIC); in make_fdt_header()
325 fdt->version = cpu_to_fdt32(vi->version); in make_fdt_header()
326 fdt->last_comp_version = cpu_to_fdt32(vi->last_comp_version); in make_fdt_header()
329 reserve_off = ALIGN(vi->hdr_size, 8); in make_fdt_header()
331 fdt->off_mem_rsvmap = cpu_to_fdt32(reserve_off); in make_fdt_header()
332 fdt->off_dt_struct = cpu_to_fdt32(reserve_off + reservesize); in make_fdt_header()
333 fdt->off_dt_strings = cpu_to_fdt32(reserve_off + reservesize in make_fdt_header()
335 fdt->totalsize = cpu_to_fdt32(reserve_off + reservesize + dtsize + strsize); in make_fdt_header()
337 if (vi->flags & FTF_BOOTCPUID) in make_fdt_header()
338 fdt->boot_cpuid_phys = cpu_to_fdt32(boot_cpuid_phys); in make_fdt_header()
339 if (vi->flags & FTF_STRTABSIZE) in make_fdt_header()
340 fdt->size_dt_strings = cpu_to_fdt32(strsize); in make_fdt_header()
341 if (vi->flags & FTF_STRUCTSIZE) in make_fdt_header()
342 fdt->size_dt_struct = cpu_to_fdt32(dtsize); in make_fdt_header()
361 die("Unknown device tree blob version %d\n", version); in dt_to_blob()
363 flatten_tree(dti->dt, &bin_emitter, &dtbuf, &strbuf, vi); in dt_to_blob()
366 reservebuf = flatten_reserve_list(dti->reservelist, vi); in dt_to_blob()
370 dti->boot_cpuid_phys); in dt_to_blob()
376 padlen = minsize - fdt32_to_cpu(fdt.totalsize); in dt_to_blob()
391 - fdt32_to_cpu(fdt.totalsize); in dt_to_blob()
404 blob = data_append_data(blob, &fdt, vi->hdr_size); in dt_to_blob()
419 die("Error writing device tree blob: %s\n", in dt_to_blob()
422 die("Short write on device tree blob\n"); in dt_to_blob()
426 * data_merge() frees the right-hand element so only the blob in dt_to_blob()
459 die("Unknown device tree blob version %d\n", version); in dt_to_asm()
468 ASM_EMIT_BELONG(f, "_%s_blob_abs_end - _%s_blob_start", in dt_to_asm()
471 ASM_EMIT_BELONG(f, "_%s_struct_start - _%s_blob_start", in dt_to_asm()
474 ASM_EMIT_BELONG(f, "_%s_strings_start - _%s_blob_start", in dt_to_asm()
477 ASM_EMIT_BELONG(f, "_%s_reserve_map - _%s_blob_start", in dt_to_asm()
480 asm_emit_cell(f, vi->version); in dt_to_asm()
482 asm_emit_cell(f, vi->last_comp_version); in dt_to_asm()
484 if (vi->flags & FTF_BOOTCPUID) { in dt_to_asm()
486 asm_emit_cell(f, dti->boot_cpuid_phys); in dt_to_asm()
489 if (vi->flags & FTF_STRTABSIZE) { in dt_to_asm()
491 ASM_EMIT_BELONG(f, "_%s_strings_end - _%s_strings_start", in dt_to_asm()
495 if (vi->flags & FTF_STRUCTSIZE) { in dt_to_asm()
497 ASM_EMIT_BELONG(f, "_%s_struct_end - _%s_struct_start", in dt_to_asm()
505 * Always supply a zero-sized temination entry. in dt_to_asm()
513 * Use .long on high and low halves of u64s to avoid .quad in dt_to_asm()
516 for (re = dti->reservelist; re; re = re->next) { in dt_to_asm()
519 for_each_label(re->labels, l) { in dt_to_asm()
520 fprintf(f, "\t.globl\t%s\n", l->label); in dt_to_asm()
521 fprintf(f, "%s:\n", l->label); in dt_to_asm()
523 ASM_EMIT_BELONG(f, "0x%08x", (unsigned int)(re->address >> 32)); in dt_to_asm()
525 (unsigned int)(re->address & 0xffffffff)); in dt_to_asm()
526 ASM_EMIT_BELONG(f, "0x%08x", (unsigned int)(re->size >> 32)); in dt_to_asm()
527 ASM_EMIT_BELONG(f, "0x%08x", (unsigned int)(re->size & 0xffffffff)); in dt_to_asm()
536 flatten_tree(dti->dt, &asm_emitter, f, &strbuf, vi); in dt_to_asm()
552 fprintf(f, "\t.space\t%d - (_%s_blob_end - _%s_blob_start), 0\n", in dt_to_asm()
571 inb->base = base; in inbuf_init()
572 inb->limit = limit; in inbuf_init()
573 inb->ptr = inb->base; in inbuf_init()
578 if ((inb->ptr + len) > inb->limit) in flat_read_chunk()
579 die("Premature end of data parsing flat device tree\n"); in flat_read_chunk()
581 memcpy(p, inb->ptr, len); in flat_read_chunk()
583 inb->ptr += len; in flat_read_chunk()
590 assert(((inb->ptr - inb->base) % sizeof(val)) == 0); in flat_read_word()
599 int off = inb->ptr - inb->base; in flat_realign()
601 inb->ptr = inb->base + ALIGN(off, align); in flat_realign()
602 if (inb->ptr > inb->limit) in flat_realign()
603 die("Premature end of data parsing flat device tree\n"); in flat_realign()
609 const char *p = inb->ptr; in flat_read_string()
613 if (p >= inb->limit) in flat_read_string()
614 die("Premature end of data parsing flat device tree\n"); in flat_read_string()
618 str = xstrdup(inb->ptr); in flat_read_string()
620 inb->ptr += len; in flat_read_string()
648 p = inb->base + offset; in flat_read_stringtable()
650 if (p >= inb->limit || p < inb->base) in flat_read_stringtable()
651 die("String offset %d overruns string table\n", in flat_read_stringtable()
660 return xstrdup(inb->base + offset); in flat_read_stringtable()
720 die("Path \"%s\" is not valid as a child of \"%s\"\n", in nodename_from_path()
743 node->name = nodename_from_path(parent_flatname, flatname); in unflatten_tree()
745 node->name = flatname; in unflatten_tree()
754 if (node->children) in unflatten_tree()
770 die("Premature FDT_END in device tree blob\n"); in unflatten_tree()
782 die("Invalid opcode word %08x in device tree blob\n", in unflatten_tree()
787 if (node->name != flatname) { in unflatten_tree()
817 die("Error reading DT blob magic number: %s\n", in dt_from_blob()
821 die("EOF reading DT blob magic number\n"); in dt_from_blob()
823 die("Mysterious short read reading magic number\n"); in dt_from_blob()
828 die("Blob has incorrect magic number\n"); in dt_from_blob()
832 die("Error reading DT blob size: %s\n", strerror(errno)); in dt_from_blob()
835 die("EOF reading DT blob size\n"); in dt_from_blob()
837 die("Mysterious short read reading blob size\n"); in dt_from_blob()
842 die("DT blob size (%d) is too small\n", totalsize); in dt_from_blob()
847 fdt->magic = cpu_to_fdt32(magic); in dt_from_blob()
848 fdt->totalsize = cpu_to_fdt32(totalsize); in dt_from_blob()
850 sizeleft = totalsize - sizeof(magic) - sizeof(totalsize); in dt_from_blob()
855 die("EOF before reading %d bytes of DT blob\n", in dt_from_blob()
860 die("Error reading DT blob: %s\n", in dt_from_blob()
863 sizeleft -= rc; in dt_from_blob()
867 off_dt = fdt32_to_cpu(fdt->off_dt_struct); in dt_from_blob()
868 off_str = fdt32_to_cpu(fdt->off_dt_strings); in dt_from_blob()
869 off_mem_rsvmap = fdt32_to_cpu(fdt->off_mem_rsvmap); in dt_from_blob()
870 version = fdt32_to_cpu(fdt->version); in dt_from_blob()
871 boot_cpuid_phys = fdt32_to_cpu(fdt->boot_cpuid_phys); in dt_from_blob()
874 die("Mem Reserve structure offset exceeds total size\n"); in dt_from_blob()
877 die("DT structure offset exceeds total size\n"); in dt_from_blob()
880 die("String table offset exceeds total size\n"); in dt_from_blob()
883 uint32_t size_str = fdt32_to_cpu(fdt->size_dt_strings); in dt_from_blob()
885 die("String table extends past total size\n"); in dt_from_blob()
892 size_dt = fdt32_to_cpu(fdt->size_dt_struct); in dt_from_blob()
894 die("Structure block extends past total size\n"); in dt_from_blob()
912 die("Device tree blob doesn't begin with FDT_BEGIN_NODE (begins with 0x%08x)\n", val); in dt_from_blob()
918 die("Device tree blob doesn't end with FDT_END\n"); in dt_from_blob()