Hi,
The following piece of code is from crt0.base file. In my case it is hanging while copying the Image from ROM to RAM. From the serial output, it is sure that SDRAM testing is passed. But it hangs while doing movsb and rep instruction. I feel that value in the ecx register is getting corrupted and the loop runs for ever. Do any one faced this problem.
#include "crt0_includes.h"
CONSOLE_DEBUG_TX_STRING($str_after_ram)
/* clear boot_complete flag */ xorl %ebp, %ebp __main:
/* * Copy data into RAM and clear the BSS. Since these segments * isn't really that big we just copy/clear using bytes, not * double words. */ CONSOLE_DEBUG_TX_STRING($siva_debug1) intel_chip_post_macro(0x11) /* post 11 */
cld /* clear direction flag */
/* copy linuxBIOS from it's initial load location to * the location it is compiled to run at. * Normally this is copying from FLASH ROM to RAM. */ CONSOLE_DEBUG_TX_STRING($siva_debug2) leal EXT(_liseg), %esi leal EXT(_iseg), %edi cmpl %esi, %edi jz .Lnocopy CONSOLE_DEBUG_TX_STRING($siva_debug4) movl $EXT(_eliseg), %ecx subl %esi, %ecx jz .Lnocopy /* should not happen */ rep movsb CONSOLE_DEBUG_TX_STRING($siva_debug5) .Lnocopy: CONSOLE_DEBUG_TX_STRING($siva_debug3) intel_chip_post_macro(0x12) /*
The output I got through the serial console is as follows: ----------------------------------------------------------------
LinuxBIOS-1.0.0 Tue Dec 31 14:18:19 IST 2002 starting... Ram1 Ram2 Ram3 Ram Enable 1 Ram Enable 2 Ram Enable 3 Ram Enable 4 Ram Enable 5 12345678123456781234567812345678--- SDRAM TEST PASSED Ram4 Ram5 Ram6 Copying LinuxBIOS to ram. Debug Siva 1 Debug Siva 2 Debug Siva 4
LinuxBIOS-1.0.0 Tue Dec 31 14:18:19 IST 2002 starting... Ram1 Ram2 Ram3 Ram Enable 1 Ram Enable 2 Ram Enable 3 Ram Enable 4 Ram Enable 5 12345678123456781234567812345678--- SDRAM TEST PASSED Ram4 Ram5 Ram6 Copying LinuxBIOS to ram. Debug Siva 1 Debug Siva 2 Debug Siva 4