Topic: bootloader question - towards an osmocom-bb firmware

I wrote a very short led-on assembly firmware based on usb-loader.S. I can get it to load and turn the LED on only if I load it in place of firmware.bin in the
fernly-usb-loader command line. I was wondering why this is the case? Is there some magic I'm not thinking of?

I tried moving the stack further up but that didn't seem to make any difference. I can proceed by using the usb-loader.bin and then an osmocom layer1.bin
after that but wondered why this was necessary?

.text

.global _start
_start:
disable_interrupts:
        mrs     r0, cpsr
        mov     r1, #0xc0
        orr     r0, r0, r1
        msr     cpsr_cxsf, r0

relocate_stack:
        //ldr     r0, =0x7000bffc // stack_start
        ldr     r0, =0x70010000 // relocate stack FURTHER?
        mov     sp, r0

disable_system_watchdog: // from main.c:do_init()
        ldr     r1, =0xa0030000
        ldr     r0, =0x2200
        str     r0, [r1]

enable_usb_download_mode:
        ldr     r1, =0xa0700a28 // PMIC_CTRL10
        ldr     r0, =0x8000
        str     r0, [r1]

disable_battery_watchdog:
        ldr     r1, =0xa0700a24 // PMIC_CTRL9
        mov     r0, #0x2
        str     r0, [r1]

led_on:
        ldr     r1, =0xa0700c80
        mov     r0, #0x3
        str     r0, [r1]

loop:
        bl      loop

and starting like this works:

./build/fernly-usb-loader -s /dev/fernvale ./build/usb-loader.bin ./build/led-on.bin 

but this does not (LED doesn't come on):

./build/fernly-usb-loader -s /dev/fernvale ./build/led-on.bin ./build/led-on.bin