diff options
author | Jon Loeliger <jdl@freescale.com> | 2006-04-19 11:58:45 -0500 |
---|---|---|
committer | Jon Loeliger <jdl@freescale.com> | 2006-04-19 11:58:45 -0500 |
commit | 05ae3d8eebdad2b8da6e02eeca3baa3cc54fe5f3 (patch) | |
tree | 5712972e522be82598ebf3681d901ce559409190 /flattree.c | |
parent | f7374f60eb086979006f0b029f21824bd13d20ca (diff) | |
download | dtc-05ae3d8eebdad2b8da6e02eeca3baa3cc54fe5f3.tar.gz |
Use .long on high and low halfs of u64s to avoid .quad
as it appears .quad isn't available in some assemblers.
Diffstat (limited to 'flattree.c')
-rw-r--r-- | flattree.c | 16 |
1 files changed, 12 insertions, 4 deletions
@@ -450,13 +450,21 @@ void dt_to_asm(FILE *f, struct boot_info *bi, int version) emit_label(f, symprefix, "reserve_map"); fprintf(f, "/* Memory reserve map from source file */\n"); + + /* + * Use .long on high and low halfs of u64s to avoid .quad + * as it appears .quad isn't available in some assemblers. + */ for (re = bi->reservelist; re; re = re->next) { - fprintf(f, "\t.quad\t0x%016llx\n\t.quad\t0x%016llx\n", - (unsigned long long)re->re.address, - (unsigned long long)re->re.size); + fprintf(f, "\t.long\t0x%08x\n\t.long\t0x%08x\n", + (unsigned int)(re->re.address >> 32), + (unsigned int)(re->re.address & 0xffffffff)); + fprintf(f, "\t.long\t0x%08x\n\t.long\t0x%08x\n", + (unsigned int)(re->re.size >> 32), + (unsigned int)(re->re.size & 0xffffffff)); } - fprintf(f, "\t.quad\t0\n\t.quad\t0\n"); + fprintf(f, "\t.long\t0, 0\n\t.long\t0, 0\n"); emit_label(f, symprefix, "struct_start"); flatten_tree(bi->dt, &asm_emitter, f, &strbuf, vi); |