Search code examples
bootbootloadervxworkspowerpc

VxWorks 6.6 on PowerPC Boot Sequence _sysInit() opcode bizarity


For a project I am working on,
Running on PowerPC MPC-8641d, VxWorks6.6.

I need to launch a VIP image from another VIP project.
Investigating the boot sequence it seems that the boot-loader is:
reading the binary header of the image,
copy the binary image (without the hdr) to 0x100000
and jumps to 0x100000 (where _sysInit()) is located.

doing the same thing as the boot-loader, my CPU freeze at address 0x100004h

reading the content of 0x100000 revealed the following dump:

48 44 01 FC   BA AD C0 DE   00 00 00 00   00 00 00 00  
00 00 00 00   00 00 00 00   00 00 00 00   00 00 00 00
...
...
00 00 00 00   00 00 00 00   00 00 00 00   00 00 00 00
00 00 00 00   00 00 00 00   00 00 00 00   00 00 00 00

well, 0x484401FC looks like function prolog, but, 0xBAADC0DE must be a joke!

How does my VIP run by calling this address.
am i missing something else?


Solution

  • 0x484401FC is b 0x4401fc, so it should be branching to 0x4401fc and never executing the instruction at 0x100004 (unless it returns, but the branch doesn't set LR so it would have to return manually).