summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMilton Miller <miltonm@bga.com>2007-07-07 01:18:49 -0500
committerJon Loeliger <jdl@freescale.com>2007-07-07 10:09:31 -0500
commitd4290338514abdfac372aa9a7af180543c0622ad (patch)
treef078f830ecd2b0bae75fbbed8501f75a84f47931
parent85ab5cc6ec8442245a969a2f5a0e05962e0e7e67 (diff)
downloaddtc-d4290338514abdfac372aa9a7af180543c0622ad.tar.gz
dtc: implement labels on memory reserve slots
Allow a label to be placed on a memory reserve entry. Change the parser to recognize and store them. Emit them when writing assembly output. Signed-off-by: Milton Miller <miltonm@bga.com>
-rw-r--r--dtc-parser.y8
-rw-r--r--flattree.c4
2 files changed, 8 insertions, 4 deletions
diff --git a/dtc-parser.y b/dtc-parser.y
index 9e7fbcc..d88cbf1 100644
--- a/dtc-parser.y
+++ b/dtc-parser.y
@@ -92,11 +92,11 @@ memreserves: memreserve memreserves {
}
;
-memreserve: DT_MEMRESERVE DT_ADDR DT_ADDR ';' {
- $$ = build_reserve_entry($2, $3, NULL);
+memreserve: label DT_MEMRESERVE DT_ADDR DT_ADDR ';' {
+ $$ = build_reserve_entry($3, $4, $1);
}
- | DT_MEMRESERVE DT_ADDR '-' DT_ADDR ';' {
- $$ = build_reserve_entry($2, $4 - $2 + 1, NULL);
+ | label DT_MEMRESERVE DT_ADDR '-' DT_ADDR ';' {
+ $$ = build_reserve_entry($3, $5 - $3 + 1, $1);
}
;
diff --git a/flattree.c b/flattree.c
index a6b66e7..31609d6 100644
--- a/flattree.c
+++ b/flattree.c
@@ -497,6 +497,10 @@ void dt_to_asm(FILE *f, struct boot_info *bi, int version, int boot_cpuid_phys)
* as it appears .quad isn't available in some assemblers.
*/
for (re = bi->reservelist; re; re = re->next) {
+ if (re->label) {
+ fprintf(f, "\t.globl\t%s\n", re->label);
+ fprintf(f, "%s:\n", re->label);
+ }
fprintf(f, "\t.long\t0x%08x\n\t.long\t0x%08x\n",
(unsigned int)(re->re.address >> 32),
(unsigned int)(re->re.address & 0xffffffff));