X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=lib_nios2%2Fbootm.c;h=675bfac63a59d5475d160d887fa45b2dbb8618f8;hb=d611295032c30e6c533cb356005fa82ab7992824;hp=01f4e87cb43f94db8bd89a7b9cff778cde3c78ba;hpb=248b7d984cffa3107b5acb4c3f5501b7538d877a;p=u-boot diff --git a/lib_nios2/bootm.c b/lib_nios2/bootm.c index 01f4e87cb4..675bfac63a 100644 --- a/lib_nios2/bootm.c +++ b/lib_nios2/bootm.c @@ -24,44 +24,24 @@ #include #include #include +#include -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 argc, char *argv[], - bootm_headers_t *images) +int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images) { - ulong ep = 0; + void (*kernel)(void) = (void (*)(void))images->ep; - /* find kernel entry point */ - if (images->legacy_hdr_valid) { - ep = image_get_ep (&images->legacy_hdr_os_copy); -#if defined(CONFIG_FIT) - } else if (images->fit_uname_os) { - int ret = fit_image_get_entry (images->fit_hdr_os, - images->fit_noffset_os, &ep); - if (ret) { - puts ("Can't get entry point property!\n"); - goto error; - } -#endif - } else { - puts ("Could not find kernel entry point!\n"); - goto error; - } - void (*kernel)(void) = (void (*)(void))ep; + if ((flag != 0) && (flag != BOOTM_STATE_OS_GO)) + return 1; - if (!images->autostart) - return ; + /* flushes data and instruction caches before calling the kernel */ + flush_dcache (0,CONFIG_SYS_DCACHE_SIZE); + flush_icache (0,CONFIG_SYS_ICACHE_SIZE); /* For now we assume the Microtronix linux ... which only * needs to be called ;-) */ kernel (); /* does not return */ - return; -error: - if (images->autostart) - do_reset (cmdtp, flag, argc, argv); - return; + return 1; }