Messages in this thread | | | Date | Fri, 2 Apr 2004 14:07:12 +0200 | From | Torben Mathiasen <> | Subject | 40x PPC relocation issue during boot |
| |
Looking at the current 2.6 tree, there's an issue when one tries to boot a zImage image (with or without an attached initrd). This is present in the -benh tree as well.
In ~/arch/ppc/boot/simple/relocate.S the following snip is present:
.. li r9,0xc mtlr r9 #ifdef CONFIG_PPC_MULTIPLATFORM /* tell kernel we're prep, by putting 0xdeadc0de at KERNELLOAD, * and tell the kernel to start on the 4th instruction since we * overwrite the first 3 sometimes (which are 'nop'). */ lis r10,0xdeadc0de@h ori r10,r10,0xdeadc0de@l li r9,0 stw r10,0(r9) #endif blr
We jump to the 4th instruction, but for the 40x class of cpu's this inst being taken into account anymore. 3 nop's are missing from head_4xx.S:
.text _GLOBAL(_stext) _GLOBAL(_start)
/* Save parameters we are passed. */ mr r31,r3 mr r30,r4 ... ...
The requirements of the 3 nops is silly anyway, but the relocation code needs to be fixed. I haven't done the patch as I'm not sure if any other code will overwrite the first 3 instructions. I hit this bug on an IBM 405EP dev platform.
Torben - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |