Re: kexec on mips failed

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Le Sunday 16 August 2009 18:20:56 wilbur.chan, vous avez écrit :
> Hi,Nicolas,
>
>
> I've got some problem with kexec on mips32...
>
>
> in your code for kexec on mips32, there is a relocate_new_kernel function .
>
>
> In the end of this function , it jump to kexec_start_address by   'j  s1'
>
>
>
> Because I  changed the kexec-tools code  ,in the hope that, it
> simplely passed the new kernel segment  data  into the old kernel.(so
>
> I didn't  pass  the command-line segment in, in my code, there is just
> one segment , segment[0] = kernel_data).
>
>
> So  I need to change register s1 to the new kernel entry address, and
> jump to new kernel directly.
>
>
>
> In my vmlinux,  the entry is 0x802b0000,so I let image->start =
> 0x2b0000,and invoke relocate_new_kernel.
>
>
> However, whether I changed kexec_start_address to 0x802b0000 or
> 0x2b0000 , the  'j  s1'  seemed taking no effect?

Should not you add a nop right after the j s1 in order to fill in the branch 
delay slot with an instruction which does nothing ?

>
>
> (I wrote 88 to address0xa1230000  before 'j  s1' , it succedd .I also
> wrote 78 to address 0xa1230000 in the beginning
>
> of head.S of the new kernel , but failed. And I reset the board to
> uboot mode, used 'md 0x802b0400' to display the new kernel
>
> in ram, it is identical  to the objdump content of the vmlinux.  So I
> guess, this problem lays in the failing of 'j  0x802b0000'
>
> or 'j   0x2b0000'.    I don't know why 'j s1' failed , any suggestions
> about this ?  Thank you very much.
>
> regads,
>
> Wilbur



-- 
Best regards, Florian Fainelli
Email: florian@xxxxxxxxxxx
Web: http://openwrt.org
IRC: [florian] on irc.freenode.net
-------------------------------


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux