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>
master
Daniel Schwierzeck 10 years ago
parent 25fc664f40
commit ca65e5851f
  1. 9
      arch/mips/Kconfig
  2. 14
      arch/mips/lib/bootm.c

@ -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

@ -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);

Loading…
Cancel
Save