summaryrefslogtreecommitdiffstats
path: root/arch/blackfin/lib
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2008-02-21 13:18:53 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2008-02-21 13:18:53 +0100
commita28726cf516e331a96c0976fb2afb5ff6fb1625a (patch)
treedaa053a3d6b9ada25c7e62170d10dd4d2fea90f9 /arch/blackfin/lib
parent28ab141867944cc7181e2ca786cf401d1a296041 (diff)
downloadbarebox-a28726cf516e331a96c0976fb2afb5ff6fb1625a.tar.gz
barebox-a28726cf516e331a96c0976fb2afb5ff6fb1625a.tar.xz
[blackfin]: register handler for booting linux images
Diffstat (limited to 'arch/blackfin/lib')
-rw-r--r--arch/blackfin/lib/blackfin_linux.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/arch/blackfin/lib/blackfin_linux.c b/arch/blackfin/lib/blackfin_linux.c
index 67963ad385..fdd0091e95 100644
--- a/arch/blackfin/lib/blackfin_linux.c
+++ b/arch/blackfin/lib/blackfin_linux.c
@@ -34,14 +34,17 @@
#include <asm/byteorder.h>
#include <asm/cpu.h>
#include <asm/blackfin.h>
+#include <init.h>
+#include <boot.h>
#define CMD_LINE_ADDR 0xFF900000 /* L1 scratchpad */
-int do_bootm_linux(struct image_handle *os_handle, struct image_handle *initrd)
+static int do_bootm_linux(struct image_data *idata)
{
int (*appl)(char *cmdline);
const char *cmdline = getenv("bootargs");
char *cmdlinedest = (char *) CMD_LINE_ADDR;
+ struct image_handle *os_handle = idata->os;
image_header_t *os_header = &os_handle->header;
appl = (int (*)(char *))ntohl(os_header->ih_ep);
@@ -62,3 +65,15 @@ int do_bootm_linux(struct image_handle *os_handle, struct image_handle *initrd)
return -1;
}
+static struct image_handler handler = {
+ .bootm = do_bootm_linux,
+ .image_type = IH_OS_LINUX,
+};
+
+static int bfinlinux_register_image_handler(void)
+{
+ return register_image_handler(&handler);
+}
+
+late_initcall(bfinlinux_register_image_handler);
+