[U-Boot] Custom PPC440GX board: "Unsupported relocation error"

Wouter Eckhardt Wouter.Eckhardt at Prodrive.nl
Wed Aug 26 09:40:02 CEST 2009


Hi all.

I've been busy getting a custom PPC440GX board to boot U-Boot. I started
with a U-Boot (version 1.3.2) based on the ALPR board and the ELDK 4.0
toolchain.

I got all that working and now I trying to move up to a newer version of
U-Boot and a newer toolchain (specifically: U-Boot 2009.03 and ELDK
4.2). After some twiddling of defines in my config file I got following
compiler error:

make[1]: Entering directory
`/data/projects/p3x440/we/u-boot-latest/board/prodrive/p3x440'
ppc_4xx-gcc -g  -Os   -fPIC -ffixed-r14 -meabi -fno-strict-aliasing
-D__KERNEL__ -DTEXT_BASE=0xFFFC0000
-I/data/projects/p3x440/we/u-boot-latest/include -fno-builtin
-ffreestanding -nostdinc -isystem
/data/tools/eldk-4.2/usr/bin/../lib/gcc/powerpc-linux/4.2.2/include
-pipe  -DCONFIG_PPC -D__powerpc__ -DCONFIG_4xx -ffixed-r2 -mstring
-msoft-float -Wa,-m440 -mcpu=440 -DCONFIG_440=1 -Wall
-Wstrict-prototypes -fno-stack-protector -c -o p3x440.o p3x440.c
p3x440.c: In function 'last_stage_init':
p3x440.c:88: warning: unused variable 'reg'
{standard input}: Assembler messages:
{standard input}:130: Error: unsupported relocation against uicb0sr
{standard input}:135: Error: unsupported relocation against uicb0er
{standard input}:137: Error: unsupported relocation against uicb0cr
{standard input}:142: Error: unsupported relocation against uicb0pr
{standard input}:147: Error: unsupported relocation against uicb0tr
{standard input}:152: Error: unsupported relocation against uicb0vr
make[1]: *** [p3x440.o] Error 1
make[1]: Leaving directory
`/data/projects/p3x440/we/u-boot-latest/board/prodrive/p3x440'
make: *** [board/prodrive/p3x440/libp3x440.a] Error 2

The offending piece of code is this:
int last_stage_init(void)
{
        unsigned short reg;

        /*
         * Configure LED's of both Marvell 88E1111 PHY's
         *
         * This has to be done after the 4xx ethernet driver is loaded,
         * so "last_stage_init()" is the right place.
         */
/* TODO: WE: Fix this. */
/*
        miiphy_read("ppc_4xx_eth0", CONFIG_PHY_ADDR, 0x18, &reg);
        reg |= 0x0001;
        miiphy_write("ppc_4xx_eth0", CONFIG_PHY_ADDR, 0x18, reg);
        miiphy_read("ppc_4xx_eth1", CONFIG_PHY1_ADDR, 0x18, &reg);
        reg |= 0x0001;
        miiphy_write("ppc_4xx_eth1", CONFIG_PHY1_ADDR, 0x18, reg);
*/
        return 0;
}

I'm not really sure what went wrong here. Google tells me that this is
usually related to incorrect assembler sequences. Am I missing some
compiler settings?

Thanks in advance!

Met vriendelijke groet,
Kind regards,
Wouter Eckhardt
Engineer
wouter.eckhardt at prodrive.nl
tel. +31 40 2676187
Prodrive B.V.
Postbus 28030
5602 JA Eindhoven
Ekkersrijt 5025
5692 EB Son
The Netherlands
tel. +31 40 2676200
fax: +31 40 2676201
www.prodrive.nl


Disclaimer: The information contained in this email, including any attachments is 
confidential and is for the sole use of the intended recipient(s). Any unauthorized 
review, use, disclosure or distribution is prohibited. If you are not the intended 
recipient, please notify the sender immediately by replying to this message and 
destroy all copies of this message and any attachments.


More information about the U-Boot mailing list