diff options
Diffstat (limited to 'src/boot/selfboot.c')
-rw-r--r-- | src/boot/selfboot.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/boot/selfboot.c b/src/boot/selfboot.c index d87fe50c82..faeadba0f0 100644 --- a/src/boot/selfboot.c +++ b/src/boot/selfboot.c @@ -71,6 +71,24 @@ struct ip_checksum_vcb { unsigned short ip_checksum; }; +void * cbfs_load_payload(struct lb_memory *lb_mem, const char *name) +{ + int selfboot(struct lb_memory *mem, struct cbfs_payload *payload); + struct cbfs_payload *payload = (struct cbfs_payload *) + cbfs_find_file(name, CBFS_TYPE_PAYLOAD); + + struct cbfs_payload_segment *segment, *first_segment; + + if (payload == NULL) + return (void *) -1; + printk_debug("Got a payload\n"); + first_segment = segment = &payload->segments; + selfboot(lb_mem, payload); + printk_emerg("SELFBOOT RETURNED!\n"); + + return (void *) -1; +} + /* The problem: * Static executables all want to share the same addresses * in memory because only a few addresses are reliably present on |