summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorDaniel Schwierzeck <daniel.schwierzeck@gmail.com>2015-01-14 21:44:13 +0100
committerDaniel Schwierzeck <daniel.schwierzeck@gmail.com>2015-01-21 14:02:48 +0100
commitca65e5851fb60ae58b46e2ad76a90b39d9c378c3 (patch)
treec7a7a51f2c161760bea77581f7513dcfcaa62c1d /arch
parent25fc664f408e2e78623d03071884bafc62251553 (diff)
downloadu-boot-imx-ca65e5851fb60ae58b46e2ad76a90b39d9c378c3.zip
u-boot-imx-ca65e5851fb60ae58b46e2ad76a90b39d9c378c3.tar.gz
u-boot-imx-ca65e5851fb60ae58b46e2ad76a90b39d9c378c3.tar.bz2
MIPS: bootm: refactor preparation of Linux kernel environment
Move preparation of Linux kernel environment 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>
Diffstat (limited to 'arch')
-rw-r--r--arch/mips/Kconfig9
-rw-r--r--arch/mips/lib/bootm.c14
2 files changed, 22 insertions, 1 deletions
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index a5d5a33..9b3ecea 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -127,6 +127,15 @@ config MIPS_BOOT_CMDLINE_LEGACY
compatible list. The argument count (argc) is stored in register $a0.
The address of the argument list (argv) is stored in register $a1.
+config MIPS_BOOT_ENV_LEGACY
+ bool "Hand over legacy environment to Linux kernel"
+ default y
+ help
+ Enable this option if you want U-Boot to hand over the Yamon-style
+ environment to the kernel. Information like memory size, initrd
+ address and size will be prepared as zero-terminated key/value list.
+ The address of the enviroment is stored in register $a2.
+
endmenu
config SUPPORTS_BIG_ENDIAN
diff --git a/arch/mips/lib/bootm.c b/arch/mips/lib/bootm.c
index a028a47..fa579b3 100644
--- a/arch/mips/lib/bootm.c
+++ b/arch/mips/lib/bootm.c
@@ -26,6 +26,12 @@ DECLARE_GLOBAL_DATA_PTR;
#define mips_boot_cmdline_legacy 0
#endif
+#if defined(CONFIG_MIPS_BOOT_ENV_LEGACY)
+#define mips_boot_env_legacy 1
+#else
+#define mips_boot_env_legacy 0
+#endif
+
static int linux_argc;
static char **linux_argv;
static char *linux_argp;
@@ -177,7 +183,7 @@ static void linux_env_set(const char *env_name, const char *env_val)
}
}
-static void boot_prep_linux(bootm_headers_t *images)
+static void linux_env_legacy(bootm_headers_t *images)
{
char env_buf[12];
const char *cp;
@@ -225,6 +231,12 @@ static void boot_prep_linux(bootm_headers_t *images)
}
}
+static void boot_prep_linux(bootm_headers_t *images)
+{
+ if (mips_boot_env_legacy)
+ linux_env_legacy(images);
+}
+
static void boot_jump_linux(bootm_headers_t *images)
{
typedef void __noreturn (*kernel_entry_t)(int, ulong, ulong, ulong);