
Dear Joakim Tjernlund,
In message OF5324EC0A.37C044B2-ONC12577D1.0031F002-C12577D1.00326E3D@transmode.se you wrote:
4 nops after _start does the trick, i.e. the board is up and running fine.
...
How is this going? If nothing else I think you should send a patch for 83xx, adding the 4 nop's as your(and mine) board is broken otherwise. Freescale guys seems busy with other things so I think this is the best thing to do.
I don't like the idea of adding such code without any understanding why it would be needed for some boards, while it is not needed for others.
Is it really needed at _start? Or can these NOPs be anywhere, and are just needed to adjust some alignment?
When building for example for the MPC8315ERDB board, I see this strange alignment here:
-> grep _start_of_vectors System.map fe0001a8 T _start_of_vectors
Adding 4 NOPs will move this nicely to the next exception vector address at 0x200.
Eventually this is an alignment problem (but then, the "STD_EXCEPTION(0x200, ...)" is supposed to align the respective code to 0x200, and indeed we see
fe0001a8 T _start_of_vectors fe000200 t MachineCheck fe000300 t DataStorage fe000400 t InstStorage ...
Given the fact that _start_of_vectors is not used anywhere in the 83xx code, all this is a pretty big mystery to me.
Best regards,
Wolfgang Denk
-- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de The explanation requiring the fewest assumptions is the most likely to be correct. -- William of Occam