Lines Matching refs:f
117 static void emit_label(FILE *f, const char *prefix, const char *label) in emit_label() argument
119 fprintf(f, "\t.globl\t%s_%s\n", prefix, label); in emit_label()
120 fprintf(f, "%s_%s:\n", prefix, label); in emit_label()
121 fprintf(f, "_%s_%s:\n", prefix, label); in emit_label()
124 static void emit_offset_label(FILE *f, const char *label, int offset) in emit_offset_label() argument
126 fprintf(f, "\t.globl\t%s\n", label); in emit_offset_label()
127 fprintf(f, "%s\t= . + %d\n", label, offset); in emit_offset_label()
130 #define ASM_EMIT_BELONG(f, fmt, ...) \ argument
132 fprintf((f), "\t.byte\t((" fmt ") >> 24) & 0xff\n", __VA_ARGS__); \
133 fprintf((f), "\t.byte\t((" fmt ") >> 16) & 0xff\n", __VA_ARGS__); \
134 fprintf((f), "\t.byte\t((" fmt ") >> 8) & 0xff\n", __VA_ARGS__); \
135 fprintf((f), "\t.byte\t(" fmt ") & 0xff\n", __VA_ARGS__); \
140 FILE *f = e; in asm_emit_cell() local
142 fprintf(f, "\t.byte 0x%02x; .byte 0x%02x; .byte 0x%02x; .byte 0x%02x\n", in asm_emit_cell()
149 FILE *f = e; in asm_emit_string() local
152 fprintf(f, "\t.string\t\"%.*s\"\n", len, str); in asm_emit_string()
154 fprintf(f, "\t.string\t\"%s\"\n", str); in asm_emit_string()
159 FILE *f = e; in asm_emit_align() local
161 fprintf(f, "\t.balign\t%d, 0\n", a); in asm_emit_align()
166 FILE *f = e; in asm_emit_data() local
171 emit_offset_label(f, m->ref, m->offset); in asm_emit_data()
179 fprintf(f, "\t.byte\t0x%hhx\n", d.val[off]); in asm_emit_data()
188 FILE *f = e; in asm_emit_beginnode() local
192 fprintf(f, "\t.globl\t%s\n", l->label); in asm_emit_beginnode()
193 fprintf(f, "%s:\n", l->label); in asm_emit_beginnode()
195 fprintf(f, "\t/* FDT_BEGIN_NODE */\n"); in asm_emit_beginnode()
201 FILE *f = e; in asm_emit_endnode() local
204 fprintf(f, "\t/* FDT_END_NODE */\n"); in asm_emit_endnode()
207 fprintf(f, "\t.globl\t%s_end\n", l->label); in asm_emit_endnode()
208 fprintf(f, "%s_end:\n", l->label); in asm_emit_endnode()
214 FILE *f = e; in asm_emit_property() local
218 fprintf(f, "\t.globl\t%s\n", l->label); in asm_emit_property()
219 fprintf(f, "%s:\n", l->label); in asm_emit_property()
221 fprintf(f, "\t/* FDT_PROP */\n"); in asm_emit_property()
360 void dt_to_blob(FILE *f, struct dt_info *dti, int version) in dt_to_blob() argument
432 if (fwrite(blob.val, blob.len, 1, f) != 1) { in dt_to_blob()
433 if (ferror(f)) in dt_to_blob()
447 static void dump_stringtable_asm(FILE *f, struct data strbuf) in dump_stringtable_asm() argument
456 fprintf(f, "\t.string \"%s\"\n", p); in dump_stringtable_asm()
461 void dt_to_asm(FILE *f, struct dt_info *dti, int version) in dt_to_asm() argument
476 fprintf(f, "/* autogenerated by dtc, do not edit */\n\n"); in dt_to_asm()
478 emit_label(f, symprefix, "blob_start"); in dt_to_asm()
479 emit_label(f, symprefix, "header"); in dt_to_asm()
480 fprintf(f, "\t/* magic */\n"); in dt_to_asm()
481 asm_emit_cell(f, FDT_MAGIC); in dt_to_asm()
482 fprintf(f, "\t/* totalsize */\n"); in dt_to_asm()
483 ASM_EMIT_BELONG(f, "_%s_blob_abs_end - _%s_blob_start", in dt_to_asm()
485 fprintf(f, "\t/* off_dt_struct */\n"); in dt_to_asm()
486 ASM_EMIT_BELONG(f, "_%s_struct_start - _%s_blob_start", in dt_to_asm()
488 fprintf(f, "\t/* off_dt_strings */\n"); in dt_to_asm()
489 ASM_EMIT_BELONG(f, "_%s_strings_start - _%s_blob_start", in dt_to_asm()
491 fprintf(f, "\t/* off_mem_rsvmap */\n"); in dt_to_asm()
492 ASM_EMIT_BELONG(f, "_%s_reserve_map - _%s_blob_start", in dt_to_asm()
494 fprintf(f, "\t/* version */\n"); in dt_to_asm()
495 asm_emit_cell(f, vi->version); in dt_to_asm()
496 fprintf(f, "\t/* last_comp_version */\n"); in dt_to_asm()
497 asm_emit_cell(f, vi->last_comp_version); in dt_to_asm()
500 fprintf(f, "\t/* boot_cpuid_phys */\n"); in dt_to_asm()
501 asm_emit_cell(f, dti->boot_cpuid_phys); in dt_to_asm()
505 fprintf(f, "\t/* size_dt_strings */\n"); in dt_to_asm()
506 ASM_EMIT_BELONG(f, "_%s_strings_end - _%s_strings_start", in dt_to_asm()
511 fprintf(f, "\t/* size_dt_struct */\n"); in dt_to_asm()
512 ASM_EMIT_BELONG(f, "_%s_struct_end - _%s_struct_start", in dt_to_asm()
522 asm_emit_align(f, 8); in dt_to_asm()
523 emit_label(f, symprefix, "reserve_map"); in dt_to_asm()
525 fprintf(f, "/* Memory reserve map from source file */\n"); in dt_to_asm()
535 fprintf(f, "\t.globl\t%s\n", l->label); in dt_to_asm()
536 fprintf(f, "%s:\n", l->label); in dt_to_asm()
538 ASM_EMIT_BELONG(f, "0x%08x", (unsigned int)(re->address >> 32)); in dt_to_asm()
539 ASM_EMIT_BELONG(f, "0x%08x", in dt_to_asm()
541 ASM_EMIT_BELONG(f, "0x%08x", (unsigned int)(re->size >> 32)); in dt_to_asm()
542 ASM_EMIT_BELONG(f, "0x%08x", (unsigned int)(re->size & 0xffffffff)); in dt_to_asm()
545 fprintf(f, "\t.long\t0, 0\n\t.long\t0, 0\n"); in dt_to_asm()
548 fprintf(f, "\t.long\t0, 0\n\t.long\t0, 0\n"); in dt_to_asm()
550 emit_label(f, symprefix, "struct_start"); in dt_to_asm()
551 flatten_tree(dti->dt, &asm_emitter, f, &strbuf, vi); in dt_to_asm()
553 fprintf(f, "\t/* FDT_END */\n"); in dt_to_asm()
554 asm_emit_cell(f, FDT_END); in dt_to_asm()
555 emit_label(f, symprefix, "struct_end"); in dt_to_asm()
557 emit_label(f, symprefix, "strings_start"); in dt_to_asm()
558 dump_stringtable_asm(f, strbuf); in dt_to_asm()
559 emit_label(f, symprefix, "strings_end"); in dt_to_asm()
561 emit_label(f, symprefix, "blob_end"); in dt_to_asm()
567 fprintf(f, "\t.space\t%d - (_%s_blob_end - _%s_blob_start), 0\n", in dt_to_asm()
571 fprintf(f, "\t.space\t%d, 0\n", padsize); in dt_to_asm()
574 asm_emit_align(f, alignsize); in dt_to_asm()
575 emit_label(f, symprefix, "blob_abs_end"); in dt_to_asm()
812 FILE *f; in dt_from_blob() local
828 f = srcfile_relative_open(fname, NULL); in dt_from_blob()
830 rc = fread(&magic_buf, sizeof(magic_buf), 1, f); in dt_from_blob()
831 if (ferror(f)) in dt_from_blob()
835 if (feof(f)) in dt_from_blob()
845 rc = fread(&totalsize_buf, sizeof(totalsize_buf), 1, f); in dt_from_blob()
846 if (ferror(f)) in dt_from_blob()
849 if (feof(f)) in dt_from_blob()
869 if (feof(f)) in dt_from_blob()
873 rc = fread(p, 1, sizeleft, f); in dt_from_blob()
874 if (ferror(f)) in dt_from_blob()
937 fclose(f); in dt_from_blob()