aboutsummaryrefslogtreecommitdiff
path: root/octedit/uart.s
diff options
context:
space:
mode:
Diffstat (limited to 'octedit/uart.s')
-rw-r--r--octedit/uart.s33
1 files changed, 33 insertions, 0 deletions
diff --git a/octedit/uart.s b/octedit/uart.s
new file mode 100644
index 0000000..e79cbdc
--- /dev/null
+++ b/octedit/uart.s
@@ -0,0 +1,33 @@
+.syntax unified
+.cpu cortex-m0plus
+.thumb
+
+.equ UART0_BASE, 0x40034000
+.equ UARTDR_OFST, 0x00
+.equ UARTFR_OFST, 0x18
+
+.type uart_send, %function
+.global uart_send
+
+uart_send:
+ ldr r1, =UART0_BASE
+ movs r3, 0b1 << 5 // TX FIFO full
+1:
+ ldr r2, [r1, UARTFR_OFST]
+ tst r2, r3
+ bne 1b
+ strb r0, [r1, UARTDR_OFST]
+ bx lr
+
+.type uart_recv, %function
+.global uart_recv
+
+uart_recv:
+ ldr r1, =UART0_BASE
+ movs r3, 0b1 << 4 // RX FIFO empty
+1:
+ ldr r2, [r1, UARTFR_OFST]
+ tst r2, r3
+ bne 1b
+ ldrb r0, [r1, UARTDR_OFST]
+ bx lr