Lines Matching defs:f
102 static void emit_label(FILE *f, const char *prefix, const char *label)
104 fprintf(f, "\t.globl\t%s_%s\n", prefix, label);
105 fprintf(f, "%s_%s:\n", prefix, label);
106 fprintf(f, "_%s_%s:\n", prefix, label);
109 static void emit_offset_label(FILE *f, const char *label, int offset)
111 fprintf(f, "\t.globl\t%s\n", label);
112 fprintf(f, "%s\t= . + %d\n", label, offset);
115 #define ASM_EMIT_BELONG(f, fmt, ...) \
117 fprintf((f), "\t.byte\t((" fmt ") >> 24) & 0xff\n", __VA_ARGS__); \
118 fprintf((f), "\t.byte\t((" fmt ") >> 16) & 0xff\n", __VA_ARGS__); \
119 fprintf((f), "\t.byte\t((" fmt ") >> 8) & 0xff\n", __VA_ARGS__); \
120 fprintf((f), "\t.byte\t(" fmt ") & 0xff\n", __VA_ARGS__); \
125 FILE *f = e;
127 fprintf(f, "\t.byte\t0x%02x\n" "\t.byte\t0x%02x\n"
135 FILE *f = e;
138 fprintf(f, "\t.asciz\t\"%.*s\"\n", len, str);
140 fprintf(f, "\t.asciz\t\"%s\"\n", str);
145 FILE *f = e;
147 fprintf(f, "\t.balign\t%d, 0\n", a);
152 FILE *f = e;
157 emit_offset_label(f, m->ref, m->offset);
165 fprintf(f, "\t.byte\t0x%hhx\n", d.val[off]);
174 FILE *f = e;
178 fprintf(f, "\t.globl\t%s\n", l->label);
179 fprintf(f, "%s:\n", l->label);
181 fprintf(f, "\t/* FDT_BEGIN_NODE */\n");
187 FILE *f = e;
190 fprintf(f, "\t/* FDT_END_NODE */\n");
193 fprintf(f, "\t.globl\t%s_end\n", l->label);
194 fprintf(f, "%s_end:\n", l->label);
200 FILE *f = e;
204 fprintf(f, "\t.globl\t%s\n", l->label);
205 fprintf(f, "%s:\n", l->label);
207 fprintf(f, "\t/* FDT_PROP */\n");
346 void dt_to_blob(FILE *f, struct dt_info *dti, int version)
418 if (fwrite(blob.val, blob.len, 1, f) != 1) {
419 if (ferror(f))
433 static void dump_stringtable_asm(FILE *f, struct data strbuf)
442 fprintf(f, "\t.asciz \"%s\"\n", p);
447 void dt_to_asm(FILE *f, struct dt_info *dti, int version)
462 fprintf(f, "/* autogenerated by dtc, do not edit */\n\n");
464 emit_label(f, symprefix, "blob_start");
465 emit_label(f, symprefix, "header");
466 fprintf(f, "\t/* magic */\n");
467 asm_emit_cell(f, FDT_MAGIC);
468 fprintf(f, "\t/* totalsize */\n");
469 ASM_EMIT_BELONG(f, "_%s_blob_abs_end - _%s_blob_start",
471 fprintf(f, "\t/* off_dt_struct */\n");
472 ASM_EMIT_BELONG(f, "_%s_struct_start - _%s_blob_start",
474 fprintf(f, "\t/* off_dt_strings */\n");
475 ASM_EMIT_BELONG(f, "_%s_strings_start - _%s_blob_start",
477 fprintf(f, "\t/* off_mem_rsvmap */\n");
478 ASM_EMIT_BELONG(f, "_%s_reserve_map - _%s_blob_start",
480 fprintf(f, "\t/* version */\n");
481 asm_emit_cell(f, vi->version);
482 fprintf(f, "\t/* last_comp_version */\n");
483 asm_emit_cell(f, vi->last_comp_version);
486 fprintf(f, "\t/* boot_cpuid_phys */\n");
487 asm_emit_cell(f, dti->boot_cpuid_phys);
491 fprintf(f, "\t/* size_dt_strings */\n");
492 ASM_EMIT_BELONG(f, "_%s_strings_end - _%s_strings_start",
497 fprintf(f, "\t/* size_dt_struct */\n");
498 ASM_EMIT_BELONG(f, "_%s_struct_end - _%s_struct_start",
508 asm_emit_align(f, 8);
509 emit_label(f, symprefix, "reserve_map");
511 fprintf(f, "/* Memory reserve map from source file */\n");
521 fprintf(f, "\t.globl\t%s\n", l->label);
522 fprintf(f, "%s:\n", l->label);
524 ASM_EMIT_BELONG(f, "0x%08x", (unsigned int)(re->address >> 32));
525 ASM_EMIT_BELONG(f, "0x%08x",
527 ASM_EMIT_BELONG(f, "0x%08x", (unsigned int)(re->size >> 32));
528 ASM_EMIT_BELONG(f, "0x%08x", (unsigned int)(re->size & 0xffffffff));
531 fprintf(f, "\t.long\t0, 0\n\t.long\t0, 0\n");
534 fprintf(f, "\t.long\t0, 0\n\t.long\t0, 0\n");
536 emit_label(f, symprefix, "struct_start");
537 flatten_tree(dti->dt, &asm_emitter, f, &strbuf, vi);
539 fprintf(f, "\t/* FDT_END */\n");
540 asm_emit_cell(f, FDT_END);
541 emit_label(f, symprefix, "struct_end");
543 emit_label(f, symprefix, "strings_start");
544 dump_stringtable_asm(f, strbuf);
545 emit_label(f, symprefix, "strings_end");
547 emit_label(f, symprefix, "blob_end");
553 fprintf(f, "\t.space\t%d - (_%s_blob_end - _%s_blob_start), 0\n",
557 fprintf(f, "\t.space\t%d, 0\n", padsize);
560 asm_emit_align(f, alignsize);
561 emit_label(f, symprefix, "blob_abs_end");
795 FILE *f;
811 f = srcfile_relative_open(fname, NULL);
813 rc = fread(&magic_buf, sizeof(magic_buf), 1, f);
814 if (ferror(f))
818 if (feof(f))
828 rc = fread(&totalsize_buf, sizeof(totalsize_buf), 1, f);
829 if (ferror(f))
832 if (feof(f))
852 if (feof(f))
856 rc = fread(p, 1, sizeleft, f);
857 if (ferror(f))
920 fclose(f);