2007-05-14 17:52:20

by Mattias Rönnblom

[permalink] [raw]
Subject: Linux 2.6.21.1 early putstr() fails on ARM

Hi all.

I just tried updating Linux 2.6.16 to 2.6.21.1 on our IXP420-based
board, but I've run into some trouble. Except for some modifications
to the PCI setup code, the tree is unmodified. GCC is 3.4.3 and
Binutils 2.15.94.

During the decompression stage, the kernel "Uncompressing Linux..."
printout is garbled. When digging into this I found that the string
passed to putstr() is not "Uncompressing Linux...", but rather
something much longer containing a lot of unprintable characters.
putc() as such works fine, and putting "putc('A');" into the
decompress_kernel function (arch/arm/boot/compressed/misc.c), for
example, prints a nice "A" on the console.

>From what limited experience I have of these sorts of things I came to
the conclusion that maybe the linking wasn't done correctly. But
replacing the previously mentioned toolchain with CodeSourcery's
pre-built GCC 4.2.0 and Binutils 2.17 didn't make any difference.

Besides our old (and working, on 2.6.16) .config, I've been trying all
kinds of configs (including ixp4xx_defconfig) without success.

What might I be doing wrong? Any help is appreciated.

Regards,
Mattias