Browse Source

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>
main
Milton Miller 18 years ago committed by Jon Loeliger
parent
commit
d429033851
  1. 8
      dtc-parser.y
  2. 4
      flattree.c

8
dtc-parser.y

@ -92,11 +92,11 @@ memreserves: memreserve memreserves {
} }
; ;


memreserve: DT_MEMRESERVE DT_ADDR DT_ADDR ';' { memreserve: label DT_MEMRESERVE DT_ADDR DT_ADDR ';' {
$$ = build_reserve_entry($2, $3, NULL); $$ = build_reserve_entry($3, $4, $1);
} }
| DT_MEMRESERVE DT_ADDR '-' DT_ADDR ';' { | label DT_MEMRESERVE DT_ADDR '-' DT_ADDR ';' {
$$ = build_reserve_entry($2, $4 - $2 + 1, NULL); $$ = build_reserve_entry($3, $5 - $3 + 1, $1);
} }
; ;



4
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. * as it appears .quad isn't available in some assemblers.
*/ */
for (re = bi->reservelist; re; re = re->next) { 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", fprintf(f, "\t.long\t0x%08x\n\t.long\t0x%08x\n",
(unsigned int)(re->re.address >> 32), (unsigned int)(re->re.address >> 32),
(unsigned int)(re->re.address & 0xffffffff)); (unsigned int)(re->re.address & 0xffffffff));

Loading…
Cancel
Save