summaryrefslogtreecommitdiffstats
path: root/arch/blackfin/lib
diff options
context:
space:
mode:
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);
+