]> git.sur5r.net Git - u-boot/commitdiff
MIPS: bootm: refactor preparation of Linux kernel command line
authorDaniel Schwierzeck <daniel.schwierzeck@gmail.com>
Wed, 14 Jan 2015 20:44:13 +0000 (21:44 +0100)
committerDaniel Schwierzeck <daniel.schwierzeck@gmail.com>
Wed, 21 Jan 2015 13:02:48 +0000 (14:02 +0100)
Move preparation of Linux kernel command line in a separate
function and mark it as legacy. Add a Kconfig option to make
that legacy mode configurable.

Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
arch/mips/Kconfig
arch/mips/lib/bootm.c

index 4991da2226505dd73c18d9df472d3f786e442046..a5d5a336d3b12e43520fa755fd091b09daa31b19 100644 (file)
@@ -116,6 +116,19 @@ config CPU_MIPS64_R2
 
 endchoice
 
+menu "OS boot interface"
+
+config MIPS_BOOT_CMDLINE_LEGACY
+       bool "Hand over legacy command line to Linux kernel"
+       default y
+       help
+         Enable this option if you want U-Boot to hand over the Yamon-style
+         command line to the kernel. All bootargs will be prepared as argc/argv
+         compatible list. The argument count (argc) is stored in register $a0.
+         The address of the argument list (argv) is stored in register $a1.
+
+endmenu
+
 config SUPPORTS_BIG_ENDIAN
        bool
 
index e0722d20d1e876122939117163071e4ecd525b26..a028a47ab9b5f32691ef354927fe818b92365bbf 100644 (file)
@@ -20,6 +20,12 @@ DECLARE_GLOBAL_DATA_PTR;
 #define mips_boot_malta                0
 #endif
 
+#if defined(CONFIG_MIPS_BOOT_CMDLINE_LEGACY)
+#define mips_boot_cmdline_legacy       1
+#else
+#define mips_boot_cmdline_legacy       0
+#endif
+
 static int linux_argc;
 static char **linux_argv;
 static char *linux_argp;
@@ -92,7 +98,7 @@ static void linux_cmdline_dump(void)
                debug("   arg %03d: %s\n", i, linux_argv[i]);
 }
 
-static void boot_cmdline_linux(bootm_headers_t *images)
+static void linux_cmdline_legacy(bootm_headers_t *images)
 {
        const char *bootargs, *next, *quote;
 
@@ -130,8 +136,14 @@ static void boot_cmdline_linux(bootm_headers_t *images)
 
                bootargs = next;
        }
+}
 
-       linux_cmdline_dump();
+static void boot_cmdline_linux(bootm_headers_t *images)
+{
+       if (mips_boot_cmdline_legacy) {
+               linux_cmdline_legacy(images);
+               linux_cmdline_dump();
+       }
 }
 
 static void linux_env_init(void)