From 93bf62580a68533dc8252b9a2a055c02f34ecb67 Mon Sep 17 00:00:00 2001 From: Christian Cunningham Date: Thu, 24 Mar 2022 09:38:08 -0700 Subject: Modularized --- kernel/drivers/uart.S | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 kernel/drivers/uart.S (limited to 'kernel/drivers/uart.S') diff --git a/kernel/drivers/uart.S b/kernel/drivers/uart.S new file mode 100644 index 0000000..38957c2 --- /dev/null +++ b/kernel/drivers/uart.S @@ -0,0 +1,53 @@ +.section ".text" + +.globl uart_char +uart_char: + mov r2, #0x1000 + movt r2, #0x3f20 +1: + ldr r3, [r2, #24] + tst r3, #0b100000 + bne 1b + str r0, [r2] + bx lr + +.globl uart_string +uart_string: + push {r4, lr} + mov r4, r0 + ldrb r0, [r0] + cmp r0, #0 + popeq {r4, pc} +1: + bl uart_char + ldrb r0, [r4, #1]! + cmp r0, #0 + bne 1b + pop {r4, pc} + +.globl uart_hex +uart_hex: + push {r4, lr} + mov r2, #0x1000 + movt r2, #0x3f20 +1: + ldr r3, [r2, #24] + tst r3, #0b100000 + bne 1b + mov r3, #7 +2: + mov r1, r0 + asr r1, r3 + asr r1, r3 + asr r1, r3 + asr r1, r3 + and r1, #0xf + add r1, #0x30 + cmp r1, #0x3A + blt 3f + add r1, #7 +3: + str r1, [r2] + subs r3, #1 + bge 2b // Jump back to wait for availablilty + pop {r4, pc} -- cgit v1.2.1