aboutsummaryrefslogtreecommitdiff
path: root/boot.S
diff options
context:
space:
mode:
Diffstat (limited to 'boot.S')
-rw-r--r--boot.S58
1 files changed, 0 insertions, 58 deletions
diff --git a/boot.S b/boot.S
deleted file mode 100644
index 5e510f8..0000000
--- a/boot.S
+++ /dev/null
@@ -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