async event void Interrupts.tx()
{
+ /* FIXME: this can cause an arbitrarily long ISR, if m_slen is large.
+ * But depending on timing, we may always only write 1 byte.
+ */
while (m_slen && call Registers.getIfgTx()) {
call Registers.setTxbuf(*m_sbuf);
if (--m_slen)
{
if (m_robuf) {
/* receive() takes precedence if active */
+ /* FIXME: an arbitrarily long ISR may occur if m_rlen is large.
+ * But depending on timing, we may always only read 1 byte.
+ */
while (m_rlen && call Registers.getIfgRx()) {
*m_rbuf = byte;
if (--m_rlen)