diff options
Diffstat (limited to 'boot.S')
-rw-r--r-- | boot.S | 58 |
1 files changed, 0 insertions, 58 deletions
@@ -1,58 +0,0 @@ -// armv7 mode - -// To keep this in the first portion of the binary. -.section ".text.boot" - -//.org 0x8000 - -// Make _start global. -.globl _start - -// Entry point for the kernel. -// r15 -> should begin execution at 0x8000. -// r0 -> 0x00000000 -// r1 -> 0x00000C42 -// r2 -> 0x00000100 - start of ATAGS -// preserve these registers as argument for kernel_main -_start: - // Shut off extra cores - mrc p15, 0, r5, c0, c0, 5 - and r5, r5, #3 - cmp r5, #0 - bne halt - - // go to system mode - cps #0b11111 - isb - - // Setup the stack. - // It shall be directly below our kernel image - ldr r5, =__start - mov sp, r5 - - // Clear out bss. - ldr r4, =__bss_start - ldr r9, =__bss_end - mov r5, #0 - mov r6, #0 - mov r7, #0 - mov r8, #0 - b 2f - -1: - // store multiple at r4. - stmia r4!, {r5-r8} - - // If we are still below bss_end, loop. -2: - cmp r4, r9 - blo 1b - - // Call kernel_main - ldr r3, =kernel_main - bx r3 - - // halt -halt: - wfe - b halt |