summaryrefslogtreecommitdiff
path: root/sys/arch/amd64/io
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arch/amd64/io')
-rw-r--r--sys/arch/amd64/io/uart.S31
1 files changed, 31 insertions, 0 deletions
diff --git a/sys/arch/amd64/io/uart.S b/sys/arch/amd64/io/uart.S
index 8e190ed..b67527a 100644
--- a/sys/arch/amd64/io/uart.S
+++ b/sys/arch/amd64/io/uart.S
@@ -95,5 +95,36 @@ uart_write:
.done:
retq
+ .globl uart_puts
+uart_puts:
+ /*
+ * void uart_puts(const char *s);
+ */
+
+ push %r12
+ push %r13
+ push %r14
+ push %r15
+ push %rbx
+ push %rbp
+
+ mov %rsi, %rcx
+ mov %rdi, %rsi
+.putsloop:
+ lodsb
+ or %al, %al
+ jz .putsdone
+ mov $UART_COM1, %dx
+ out %al, %dx
+ jmp .putsloop
+.putsdone:
+
+ pop %rbp
+ pop %rbx
+ pop %r15
+ pop %r14
+ pop %r13
+ pop %r12
+
/* vim: ft=gas :
*/