From 3e1e4f68763419fa38630c8fa6f7220811bab062 Mon Sep 17 00:00:00 2001 From: patacongo Date: Thu, 12 May 2011 23:51:04 +0000 Subject: [PATCH] Fix com.c logic error git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3600 42af7a65-404d-4744-a932-0658087f49c3 --- arch/rgmp/src/com.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/arch/rgmp/src/com.c b/arch/rgmp/src/com.c index 7f3f5028e5a..e1b8febb2a9 100644 --- a/arch/rgmp/src/com.c +++ b/arch/rgmp/src/com.c @@ -485,11 +485,14 @@ static void up_txint(struct uart_dev_s *dev, bool enable) { struct up_dev_s *priv = (struct up_dev_s*)dev->priv; uint16_t base = priv->base; + irqstate_t flags; uint8_t ier; + flags = irqsave(); ier = inb(base+COM_IER); if (enable) { ier |= COM_IER_TEI; + outb(base+COM_IER, ier); /* Fake a TX interrupt here by just calling uart_xmitchars() with * interrupts disabled (note this may recurse). @@ -499,8 +502,9 @@ static void up_txint(struct uart_dev_s *dev, bool enable) } else { ier &= ~COM_IER_TEI; + outb(base+COM_IER, ier); } - outb(base+COM_IER, ier); + irqrestore(flags); } /****************************************************************************