view target-utils/libbase/serio.S @ 619:f82551c77e58

libserial-newlnx: ASYNC_LOW_LATENCY patch reverted Reports from Das Signal indicate that loadtools performance on Debian is about the same as on Slackware, and that including or omitting the ASYNC_LOW_LATENCY patch from Serg makes no difference. Because the patch in question does not appear to be necessary, it is being reverted until and unless someone other than Serg reports an actual real-world system on which loadtools operation times are slowed compared to the Mother's Slackware reference and on which Slackware-like performance can be restored by setting the ASYNC_LOW_LATENCY flag.
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 27 Feb 2020 01:09:48 +0000
parents da6df2c626cf
children
line wrap: on
line source

#include "ns16550.h"

@ this module implements the elementary serial I/O operations

	.comm	uart_base,4,4

	.text
	.code	32
	.global	serial_out
serial_out:
	ldr	r1, =uart_base
	ldr	r2, [r1]
1:	ldrb	r3, [r2, #0x11]		@ Calypso UART non-std register SSR
	tst	r3, #0x01		@ Tx FIFO full flag
	bne	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
	ldrneb	r0, [r2, #NS16550_RBR]
	mvneq	r0, #0
	bx	lr

	.global	serial_flush
serial_flush:
	ldr	r1, =uart_base
	ldr	r2, [r1]
1:	ldrb	r3, [r2, #NS16550_LSR]
	tst	r3, #NS16550_LSR_TEMP
	beq	1b
	bx	lr