summaryrefslogtreecommitdiff
path: root/nuttx/arch/rgmp/src
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-05-12 23:51:04 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-05-12 23:51:04 +0000
commit0a2004fa091fffedf56545b276783d7e00e9827f (patch)
tree4cdf692110e72d81ef22b2a1af582ae99d65a563 /nuttx/arch/rgmp/src
parentd816fccfd855e51d0e60d6e036ebc4779c2304f9 (diff)
downloadpx4-nuttx-0a2004fa091fffedf56545b276783d7e00e9827f.tar.gz
px4-nuttx-0a2004fa091fffedf56545b276783d7e00e9827f.tar.bz2
px4-nuttx-0a2004fa091fffedf56545b276783d7e00e9827f.zip
Fix com.c logic error
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3600 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/arch/rgmp/src')
-rw-r--r--nuttx/arch/rgmp/src/com.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/nuttx/arch/rgmp/src/com.c b/nuttx/arch/rgmp/src/com.c
index 7f3f5028e..e1b8febb2 100644
--- a/nuttx/arch/rgmp/src/com.c
+++ b/nuttx/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);
}
/****************************************************************************