* Patch by Denis Peter, 8 Dec 2003
[platform/kernel/u-boot.git] / lib_arm / armlinux.c
index 0b3d01e..e96ea81 100644 (file)
 #include <dataflash.h>
 #endif
 
-#include <asm/setup.h>
-#define tag_size(type)  ((sizeof(struct tag_header) + sizeof(struct type)) >> 2)
-#define tag_next(t)     ((struct tag *)((u32 *)(t) + (t)->hdr.size))
-
 /*cmd_boot.c*/
 extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
 
 #if defined (CONFIG_SETUP_MEMORY_TAGS) || \
     defined (CONFIG_CMDLINE_TAG) || \
     defined (CONFIG_INITRD_TAG) || \
+    defined (CONFIG_SERIAL_TAG) || \
+    defined (CONFIG_REVISION_TAG) || \
     defined (CONFIG_VFD)
 static void setup_start_tag (bd_t *bd);
 
@@ -83,7 +81,7 @@ void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
        ulong len = 0, checksum;
        ulong initrd_start, initrd_end;
        ulong data;
-       void (*theKernel) (int zero, int arch);
+       void (*theKernel)(int zero, int arch, uint params);
        image_header_t *hdr = &header;
        bd_t *bd = gd->bd;
 
@@ -91,7 +89,7 @@ void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
        char *commandline = getenv ("bootargs");
 #endif
 
-       theKernel = (void (*)(int, int)) ntohl (hdr->ih_ep);
+       theKernel = (void (*)(int, int, uint))ntohl(hdr->ih_ep);
 
        /*
         * Check if there is an initrd image
@@ -221,8 +219,16 @@ void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
 #if defined (CONFIG_SETUP_MEMORY_TAGS) || \
     defined (CONFIG_CMDLINE_TAG) || \
     defined (CONFIG_INITRD_TAG) || \
+    defined (CONFIG_SERIAL_TAG) || \
+    defined (CONFIG_REVISION_TAG) || \
     defined (CONFIG_VFD)
        setup_start_tag (bd);
+#ifdef CONFIG_SERIAL_TAG
+       setup_serial_tag (&params);
+#endif
+#ifdef CONFIG_REVISION_TAG
+       setup_revision_tag (&params);
+#endif
 #ifdef CONFIG_SETUP_MEMORY_TAGS
        setup_memory_tags (bd);
 #endif
@@ -244,13 +250,15 @@ void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
 
        cleanup_before_linux ();
 
-       theKernel (0, bd->bi_arch_number);
+       theKernel (0, bd->bi_arch_number, bd->bi_boot_params);
 }
 
 
 #if defined (CONFIG_SETUP_MEMORY_TAGS) || \
     defined (CONFIG_CMDLINE_TAG) || \
     defined (CONFIG_INITRD_TAG) || \
+    defined (CONFIG_SERIAL_TAG) || \
+    defined (CONFIG_REVISION_TAG) || \
     defined (CONFIG_VFD)
 static void setup_start_tag (bd_t *bd)
 {
@@ -308,10 +316,6 @@ static void setup_commandline_tag (bd_t *bd, char *commandline)
 }
 
 
-#ifndef ATAG_INITRD2
-#define ATAG_INITRD2    0x54420005
-#endif
-
 #ifdef CONFIG_INITRD_TAG
 static void setup_initrd_tag (bd_t *bd, ulong initrd_start, ulong initrd_end)
 {