ROM:00000010 _start ; DATA XREF: ROM:_starto
ROM:00000010 ADR R4, _start ; Get real address of _start
ROM:00000014 LDR R0, =0x10
ROM:00000018 SUB R4, R4, R0 ; Subtract offset to get the address that we were loaded at
ROM:0000001C MOV R0, #0x42 ; 'B' ; Output 0x42 to the debug port
ROM:00000020 BL debug_output
ROM:00000024 LDR SP, =__stack_addr ; Set up a stack
ROM:00000028 ADD SP, SP, R4 ; Output 0x43 to the debug port
ROM:0000002C MOV R0, #0x43 ; 'C'
ROM:00000030 BL debug_output
ROM:00000034 LDR R1, =__got_start ; relocate the GOT entries
ROM:00000038 ADD R1, R1, R4
ROM:0000003C LDR R2, =__got_end
ROM:00000040 ADD R2, R2, R4
ROM:00000044
ROM:00000044 got_loop ; CODE XREF: ROM:0000005Cj
ROM:00000044 CMP R1, R2
ROM:00000048 BEQ done_got
ROM:0000004C LDR R3, [R1]
ROM:00000050 ADD R3, R3, R4
ROM:00000054 STR R3, [R1]
ROM:00000058 ADD R1, R1, #4
ROM:0000005C B got_loop
ROM:00000060 ; ---------------------------------------------------------------------------
ROM:00000060
ROM:00000060 done_got ; CODE XREF: ROM:00000048j
ROM:00000060 LDR R1, =__bss_start
ROM:00000064 ADD R1, R1, R4
ROM:00000068 LDR R2, =__bss_start ; __bss_end, fail
ROM:0000006C ADD R2, R2, R4
ROM:00000070 MOV R3, #0
ROM:00000074
ROM:00000074 bss_loop ; CODE XREF: ROM:00000084j
ROM:00000074 CMP R1, R2
ROM:00000078 BEQ done_bss
ROM:0000007C STR R3, [R1]
ROM:00000080 ADD R1, R1, #4
ROM:00000084 B bss_loop
ROM:00000088 ; ---------------------------------------------------------------------------
ROM:00000088
ROM:00000088 done_bss ; CODE XREF: ROM:00000078j
ROM:00000088 MOV R0, #0x44 ; 'D'
ROM:0000008C BL debug_output
ROM:00000090 MOV R0, R4
ROM:00000094 BL _main
ROM:00000098 MOV R1, R0
ROM:0000009C MOV R0, R4
ROM:000000A0 MOV PC, R1