diff options
Diffstat (limited to 'src/sys')
-rw-r--r-- | src/sys/kernel.S | 32 |
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" |