summaryrefslogtreecommitdiff
path: root/livetree.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 /livetree.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 'livetree.c')
-rw-r--r--livetree.c44
1 files changed, 42 insertions, 2 deletions
diff --git a/livetree.c b/livetree.c
index 6a1f4f9..ef54174 100644
--- a/livetree.c
+++ b/livetree.c
@@ -108,6 +108,46 @@ void add_child(struct node *parent, struct node *child)
*p = child;
}
+struct reserve_info *build_reserve_entry(u64 address, u64 size, char *label)
+{
+ struct reserve_info *new = xmalloc(sizeof(*new));
+
+ new->re.address = address;
+ new->re.size = size;
+
+ new->next = NULL;
+
+ new->label = label;
+
+ return new;
+}
+
+struct reserve_info *chain_reserve_entry(struct reserve_info *first,
+ struct reserve_info *list)
+{
+ assert(first->next == NULL);
+
+ first->next = list;
+ return first;
+}
+
+struct reserve_info *add_reserve_entry(struct reserve_info *list,
+ struct reserve_info *new)
+{
+ struct reserve_info *last;
+
+ new->next = NULL;
+
+ if (! list)
+ return new;
+
+ for (last = list; last->next; last = last->next)
+ ;
+
+ last->next = new;
+
+ return list;
+}
/*
* Tree accessor functions
@@ -682,13 +722,13 @@ int check_device_tree(struct node *dt)
return 1;
}
-struct boot_info *build_boot_info(struct data mem_reserve_data,
+struct boot_info *build_boot_info(struct reserve_info *reservelist,
struct node *tree)
{
struct boot_info *bi;
bi = xmalloc(sizeof(*bi));
- bi->mem_reserve_data = mem_reserve_data;
+ bi->reservelist = reservelist;
bi->dt = tree;
return bi;