FreeCalypso > hg > freecalypso-sw
diff target-utils/libcommon/serio.S @ 11:40f607bb0a2c
target-utils refactored
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Wed, 01 May 2013 07:39:35 +0000 |
parents | loadagent/serio.S@da98dc08f575 |
children | d7591faa1258 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/target-utils/libcommon/serio.S Wed May 01 07:39:35 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