aboutsummaryrefslogtreecommitdiff
path: root/src/sys
diff options
context:
space:
mode:
authorChristian Cunningham <cc@localhost>2022-02-22 23:27:39 -0700
committerChristian Cunningham <cc@localhost>2022-02-22 23:27:39 -0700
commitb5021c723a5ee267982c4779bb1b1d644e4d2d5c (patch)
tree5c65cc4e784c0ee930ea255293aeb67abcf1f723 /src/sys
parent8ffc1b0fd55aff5fa1014cd99db4dbb695d51a4c (diff)
Started multithreading
Diffstat (limited to 'src/sys')
-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"