startup and debug led
[rpikern] / src / startup.s
index ec157f6..30e2a66 100644 (file)
@@ -1,8 +1,42 @@
+       .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: