entry.S
.text
.org 0
_start:
SUB SP, SP, #0x1000
STMFD SP!, {R0-R11,LR}
BL COPY
LDR R0, =my_romStart
B my_romStart
With this code you did not blinked your loading address, you've got the address where you have linked and later copied your code.
My guess is that, when you call "LDR R0, =my_romStart" the linker will replace "=my_romStart" with 0x7f0000 on the compile time. Though it seems your loading address is 0x800000 if you're able to run stable code with routine calls, since you copied your code from there to 0x7f0000.
You can check the generated binary for the representation of LDR R0 instruction in binary (which should be available on the net) and the 0x7f0000 around it (not sure about the endianess).
Perhaps you should try to get the PC, as you were going to try. You need to blink-out something which is run-time, not compile-time
About my previous comments, concerning 350D's bootflg2 code, I said it is linked to run from 0x1900, but then when I thunk of it more, they do not have routine calls in their code (besides the routines from the BootLoader, but they do not count, since they have their addresses already), so they do not care where they're linked.
If you have a way to run stable code now, you should try to blink-out the bootloader. Then find the routines for bootflags in the bootloader... this way you will be able to run AUTOEXEC.BIN