summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAaron Durbin <adurbin@chromium.org>2014-02-24 21:50:24 -0600
committerAaron Durbin <adurbin@google.com>2014-03-03 19:49:57 +0100
commit6086e63a79576a1c7d8d06c2413fef34a65c94ba (patch)
treec2cb46fce1284e4d96ce9a17939885da653cc484 /src
parent1322d7f9d58f355f469ab7b993f7da5b6117edb6 (diff)
downloadcoreboot-6086e63a79576a1c7d8d06c2413fef34a65c94ba.tar.xz
coreboot: use struct payload for selfload()
In order to encapsulate more data for self loading use struct payload as the type. That way modifications to what is needed for payload loading does not introduce more global variables. Change-Id: I5b8facd7881e397ca7de1c04cec747fc1dce2d5f Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: http://review.coreboot.org/5298 Tested-by: build bot (Jenkins) Reviewed-by: Alexandru Gagniuc <mr.nuke.me@gmail.com> Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Diffstat (limited to 'src')
-rw-r--r--src/include/payload_loader.h3
-rw-r--r--src/lib/loaders/load_and_run_payload.c2
-rw-r--r--src/lib/selfboot.c10
3 files changed, 8 insertions, 7 deletions
diff --git a/src/include/payload_loader.h b/src/include/payload_loader.h
index b8bfc0dd21..3dde2f7626 100644
--- a/src/include/payload_loader.h
+++ b/src/include/payload_loader.h
@@ -54,8 +54,7 @@ struct payload_loader_ops {
/* Defined in src/lib/selfboot.c */
struct lb_memory;
-struct cbfs_payload;
-void *selfload(struct lb_memory *mem, struct cbfs_payload *payload);
+void *selfload(struct lb_memory *mem, struct payload *payload);
void selfboot(void *entry);
#endif /* PAYLOAD_LOADER_H */
diff --git a/src/lib/loaders/load_and_run_payload.c b/src/lib/loaders/load_and_run_payload.c
index 96f5e27580..f18b57b23a 100644
--- a/src/lib/loaders/load_and_run_payload.c
+++ b/src/lib/loaders/load_and_run_payload.c
@@ -65,7 +65,7 @@ struct payload *payload_load(void)
return NULL;
mem = get_lb_mem();
- entry = selfload(mem, payload->backing_store.data);
+ entry = selfload(mem, payload);
if (entry == NULL)
return NULL;
diff --git a/src/lib/selfboot.c b/src/lib/selfboot.c
index 6f200fa868..bd1206f259 100644
--- a/src/lib/selfboot.c
+++ b/src/lib/selfboot.c
@@ -302,14 +302,16 @@ static int relocate_segment(unsigned long buffer, struct segment *seg)
static int build_self_segment_list(
struct segment *head,
struct lb_memory *mem,
- struct cbfs_payload *payload, uintptr_t *entry)
+ struct payload *payload, uintptr_t *entry)
{
struct segment *new;
struct segment *ptr;
struct cbfs_payload_segment *segment, *first_segment;
+ struct cbfs_payload *cbfs_payload;
+ cbfs_payload = payload->backing_store.data;
memset(head, 0, sizeof(*head));
head->next = head->prev = head;
- first_segment = segment = &payload->segments;
+ first_segment = segment = &cbfs_payload->segments;
while(1) {
printk(BIOS_DEBUG, "Loading segment from rom address 0x%p\n", segment);
@@ -394,7 +396,7 @@ static int build_self_segment_list(
static int load_self_segments(
struct segment *head,
struct lb_memory *mem,
- struct cbfs_payload *payload)
+ struct payload *payload)
{
struct segment *ptr;
@@ -500,7 +502,7 @@ static int load_self_segments(
return 1;
}
-void *selfload(struct lb_memory *mem, struct cbfs_payload *payload)
+void *selfload(struct lb_memory *mem, struct payload *payload)
{
uintptr_t entry = 0;
struct segment head;