aboutsummaryrefslogtreecommitdiff
path: root/src/sys/kernel.S
diff options
context:
space:
mode:
Diffstat (limited to 'src/sys/kernel.S')
-rw-r--r--src/sys/kernel.S32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/sys/kernel.S b/src/sys/kernel.S
index 3ffc6a5..6452a4f 100644
--- a/src/sys/kernel.S
+++ b/src/sys/kernel.S
@@ -1,11 +1,19 @@
.section ".text.kernel"
+.include "macros.inc"
+
.globl kernel_main
kernel_main:
///https://wiki.osdev.org/ARM_Paging
// Query the ID_MMFR0 register
mrc p15, 0, r0, c0, c1, 4
bl sysinit
+
+ assign_ctask testf, 2
+ assign_ctask testf, 1
+ assign_ctask testf, 2
+ assign_ctask testf, 3
+ assign_ctask testf, 1
// Intentional undefined instruction
// .word 0xf7f0a000
cpsie aif, #0x10
@@ -13,3 +21,27 @@ kernel_main:
1:
wfe
b 1b
+
+testf:
+ push {lr}
+ cmp r0, #2
+ blo 1f
+ beq 2f
+ bgt 3f
+1:
+ ldr r0, =t1
+ bl uart_print
+ pop {pc}
+2:
+ ldr r0, =t2
+ bl uart_print
+ pop {pc}
+3:
+ ldr r0, =t3
+ bl uart_print
+ pop {pc}
+
+.section .data
+t1: .asciz "C1\n"
+t2: .asciz "C2\n"
+t3: .asciz "C3\n"