aboutsummaryrefslogtreecommitdiff
path: root/treesource.c
diff options
context:
space:
mode:
authorDavid Gibson <dgibson@sneetch.(none)>2005-10-24 18:18:38 +1000
committerDavid Gibson <dgibson@sneetch.(none)>2005-10-24 18:18:38 +1000
commitf040d95b847c4f7d1fa4c3c6309127b8c1ffd8b3 (patch)
tree1497120f8b1672cc44c203ff0653d1c3de6cb784 /treesource.c
parentfccb194a1451d97a373fc4ab2d66aa985c78b48d (diff)
downloaddtc-f040d95b847c4f7d1fa4c3c6309127b8c1ffd8b3.tar.gz
Rework tracking of reserve entries during processing. This is initial work
to allow more powerful handling of reserve entries.
Diffstat (limited to 'treesource.c')
-rw-r--r--treesource.c27
1 files changed, 4 insertions, 23 deletions
diff --git a/treesource.c b/treesource.c
index a568bf7..45c039e 100644
--- a/treesource.c
+++ b/treesource.c
@@ -26,18 +26,6 @@ extern void yyerror(char const *);
struct boot_info *the_boot_info;
-struct data build_mem_reserve(struct data d)
-{
- /*
- * FIXME: Should reconcile the -R parameter here now?
- */
- if (d.len % 16 != 0) {
- yyerror("Memory Reserve entries are <u64 addr, u64 size>\n");
- }
- return d;
-}
-
-
struct boot_info *dt_from_source(FILE *f)
{
the_boot_info = NULL;
@@ -158,19 +146,12 @@ static void write_tree_source_node(FILE *f, struct node *tree, int level)
void write_tree_source(FILE *f, struct boot_info *bi)
{
- int i;
-
- assert((bi->mem_reserve_data.len % sizeof(struct reserve_entry)) == 0);
- for (i = 0;
- i < (bi->mem_reserve_data.len / sizeof(struct reserve_entry));
- i++) {
- struct reserve_entry *re = ((struct reserve_entry *)
- bi->mem_reserve_data.val) + i;
+ struct reserve_info *re;
+ for (re = bi->reservelist; re; re = re->next) {
fprintf(f, "/memreserve/\t%016llx-%016llx;\n",
- (unsigned long long)be64_to_cpu(re->address),
- (unsigned long long)(be64_to_cpu(re->address)
- + be64_to_cpu(re->size) - 1));
+ (unsigned long long)re->re.address,
+ (unsigned long long)(re->re.address + re->re.size - 1));
}
write_tree_source_node(f, bi->dt, 0);