
On Tue, 2010-10-19 at 12:07 +0200, Joakim Tjernlund wrote:
My board has a problem with this change. I added it manually to my tree and now it wont boot at all(only with BDI2000 connected).
Just to clarify, it won't boot with or without the BDI2000 connected, correct?
It seems like my board uses the warm start vector at all times. Padding with 4 nop's after the _start symbol fixes the problem. It might be due to a somewhat peculiar reset design but I cannot understand why. Does this work for everyone else using 83xx?
Odd... I don't have an 83xx board to test on unfortunately. Nothing jumps out as being obviously wrong in the assembly:
===== Pre-commit (works): fe000100 <_start>: fe000100: 3a a0 00 01 li r21,1 fe000104: 60 00 00 00 nop fe000108: 48 00 00 10 b fe000118 <boot_cold> fe00010c: 00 00 00 00 .long 0x0
fe000110 <_start_warm>: fe000110: 3a a0 00 02 li r21,2 fe000114: 48 00 00 0c b fe000120 <boot_warm>
fe000118 <boot_cold>: fe000118: 3c 80 ff 40 lis r4,-192 fe00011c: 60 00 00 00 nop
fe000120 <boot_warm>: fe000120: 7c a0 00 a6 mfmsr r5 fe000124: 48 00 00 05 bl fe000128 <boot_warm+0x8> fe000128: 7c e8 02 a6 mflr r7
===== Post-commit (doesn't work): fe000100 <_start>: fe000100: 3c 80 ff 40 lis r4,-192 fe000104: 60 00 00 00 nop fe000108: 7c a0 00 a6 mfmsr r5 fe00010c: 48 00 00 05 bl fe000110 <_start+0x10> fe000110: 7c e8 02 a6 mflr r7
It'll be interesting to hear if the change affects other boards in the same way.
Best, Peter