@ boot.S (ARM, Cortex-A9 / ARMv7-A) — minimal entry for the Zynq PS. @ QEMU 'xilinx-zynq-a9' enters at the image load address. We set a stack, @ clear .bss, and call kmain(). Irreducible asm part for ARM. .section .text.boot .global _start _start: @ Park secondary CPUs: only CPU0 continues. mrc p15, 0, r1, c0, c0, 5 @ read MPIDR and r1, r1, #3 @ CPU id (affinity level 0) cmp r1, #0 bne park ldr sp, =_stack_top @ set up the stack @ Zero .bss: [__bss_start, __bss_end) ldr r0, =__bss_start ldr r1, =__bss_end mov r2, #0 1: cmp r0, r1 bge 2f str r2, [r0], #4 b 1b 2: bl kmain park: wfi b park