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
--
sivakumar <sivakumar.subramani(a)wipro.com>
wipro