# HG changeset patch
# User Mychaela Falconia <falcon@freecalypso.org>
# Date 1615671574 0
# Node ID badc5399d64114c5d88f5f00536f8964f655e798
# Parent  289733ff272b29b041e6b0f0a3322dfc7f744aea
simagent: flush_rx_fifo() factored out

diff -r 289733ff272b -r badc5399d641 target-utils/simagent/byterx.c
--- a/target-utils/simagent/byterx.c	Sat Mar 13 21:32:22 2021 +0000
+++ b/target-utils/simagent/byterx.c	Sat Mar 13 21:39:34 2021 +0000
@@ -12,6 +12,22 @@
 	return(-1);
 }
 
+flush_rx_fifo()
+{
+	unsigned count;
+
+	for (count = 0; ; ) {
+		if (SIMREGS.stat & SIM_STAT_FEMPTY)
+			break;
+		(void) SIMREGS.drx;
+		if (++count >= 32) {
+			printf("ERROR: Rx FIFO flush does not end\n");
+			return(-1);
+		}
+	}
+	return(0);
+}
+
 void
 cmd_sertimeout(argbulk)
 	char *argbulk;
diff -r 289733ff272b -r badc5399d641 target-utils/simagent/simup.c
--- a/target-utils/simagent/simup.c	Sat Mar 13 21:32:22 2021 +0000
+++ b/target-utils/simagent/simup.c	Sat Mar 13 21:39:34 2021 +0000
@@ -117,15 +117,9 @@
 	wait_ARM_cycles(WAIT_ONE_TDMA * 3);
 
 	/* flush any garbage in the Rx FIFO */
-	for (count = 0; ; ) {
-		if (SIMREGS.stat & SIM_STAT_FEMPTY)
-			break;
-		(void) SIMREGS.drx;
-		if (++count >= 32) {
-			printf("ERROR: Rx FIFO flush does not end\n");
-			return;
-		}
-	}
+	rc = flush_rx_fifo();
+	if (rc < 0)
+		return;
 	/* lift the card out of reset! */
 	SIMREGS.conf1 = conf1_reg |= SIM_CONF1_SRSTLEV;