+ .extern main
+
.section .startup
+ .code 32
+
+ ldr sp, =_stacktop
+
+ mov r0, #1
+ bl dbgled
+
@ clear bss
ldr r0, =_bss_start
ldr r1, =_bss_size
+ cmp r1, #0
+ beq 1f @ 0-sized bss, skip clear
mov r2, #0
0: str r2, [r0], #4
subs r1, #4
bne 0b
+1:
+ bl main
+
+ mov r0, #0
+ bl dbgled
+
+halt: wfe
+ b halt
+
+dbgled:
+ ldr r3, =0x3f200000 @ gpio base
+ ldr r2, =0x9000 @ gpio 24 and 25 -> output
+ str r2, [r3, #8] @ store to GPFSEL2
+ ldr r2, =0x01000000 @ bit 24
+ teq r0, #0
+ streq r2, [r3, #0x1c] @ GPSET0
+ strne r2, [r3, #0x28] @ GPCLR0
+ lsl r2, #1
+ strne r2, [r3, #0x1c] @ GPSET0
+ streq r2, [r3, #0x28] @ GPCLR0
+ bx lr
+
+@ vi:set filetype=armasm: