summaryrefslogtreecommitdiff
path: root/flattree.c
diff options
context:
space:
mode:
authorJon Loeliger <jdl@freescale.com>2006-04-19 11:58:45 -0500
committerJon Loeliger <jdl@freescale.com>2006-04-19 11:58:45 -0500
commit05ae3d8eebdad2b8da6e02eeca3baa3cc54fe5f3 (patch)
tree5712972e522be82598ebf3681d901ce559409190 /flattree.c
parentf7374f60eb086979006f0b029f21824bd13d20ca (diff)
downloaddtc-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.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/flattree.c b/flattree.c
index 19d886e..439fbbb 100644
--- a/flattree.c
+++ b/flattree.c
@@ -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);