diff options
Diffstat (limited to 'sys/arch/amd64/io')
| -rw-r--r-- | sys/arch/amd64/io/uart.S | 31 |
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 : */ |
