# HG changeset patch # User Mychaela Falconia # 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;