
In message 005501c50539$af259e00$1000000a@araavanesyan you wrote:
in function do_run_linux if it finds ramdisk's crc is bad or it's not "u-boot-ized" (mkimage) it resets the board. and many other similar minor things. so why restart? I propose making do_run_linux return something to indicate there is no need to reboot the board and bootm checks this value and returns.
Your proposal indicates that you did not follow the boot process. What is being done right before the ramdisk is being testet? Right, we uncompressed and loaded the Linux kernel, writing it to RAM starting at address 0x0000, thus overwriting the exception vertors installed by U-Boot.
if you find this may cause backwards compatibility problems, let's make it depending on some preprocessor define.
I can submit a patch if you say ok.
I'd be really, really surprised if you could do that. Actually U-Boot will crash at the next timer interrupt, when it junps into completely unexpected handler code.
I strongly recommend to check your ideas before posting.
I also recommend to read the code, ideally before posting. Pay special attention to comments. Sometimes these are actually helpful, like here:
"common/cmd_bootm.c":
284 /* 285 * We have reached the point of no return: we are going to 286 * overwrite all exception vector code, so we cannot easily 287 * recover from any failures any more... 288 */
Best regards,
Wolfgang Denk