Thread (1 message) 1 message, 1 author, 2007-01-14

Re: Fw: [Bugme-new] [Bug 7808] New: Xilinx ML403 does not boot

From: Grant Likely <hidden>
Date: 2007-01-14 08:37:41

On 1/14/07, Bernd Sowislo [off-list ref] wrote:
High,
you were right,
the 4.1 version from 4.1-20060811 works
with the weak statement
Good.
but the kernel hangs
after
now booting the kernel

even if I switch back to the old crosstool path
(after make clean)

now no version work
any idea?
I'm using gcc 4.0.0 as packaged by ELDK 4.0; you might want to give it a tr=
y.

All I do is this to get a working image on linux 2.6.20rc4
$ make distclean
$ make CROSS_COMPILE=3Dppc_4xx- ARCH=3Dppc ml403_defconfig
$ make CROSS_COMPILE=3Dppc_4xx- ARCH=3Dppc menuconfig   # and disable XMON
$ make CROSS_COMPILE=3Dppc_4xx- ARCH=3Dppc zImage

Try that and see how it works.

Cheers,
g.
-----Urspr=FCngliche Nachricht-----
Von: glikely@gmail.com [mailto:glikely@gmail.com]Im Auftrag von Grant
Likely
Gesendet: Freitag, 12. Januar 2007 17:42
An: Andrew Morton
Cc: linuxppc-dev@ozlabs.org; BSowislo@gmx.de;
bugme-daemon@kernel-bugs.osdl.org
Betreff: Re: Fw: [Bugme-new] [Bug 7808] New: Xilinx ML403 does not boot

quoted
There is another question:
the embed-config declares a static pointer bp
for the info structure
this pointer is used by the calling load_kernel
routine.
is a variable valid for the caller if it is declared
in the context of a subroutine?
You mean this at line 28?

/* For those boards that don't provide one.
*/
#if !defined(CONFIG_MBX)
static  bd_t    bdinfo;
#endif

Yes, this is okay to pass around.

...

Let's get one possible issue out of the way: You said you used
ml430_defconfig as .config.  Did you do a 'make ml403_defconfig', or
did you just copy the file?  If you just copied the file, did you do a
'make oldconfig' before building?  If you didn't do either 'make
ml403_defconfig' or 'cp; make oldconfig' then you will probably have
config problems.

...

Try this: get an object dump of zImage and see where embed_config is
referenced.  Below are the relevant sections from my image.

The interesting bits are there are 2 definitions for embed_config (1
weak) in my zImage; but it is easy to see that the call to
embed_config is linked to the strong (correct) one at address 4005fc.
The weak one is at 400158.

What do you see?

$ ppc_4xx-objdump -dS arch/ppc/boot/images/zImage.elf | grep embed_config=
-C
5
  40014c:       39 20 00 00     li      r9,0
  400150:       7d 28 03 a6     mtlr    r9
  400154:       4e 80 00 20     blr
 */
void __attribute__ ((weak))
embed_config(bd_t **bdp)
{
}
  400158:       4e 80 00 20     blr

0040015c <load_kernel>:
--
        unsigned long initrd_size;

        /* First, capture the embedded board information.  Then
         * initialize the serial console port.
         */
        embed_config(&bp);
  400170:       38 61 00 18     addi    r3,r1,24
  400174:       90 01 00 44     stw     r0,68(r1)
  400178:       90 c1 00 18     stw     r6,24(r1)
  40017c:       48 00 04 81     bl      4005fc <embed_config>
#if defined(CONFIG_SERIAL_CPM_CONSOLE) ||
defined(CONFIG_SERIAL_8250_CONSOLE)
        com_port =3D serial_init(0, bp);
  400180:       80 81 00 18     lwz     r4,24(r1)
  400184:       38 60 00 00     li      r3,0
  400188:       48 00 0f b5     bl      40113c <serial_init>
--
  4005ec:       bb 01 00 20     lmw     r24,32(r1)
  4005f0:       7c 08 03 a6     mtlr    r0
  4005f4:       38 21 00 40     addi    r1,r1,64
  4005f8:       4e 80 00 20     blr

004005fc <embed_config>:
         * - If the data cache is turned on this must have been done by
         *   a bootloader and we assume that the cache contents are
         *   valid.
         */
        __asm__("mfdccr %0": "=3Dr" (dccr));
  4005fc:       7c 1a fa a6     mfdccr  r0
        if (dccr =3D=3D 0) {
  400600:       2f 80 00 00     cmpwi   cr7,r0,0
  400604:       40 9e 00 1c     bne-    cr7,400620 <embed_config+0x24>
  400608:       38 00 01 00     li      r0,256
  40060c:       7c 09 03 a6     mtctr   r0
  400610:       39 20 00 00     li      r9,0
                for (addr =3D 0;
                     addr < (congruence_classes * line_size);
                     addr +=3D line_size) {
                        __asm__("dccci 0,%0": :"b"(addr));
  400614:       7c 00 4b 8c     dccci   r0,r9
  400618:       39 29 00 20     addi    r9,r9,32
  40061c:       42 00 ff f8     bdnz+   400614 <embed_config+0x18>
                }
        }

        bd =3D &bdinfo;
        *bdp =3D bd;

--=20
Grant Likely, B.Sc. P.Eng.
Secret Lab Technologies Ltd.
grant.likely@secretlab.ca
(403) 399-0195
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help