Comment 11 for bug 813018

Revision history for this message
Andy Doan (doanac) wrote :

I don't do assembly, but I hope this helps narrow down the issue:

I did some build hacks:
 1) straight 4.5 compiled version
 2) 4.5 for everything except a special rule to build sys_info.c with 4.6

As we attempt #1 fails. Attempt #2 works. So now I have two sys_info.o files. That I can interchange to toggle the issue. I compared their disassembles and noticed this difference:

= GOOD =
00000000 <sr32>:
   0: e590c000 ldr ip, [r0]
   4: e92d4010 push {r4, lr}
   8: e3e04000 mvn r4, #0
   c: e1e04214 mvn r4, r4, lsl r2
= BAD =
   0: e92d4010 push {r4, lr}
   4: e3e04000 mvn r4, #0
   8: e590c000 ldr ip, [r0]
   c: e1e04214 mvn r4, r4, lsl r2

There was also small differences in "secure_unlock" and "try_unlock_memory", but I thought they looked close enough. I ran a hexeditor and adjusted my bad .o to match the snippet above from my good .o. The system now boots with this hacked file.