
Given that it is a problem on restart, I would speculate you have a peripheral (ethernet is your #1 suspect) that isn"t being shut down before you reset/reboot. As a result, a packet comes in after you reboot and your peripheral (ethernet) DMAs the packet into memory in the middle of somewhere it doesn"t belong.
it's certainly an interesting thought - I will look into it, but I do not think that this is the cause of my problems: if it were, I would expect the CPU to throw an exception and go down the hard way. it doesn't: it just hangs (or so it seems - I am currently JTAG-less, so I can't really tell what's going on inside). also, in that case the board would probably not behave as deterministically as it does (as the problem would be caused by an unpredictable external event). besides, eth is really the only possible culprit since the problem occurs even when rebooting from u-boot, where eth is the only thing that can mess with memory asynchronously. serial console I/O is polling-based...
regards, jaKa