Attached patch moves the CBFS payload loader to selfboot.c as it's
authorPatrick Georgi <patrick.georgi@coresystems.de>
Tue, 26 May 2009 14:00:49 +0000 (14:00 +0000)
committerPatrick Georgi <patrick.georgi@coresystems.de>
Tue, 26 May 2009 14:00:49 +0000 (14:00 +0000)
the only selfboot user in CBFS.

This way, CBFS can be used without importing selfboot.c, as long as
no payloads are loaded.

Signed-off-by: Patrick Georgi <patrick.georgi@coresystems.de>
Acked-by: Ronald G. Minnich <rminnich@gmail.com>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4304 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

src/boot/selfboot.c
src/include/cbfs.h
src/lib/cbfs.c

index d87fe50c8233ff6e6d7156fe404a5a22ac15d355..faeadba0f031629be2500cb9a66cae6b69de8013 100644 (file)
@@ -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
index adc3f5ab64dd3cc14f7d2eed0c9f18a68caed78e..b11c3b316dc97a6e04af16d037d23955e5787890 100644 (file)
@@ -166,5 +166,7 @@ void * cbfs_get_file(const char *name);
 void *cbfs_load_optionrom(u16 vendor, u16 device, void * dest);
 int run_address(void *f);
 
+struct cbfs_stage *cbfs_find_file(const char *name, int type);
+
 #endif
 
index 4c025d14729b19d949f3628664e1e675c897eead..b5fb9b15eb481aa5ecc33e2cbc045760cc7e2b0f 100644 (file)
@@ -174,24 +174,6 @@ void *cbfs_load_optionrom(u16 vendor, u16 device, void * dest)
        return dest;
 }
 
-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;
-}
-
 void * cbfs_load_stage(const char *name)
 {
        struct cbfs_stage *stage = (struct cbfs_stage *)