This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
If you are in loop0 and loop1, you are past the check for a mismatch. If the versions are mismatched, you go into an infinite loop on the GBL_versionMismatch label.
loop0 and loop1 are initializing the GBL table. Did you set a breakpoint after the two loops to see if it was truly stuck. I'm asking because single stepping through these two loops would take a looong time (stack being initialized to 0xc00ffee, etc).
What's in the .gblinit section? There should be sets of triples: nwords, addr, value. The two loops finish when a nword value is 0. Do you see a zero terminated triple?
Todd
I'd like to figure out on which triple the loops are hanging on. Can you load the program and put a breakpoint on the mvkh gblinit, a4 right before loop0 in gbl.h62. Run to this breakpoint. Now put another one on the done. Run the target. After a bit, halt it and see what values are in b0, a0, and b2.
It looks like that first triple is causing problems. The following are the values based on your previous post
nword (b0): 0x000001f0
address (a0): 0x000fcbe8
value (b2): 0x00c0ffee
The address register is incremented in loop1. The nword register is decremented in the same loop until it gets to 0. It sure looks like loop1 is writing the value (0x00coffee) in the wrong spot(s) and corrupting stuff.
Can you look in the .map file and see what is at 0x000fcbe8 thru 0x000fd3a8?
It looks like the length (b0) and address (a0) got written with 0x00c0ffee also. Then it kept writing 92 words (0x00c0ffee -0x00c0ff92) corrupting address 0x00c0ffee to 0x00c1015e.
Todd