bootm: refactor do_reset and os boot function args
There is no need for each OS specific function to call do_reset() we can just do it once in bootm. This means its feasible on an error for the OS boot function to return. Also, remove passing in cmd_tbl_t as its not needed by the OS boot functions. flag isn't currently used but might be in the future so we left it alone. Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
This commit is contained in:
parent
40afac22a9
commit
40d7e99d37
|
@ -92,8 +92,7 @@ extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
|
||||||
* - loaded (first part of) image to header load address,
|
* - loaded (first part of) image to header load address,
|
||||||
* - disabled interrupts.
|
* - disabled interrupts.
|
||||||
*/
|
*/
|
||||||
typedef void boot_os_fn (cmd_tbl_t *cmdtp, int flag,
|
typedef int boot_os_fn (int flag, int argc, char *argv[],
|
||||||
int argc, char *argv[],
|
|
||||||
bootm_headers_t *images); /* pointers to os/initrd/fdt */
|
bootm_headers_t *images); /* pointers to os/initrd/fdt */
|
||||||
|
|
||||||
extern boot_os_fn do_bootm_linux;
|
extern boot_os_fn do_bootm_linux;
|
||||||
|
@ -428,36 +427,36 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||||
#ifdef CONFIG_SILENT_CONSOLE
|
#ifdef CONFIG_SILENT_CONSOLE
|
||||||
fixup_silent_linux();
|
fixup_silent_linux();
|
||||||
#endif
|
#endif
|
||||||
do_bootm_linux (cmdtp, flag, argc, argv, &images);
|
do_bootm_linux (0, argc, argv, &images);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IH_OS_NETBSD:
|
case IH_OS_NETBSD:
|
||||||
do_bootm_netbsd (cmdtp, flag, argc, argv, &images);
|
do_bootm_netbsd (0, argc, argv, &images);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef CONFIG_LYNXKDI
|
#ifdef CONFIG_LYNXKDI
|
||||||
case IH_OS_LYNXOS:
|
case IH_OS_LYNXOS:
|
||||||
do_bootm_lynxkdi (cmdtp, flag, argc, argv, &images);
|
do_bootm_lynxkdi (0, argc, argv, &images);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case IH_OS_RTEMS:
|
case IH_OS_RTEMS:
|
||||||
do_bootm_rtems (cmdtp, flag, argc, argv, &images);
|
do_bootm_rtems (0, argc, argv, &images);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#if defined(CONFIG_CMD_ELF)
|
#if defined(CONFIG_CMD_ELF)
|
||||||
case IH_OS_VXWORKS:
|
case IH_OS_VXWORKS:
|
||||||
do_bootm_vxworks (cmdtp, flag, argc, argv, &images);
|
do_bootm_vxworks (0, argc, argv, &images);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IH_OS_QNX:
|
case IH_OS_QNX:
|
||||||
do_bootm_qnxelf (cmdtp, flag, argc, argv, &images);
|
do_bootm_qnxelf (0, argc, argv, &images);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_ARTOS
|
#ifdef CONFIG_ARTOS
|
||||||
case IH_OS_ARTOS:
|
case IH_OS_ARTOS:
|
||||||
do_bootm_artos (cmdtp, flag, argc, argv, &images);
|
do_bootm_artos (0, argc, argv, &images);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -465,10 +464,8 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||||
show_boot_progress (-9);
|
show_boot_progress (-9);
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
puts ("\n## Control returned to monitor - resetting...\n");
|
puts ("\n## Control returned to monitor - resetting...\n");
|
||||||
do_reset (cmdtp, flag, argc, argv);
|
|
||||||
#endif
|
#endif
|
||||||
if (iflag)
|
do_reset (cmdtp, flag, argc, argv);
|
||||||
enable_interrupts();
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -983,8 +980,7 @@ static void fixup_silent_linux ()
|
||||||
/* OS booting routines */
|
/* OS booting routines */
|
||||||
/*******************************************************************/
|
/*******************************************************************/
|
||||||
|
|
||||||
static void do_bootm_netbsd (cmd_tbl_t *cmdtp, int flag,
|
static int do_bootm_netbsd (int flag, int argc, char *argv[],
|
||||||
int argc, char *argv[],
|
|
||||||
bootm_headers_t *images)
|
bootm_headers_t *images)
|
||||||
{
|
{
|
||||||
void (*loader)(bd_t *, image_header_t *, char *, char *);
|
void (*loader)(bd_t *, image_header_t *, char *, char *);
|
||||||
|
@ -996,7 +992,7 @@ static void do_bootm_netbsd (cmd_tbl_t *cmdtp, int flag,
|
||||||
#if defined(CONFIG_FIT)
|
#if defined(CONFIG_FIT)
|
||||||
if (!images->legacy_hdr_valid) {
|
if (!images->legacy_hdr_valid) {
|
||||||
fit_unsupported_reset ("NetBSD");
|
fit_unsupported_reset ("NetBSD");
|
||||||
do_reset (cmdtp, flag, argc, argv);
|
return 1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
hdr = images->legacy_hdr_os;
|
hdr = images->legacy_hdr_os;
|
||||||
|
@ -1063,11 +1059,12 @@ static void do_bootm_netbsd (cmd_tbl_t *cmdtp, int flag,
|
||||||
* r6: boot args string
|
* r6: boot args string
|
||||||
*/
|
*/
|
||||||
(*loader) (gd->bd, os_hdr, consdev, cmdline);
|
(*loader) (gd->bd, os_hdr, consdev, cmdline);
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_LYNXKDI
|
#ifdef CONFIG_LYNXKDI
|
||||||
static void do_bootm_lynxkdi (cmd_tbl_t *cmdtp, int flag,
|
static int do_bootm_lynxkdi (int flag, int argc, char *argv[],
|
||||||
int argc, char *argv[],
|
|
||||||
bootm_headers_t *images)
|
bootm_headers_t *images)
|
||||||
{
|
{
|
||||||
image_header_t *hdr = &images->legacy_hdr_os_copy;
|
image_header_t *hdr = &images->legacy_hdr_os_copy;
|
||||||
|
@ -1075,16 +1072,17 @@ static void do_bootm_lynxkdi (cmd_tbl_t *cmdtp, int flag,
|
||||||
#if defined(CONFIG_FIT)
|
#if defined(CONFIG_FIT)
|
||||||
if (!images->legacy_hdr_valid) {
|
if (!images->legacy_hdr_valid) {
|
||||||
fit_unsupported_reset ("Lynx");
|
fit_unsupported_reset ("Lynx");
|
||||||
do_reset (cmdtp, flag, argc, argv);
|
return 1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
lynxkdi_boot ((image_header_t *)hdr);
|
lynxkdi_boot ((image_header_t *)hdr);
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_LYNXKDI */
|
#endif /* CONFIG_LYNXKDI */
|
||||||
|
|
||||||
static void do_bootm_rtems (cmd_tbl_t *cmdtp, int flag,
|
static int do_bootm_rtems (int flag, int argc, char *argv[],
|
||||||
int argc, char *argv[],
|
|
||||||
bootm_headers_t *images)
|
bootm_headers_t *images)
|
||||||
{
|
{
|
||||||
void (*entry_point)(bd_t *);
|
void (*entry_point)(bd_t *);
|
||||||
|
@ -1092,7 +1090,7 @@ static void do_bootm_rtems (cmd_tbl_t *cmdtp, int flag,
|
||||||
#if defined(CONFIG_FIT)
|
#if defined(CONFIG_FIT)
|
||||||
if (!images->legacy_hdr_valid) {
|
if (!images->legacy_hdr_valid) {
|
||||||
fit_unsupported_reset ("RTEMS");
|
fit_unsupported_reset ("RTEMS");
|
||||||
do_reset (cmdtp, flag, argc, argv);
|
return 1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1108,11 +1106,12 @@ static void do_bootm_rtems (cmd_tbl_t *cmdtp, int flag,
|
||||||
* r3: ptr to board info data
|
* r3: ptr to board info data
|
||||||
*/
|
*/
|
||||||
(*entry_point)(gd->bd);
|
(*entry_point)(gd->bd);
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(CONFIG_CMD_ELF)
|
#if defined(CONFIG_CMD_ELF)
|
||||||
static void do_bootm_vxworks (cmd_tbl_t *cmdtp, int flag,
|
static int do_bootm_vxworks (int flag, int argc, char *argv[],
|
||||||
int argc, char *argv[],
|
|
||||||
bootm_headers_t *images)
|
bootm_headers_t *images)
|
||||||
{
|
{
|
||||||
char str[80];
|
char str[80];
|
||||||
|
@ -1120,17 +1119,18 @@ static void do_bootm_vxworks (cmd_tbl_t *cmdtp, int flag,
|
||||||
#if defined(CONFIG_FIT)
|
#if defined(CONFIG_FIT)
|
||||||
if (!images->legacy_hdr_valid) {
|
if (!images->legacy_hdr_valid) {
|
||||||
fit_unsupported_reset ("VxWorks");
|
fit_unsupported_reset ("VxWorks");
|
||||||
do_reset (cmdtp, flag, argc, argv);
|
return 1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
sprintf(str, "%lx", images->ep); /* write entry-point into string */
|
sprintf(str, "%lx", images->ep); /* write entry-point into string */
|
||||||
setenv("loadaddr", str);
|
setenv("loadaddr", str);
|
||||||
do_bootvx(cmdtp, 0, 0, NULL);
|
do_bootvx(NULL, 0, 0, NULL);
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void do_bootm_qnxelf(cmd_tbl_t *cmdtp, int flag,
|
static int do_bootm_qnxelf(int flag, int argc, char *argv[],
|
||||||
int argc, char *argv[],
|
|
||||||
bootm_headers_t *images)
|
bootm_headers_t *images)
|
||||||
{
|
{
|
||||||
char *local_args[2];
|
char *local_args[2];
|
||||||
|
@ -1139,20 +1139,21 @@ static void do_bootm_qnxelf(cmd_tbl_t *cmdtp, int flag,
|
||||||
#if defined(CONFIG_FIT)
|
#if defined(CONFIG_FIT)
|
||||||
if (!images->legacy_hdr_valid) {
|
if (!images->legacy_hdr_valid) {
|
||||||
fit_unsupported_reset ("QNX");
|
fit_unsupported_reset ("QNX");
|
||||||
do_reset (cmdtp, flag, argc, argv);
|
return 1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
sprintf(str, "%lx", images->ep); /* write entry-point into string */
|
sprintf(str, "%lx", images->ep); /* write entry-point into string */
|
||||||
local_args[0] = argv[0];
|
local_args[0] = argv[0];
|
||||||
local_args[1] = str; /* and provide it via the arguments */
|
local_args[1] = str; /* and provide it via the arguments */
|
||||||
do_bootelf(cmdtp, 0, 2, local_args);
|
do_bootelf(NULL, 0, 2, local_args);
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_ARTOS) && defined(CONFIG_PPC)
|
#if defined(CONFIG_ARTOS) && defined(CONFIG_PPC)
|
||||||
static void do_bootm_artos (cmd_tbl_t *cmdtp, int flag,
|
static int do_bootm_artos (int flag, int argc, char *argv[],
|
||||||
int argc, char *argv[],
|
|
||||||
bootm_headers_t *images)
|
bootm_headers_t *images)
|
||||||
{
|
{
|
||||||
ulong top;
|
ulong top;
|
||||||
|
@ -1165,7 +1166,7 @@ static void do_bootm_artos (cmd_tbl_t *cmdtp, int flag,
|
||||||
#if defined(CONFIG_FIT)
|
#if defined(CONFIG_FIT)
|
||||||
if (!images->legacy_hdr_valid) {
|
if (!images->legacy_hdr_valid) {
|
||||||
fit_unsupported_reset ("ARTOS");
|
fit_unsupported_reset ("ARTOS");
|
||||||
do_reset (cmdtp, flag, argc, argv);
|
return 1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1237,5 +1238,7 @@ static void do_bootm_artos (cmd_tbl_t *cmdtp, int flag,
|
||||||
|
|
||||||
entry = (void (*)(bd_t *, char *, char **, ulong))images->ep;
|
entry = (void (*)(bd_t *, char *, char **, ulong))images->ep;
|
||||||
(*entry) (kbd, cmdline, fwenv, top);
|
(*entry) (kbd, cmdline, fwenv, top);
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -56,10 +56,7 @@ static void setup_videolfb_tag (gd_t *gd);
|
||||||
static struct tag *params;
|
static struct tag *params;
|
||||||
#endif /* CONFIG_SETUP_MEMORY_TAGS || CONFIG_CMDLINE_TAG || CONFIG_INITRD_TAG */
|
#endif /* CONFIG_SETUP_MEMORY_TAGS || CONFIG_CMDLINE_TAG || CONFIG_INITRD_TAG */
|
||||||
|
|
||||||
extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
|
int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
|
||||||
|
|
||||||
void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
|
|
||||||
bootm_headers_t *images)
|
|
||||||
{
|
{
|
||||||
bd_t *bd = gd->bd;
|
bd_t *bd = gd->bd;
|
||||||
char *s;
|
char *s;
|
||||||
|
@ -128,11 +125,8 @@ void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
|
||||||
|
|
||||||
theKernel (0, machid, bd->bi_boot_params);
|
theKernel (0, machid, bd->bi_boot_params);
|
||||||
/* does not return */
|
/* does not return */
|
||||||
return;
|
|
||||||
|
|
||||||
error:
|
error:
|
||||||
do_reset (cmdtp, flag, argc, argv);
|
return 1;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -34,8 +34,6 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||||
/* CPU-specific hook to allow flushing of caches, etc. */
|
/* CPU-specific hook to allow flushing of caches, etc. */
|
||||||
extern void prepare_to_boot(void);
|
extern void prepare_to_boot(void);
|
||||||
|
|
||||||
extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
|
|
||||||
|
|
||||||
static struct tag *setup_start_tag(struct tag *params)
|
static struct tag *setup_start_tag(struct tag *params)
|
||||||
{
|
{
|
||||||
params->hdr.tag = ATAG_CORE;
|
params->hdr.tag = ATAG_CORE;
|
||||||
|
@ -173,8 +171,7 @@ static void setup_end_tag(struct tag *params)
|
||||||
params->hdr.size = 0;
|
params->hdr.size = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
|
int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
|
||||||
bootm_headers_t *images)
|
|
||||||
{
|
{
|
||||||
void (*theKernel)(int magic, void *tagtable);
|
void (*theKernel)(int magic, void *tagtable);
|
||||||
struct tag *params, *params_start;
|
struct tag *params, *params_start;
|
||||||
|
@ -205,9 +202,6 @@ void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
|
||||||
|
|
||||||
theKernel(ATAG_MAGIC, params_start);
|
theKernel(ATAG_MAGIC, params_start);
|
||||||
/* does not return */
|
/* does not return */
|
||||||
return;
|
|
||||||
|
|
||||||
error:
|
error:
|
||||||
do_reset (cmdtp, flag, argc, argv);
|
return 1;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,8 +14,6 @@
|
||||||
#include <image.h>
|
#include <image.h>
|
||||||
#include <asm/blackfin.h>
|
#include <asm/blackfin.h>
|
||||||
|
|
||||||
extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
|
|
||||||
|
|
||||||
#ifdef SHARED_RESOURCES
|
#ifdef SHARED_RESOURCES
|
||||||
extern void swap_to(int device_id);
|
extern void swap_to(int device_id);
|
||||||
#endif
|
#endif
|
||||||
|
@ -33,8 +31,7 @@ static char *make_command_line(void)
|
||||||
return dest;
|
return dest;
|
||||||
}
|
}
|
||||||
|
|
||||||
void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
|
int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
|
||||||
bootm_headers_t *images)
|
|
||||||
{
|
{
|
||||||
int (*appl) (char *cmdline);
|
int (*appl) (char *cmdline);
|
||||||
char *cmdline;
|
char *cmdline;
|
||||||
|
@ -51,8 +48,6 @@ void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
|
||||||
dcache_disable();
|
dcache_disable();
|
||||||
(*appl) (cmdline);
|
(*appl) (cmdline);
|
||||||
/* does not return */
|
/* does not return */
|
||||||
return;
|
error:
|
||||||
|
return 1;
|
||||||
error:
|
|
||||||
do_reset (cmdtp, flag, argc, argv);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,10 +29,7 @@
|
||||||
#include <asm/zimage.h>
|
#include <asm/zimage.h>
|
||||||
|
|
||||||
/*cmd_boot.c*/
|
/*cmd_boot.c*/
|
||||||
extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
|
int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
|
||||||
|
|
||||||
void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
|
|
||||||
bootm_headers_t *images)
|
|
||||||
{
|
{
|
||||||
void *base_ptr;
|
void *base_ptr;
|
||||||
ulong os_data, os_len;
|
ulong os_data, os_len;
|
||||||
|
@ -88,9 +85,7 @@ void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
|
||||||
|
|
||||||
boot_zimage(base_ptr);
|
boot_zimage(base_ptr);
|
||||||
/* does not return */
|
/* does not return */
|
||||||
return;
|
|
||||||
|
|
||||||
error:
|
error:
|
||||||
do_reset (cmdtp, flag, argc, argv);
|
return 1;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,11 +42,8 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
static ulong get_sp (void);
|
static ulong get_sp (void);
|
||||||
static void set_clocks_in_mhz (bd_t *kbd);
|
static void set_clocks_in_mhz (bd_t *kbd);
|
||||||
extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
|
|
||||||
|
|
||||||
void do_bootm_linux(cmd_tbl_t * cmdtp, int flag,
|
int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
|
||||||
int argc, char *argv[],
|
|
||||||
bootm_headers_t *images)
|
|
||||||
{
|
{
|
||||||
ulong sp;
|
ulong sp;
|
||||||
|
|
||||||
|
@ -116,11 +113,8 @@ void do_bootm_linux(cmd_tbl_t * cmdtp, int flag,
|
||||||
*/
|
*/
|
||||||
(*kernel) (kbd, initrd_start, initrd_end, cmd_start, cmd_end);
|
(*kernel) (kbd, initrd_start, initrd_end, cmd_start, cmd_end);
|
||||||
/* does not return */
|
/* does not return */
|
||||||
return ;
|
|
||||||
|
|
||||||
error:
|
error:
|
||||||
do_reset (cmdtp, flag, argc, argv);
|
return 1;
|
||||||
return ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static ulong get_sp (void)
|
static ulong get_sp (void)
|
||||||
|
|
|
@ -32,10 +32,7 @@
|
||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
|
int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
|
||||||
|
|
||||||
void do_bootm_linux (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[],
|
|
||||||
bootm_headers_t *images)
|
|
||||||
{
|
{
|
||||||
/* First parameter is mapped to $r5 for kernel boot args */
|
/* First parameter is mapped to $r5 for kernel boot args */
|
||||||
void (*theKernel) (char *);
|
void (*theKernel) (char *);
|
||||||
|
@ -52,9 +49,6 @@ void do_bootm_linux (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[],
|
||||||
|
|
||||||
theKernel (commandline);
|
theKernel (commandline);
|
||||||
/* does not return */
|
/* does not return */
|
||||||
return;
|
|
||||||
|
|
||||||
error:
|
error:
|
||||||
do_reset (cmdtp, flag, argc, argv);
|
return 1;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,15 +43,11 @@ static int linux_env_idx;
|
||||||
static void linux_params_init (ulong start, char * commandline);
|
static void linux_params_init (ulong start, char * commandline);
|
||||||
static void linux_env_set (char * env_name, char * env_val);
|
static void linux_env_set (char * env_name, char * env_val);
|
||||||
|
|
||||||
extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
|
int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
|
||||||
|
|
||||||
void do_bootm_linux (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[],
|
|
||||||
bootm_headers_t *images)
|
|
||||||
{
|
{
|
||||||
void (*theKernel) (int, char **, char **, int *);
|
void (*theKernel) (int, char **, char **, int *);
|
||||||
char *commandline = getenv ("bootargs");
|
char *commandline = getenv ("bootargs");
|
||||||
char env_buf[12];
|
char env_buf[12];
|
||||||
int ret;
|
|
||||||
char *cp;
|
char *cp;
|
||||||
|
|
||||||
/* find kernel entry point */
|
/* find kernel entry point */
|
||||||
|
@ -103,11 +99,7 @@ void do_bootm_linux (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[],
|
||||||
|
|
||||||
theKernel (linux_argc, linux_argv, linux_env, 0);
|
theKernel (linux_argc, linux_argv, linux_env, 0);
|
||||||
/* does not return */
|
/* does not return */
|
||||||
return;
|
return 1;
|
||||||
|
|
||||||
error:
|
|
||||||
do_reset (cmdtp, flag, argc, argv);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void linux_params_init (ulong start, char *line)
|
static void linux_params_init (ulong start, char *line)
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
* we can get this working. ;-)
|
* we can get this working. ;-)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
|
int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
|
||||||
bootm_headers_t *images)
|
|
||||||
{
|
{
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,10 +25,7 @@
|
||||||
#include <command.h>
|
#include <command.h>
|
||||||
#include <asm/byteorder.h>
|
#include <asm/byteorder.h>
|
||||||
|
|
||||||
extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
|
int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
|
||||||
|
|
||||||
void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
|
|
||||||
bootm_headers_t *images)
|
|
||||||
{
|
{
|
||||||
void (*kernel)(void) = (void (*)(void))images->ep;
|
void (*kernel)(void) = (void (*)(void))images->ep;
|
||||||
|
|
||||||
|
@ -37,9 +34,7 @@ void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
|
||||||
*/
|
*/
|
||||||
kernel ();
|
kernel ();
|
||||||
/* does not return */
|
/* does not return */
|
||||||
return;
|
|
||||||
|
|
||||||
error:
|
error:
|
||||||
do_reset (cmdtp, flag, argc, argv);
|
return 1;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,6 @@
|
||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
|
|
||||||
extern ulong get_effective_memsize(void);
|
extern ulong get_effective_memsize(void);
|
||||||
static ulong get_sp (void);
|
static ulong get_sp (void);
|
||||||
static void set_clocks_in_mhz (bd_t *kbd);
|
static void set_clocks_in_mhz (bd_t *kbd);
|
||||||
|
@ -56,9 +55,8 @@ static void set_clocks_in_mhz (bd_t *kbd);
|
||||||
#define CFG_LINUX_LOWMEM_MAX_SIZE (768*1024*1024)
|
#define CFG_LINUX_LOWMEM_MAX_SIZE (768*1024*1024)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void __attribute__((noinline))
|
__attribute__((noinline))
|
||||||
do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
|
int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
|
||||||
bootm_headers_t *images)
|
|
||||||
{
|
{
|
||||||
ulong sp;
|
ulong sp;
|
||||||
|
|
||||||
|
@ -234,11 +232,10 @@ do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
|
||||||
cmd_start, cmd_end, 0, 0);
|
cmd_start, cmd_end, 0, 0);
|
||||||
/* does not return */
|
/* does not return */
|
||||||
}
|
}
|
||||||
return ;
|
return 1;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
do_reset (cmdtp, flag, argc, argv);
|
return 1;
|
||||||
return ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static ulong get_sp (void)
|
static ulong get_sp (void)
|
||||||
|
|
|
@ -43,8 +43,6 @@
|
||||||
|
|
||||||
#define RAMDISK_IMAGE_START_MASK 0x07FF
|
#define RAMDISK_IMAGE_START_MASK 0x07FF
|
||||||
|
|
||||||
extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
|
|
||||||
|
|
||||||
#ifdef CFG_DEBUG
|
#ifdef CFG_DEBUG
|
||||||
static void hexdump (unsigned char *buf, int len)
|
static void hexdump (unsigned char *buf, int len)
|
||||||
{
|
{
|
||||||
|
@ -59,8 +57,7 @@ static void hexdump (unsigned char *buf, int len)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
|
int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
|
||||||
bootm_headers_t *images)
|
|
||||||
{
|
{
|
||||||
char *bootargs = getenv("bootargs");
|
char *bootargs = getenv("bootargs");
|
||||||
|
|
||||||
|
@ -72,9 +69,7 @@ void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
|
||||||
|
|
||||||
kernel();
|
kernel();
|
||||||
/* does not return */
|
/* does not return */
|
||||||
return;
|
|
||||||
|
|
||||||
error:
|
error:
|
||||||
do_reset (cmdtp, flag, argc, argv);
|
return 1;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,6 @@
|
||||||
extern image_header_t header;
|
extern image_header_t header;
|
||||||
extern void srmmu_init_cpu(unsigned int entry);
|
extern void srmmu_init_cpu(unsigned int entry);
|
||||||
extern void prepare_bootargs(char *bootargs);
|
extern void prepare_bootargs(char *bootargs);
|
||||||
extern int do_reset(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]);
|
|
||||||
|
|
||||||
#ifdef CONFIG_USB_UHCI
|
#ifdef CONFIG_USB_UHCI
|
||||||
extern int usb_lowlevel_stop(void);
|
extern int usb_lowlevel_stop(void);
|
||||||
|
@ -83,8 +82,7 @@ struct __attribute__ ((packed)) {
|
||||||
image_header_t ihdr;
|
image_header_t ihdr;
|
||||||
|
|
||||||
/* boot the linux kernel */
|
/* boot the linux kernel */
|
||||||
void do_bootm_linux(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[],
|
int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t * images)
|
||||||
bootm_headers_t * images)
|
|
||||||
{
|
{
|
||||||
char *bootargs;
|
char *bootargs;
|
||||||
ulong initrd_start, initrd_end;
|
ulong initrd_start, initrd_end;
|
||||||
|
@ -181,6 +179,5 @@ void do_bootm_linux(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[],
|
||||||
while (1) ;
|
while (1) ;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
do_reset(cmdtp, flag, argc, argv);
|
return 1;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue