FreeCalypso > hg > freecalypso-sw
diff loadagent/serio.S @ 1:da98dc08f575
loadagent: beginning to lay the foundation
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Mon, 29 Apr 2013 03:21:00 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/loadagent/serio.S Mon Apr 29 03:21:00 2013 +0000 @@ -0,0 +1,26 @@ +#include "ns16550.h" + +@ this module implements the elementary serial I/O operations + + .text + .code 32 + .global serial_out +serial_out: + ldr r1, =uart_base + ldr r2, [r1] +1: ldrb r3, [r2, #NS16550_LSR] + tst r3, #NS16550_LSR_THRE + beq 1b + strb r0, [r2, #NS16550_THR] + bx lr + + .global serial_in_poll +serial_in_poll: + ldr r1, =uart_base + ldr r2, [r1] + ldrb r3, [r2, #NS16550_LSR] + tst r3, #NS16550_LSR_DR + mvneq r0, #1 + bxeq lr + ldrb r0, [r2, #NS16550_RBR] + bx lr