Help Needed.

sivakumar sivakumar.subramani at wipro.com
Thu Jan 2 03:56:01 CET 2003


Hi,

I want to understand the flow of the following piece fo the code. It is
for copying the Linuxbios image from Flash ROM to RAM.

Here I want to what is the value of the _liseg, _iseg, _eliseg  segment
address. Can any one explain the following code.

My system hangs in this part of code (i.e. at rep and movsb instruction.
As per the Ron's SUGGESTION I also used spd to get the value for RAM
intialization.

But still it loop at this point

	jz      .Lnocopy
        movl    $EXT(_eliseg), %ecx
        CONSOLE_DEBUG_TX_HEX32(%ecx)
        subl    %esi, %ecx
        jz      .Lnocopy                /* should not happen */
        rep
        movsb
        CONSOLE_DEBUG_TX_STRING($siva_debug5)
.Lnocopy:
	

Thanks,
Siva.S


 /*
         *      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.
         */
        leal    EXT(_liseg), %esi
        leal    EXT(_iseg), %edi
        cmpl    %esi, %edi
        jz      .Lnocopy
        movl    $EXT(_eliseg), %ecx
        CONSOLE_DEBUG_TX_HEX32(%ecx)
        subl    %esi, %ecx
        jz      .Lnocopy                /* should not happen */
        rep
        movsb
        CONSOLE_DEBUG_TX_STRING($siva_debug5)
.Lnocopy:
        CONSOLE_DEBUG_TX_STRING($siva_debug6)
        intel_chip_post_macro(0x12)             /* post 12 */

        /** clear stack */
        leal    EXT(_stack), %edi
        movl    $EXT(_estack), %ecx
        subl    %edi, %ecx
        xorl    %eax, %eax
        rep
        stosb

        /** clear bss */
        leal    EXT(_bss), %edi
        movl    $EXT(_ebss), %ecx
        subl    %edi, %ecx
        jz      .Lnobss
        xorl    %eax, %eax
        rep
        stosb



-- 
sivakumar <sivakumar.subramani at wipro.com>
wipro




More information about the coreboot mailing list