summaryrefslogtreecommitdiff
path: root/nuttx/arch
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/arch')
-rw-r--r--nuttx/arch/arm/src/arm/up_fullcontextrestore.S9
-rw-r--r--nuttx/arch/arm/src/arm/up_schedulesigaction.c2
-rw-r--r--nuttx/arch/arm/src/arm/up_sigdeliver.c35
-rw-r--r--nuttx/arch/arm/src/cortexm3/up_schedulesigaction.c2
-rw-r--r--nuttx/arch/arm/src/cortexm3/up_sigdeliver.c31
-rw-r--r--nuttx/arch/avr/src/avr32/up_sigdeliver.c17
-rw-r--r--nuttx/arch/sh/src/m16c/m16c_schedulesigaction.c2
-rw-r--r--nuttx/arch/sh/src/m16c/m16c_sigdeliver.c30
-rw-r--r--nuttx/arch/sh/src/sh1/sh1_schedulesigaction.c2
-rw-r--r--nuttx/arch/sh/src/sh1/sh1_sigdeliver.c36
-rw-r--r--nuttx/arch/sim/src/up_schedulesigaction.c4
-rw-r--r--nuttx/arch/z16/src/common/up_schedulesigaction.c2
-rw-r--r--nuttx/arch/z16/src/common/up_sigdeliver.c19
-rw-r--r--nuttx/arch/z80/src/ez80/ez80_schedulesigaction.c2
-rw-r--r--nuttx/arch/z80/src/ez80/ez80_sigdeliver.c21
-rw-r--r--nuttx/arch/z80/src/z8/z8_schedulesigaction.c2
-rw-r--r--nuttx/arch/z80/src/z8/z8_sigdeliver.c29
-rw-r--r--nuttx/arch/z80/src/z80/z80_schedulesigaction.c2
-rw-r--r--nuttx/arch/z80/src/z80/z80_sigdeliver.c29
19 files changed, 130 insertions, 146 deletions
diff --git a/nuttx/arch/arm/src/arm/up_fullcontextrestore.S b/nuttx/arch/arm/src/arm/up_fullcontextrestore.S
index c99337636..d0745ef5b 100644
--- a/nuttx/arch/arm/src/arm/up_fullcontextrestore.S
+++ b/nuttx/arch/arm/src/arm/up_fullcontextrestore.S
@@ -1,7 +1,7 @@
/**************************************************************************
* arch/arm/src/arm/up_fullcontextrestore.S
*
- * Copyright (C) 2007, 2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2007, 2009-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
@@ -95,9 +95,10 @@ up_fullcontextrestore:
/* Now we can restore the CPSR. We wait until we are completely
* finished with the context save data to do this. Restore the CPSR
- * may re-enable and interrupts and we couldt be in a context
- * where save structure is only protected by interrupts being disabled.
- */
+ * may re-enable and interrupts and we could be in a context
+ * where the save structure is only protected by interrupts being
+ * disabled.
+ */
ldr r1, [r0, #(4*REG_CPSR)] /* Fetch the stored CPSR value */
msr cpsr, r1 /* Set the CPSR */
diff --git a/nuttx/arch/arm/src/arm/up_schedulesigaction.c b/nuttx/arch/arm/src/arm/up_schedulesigaction.c
index 631296800..0dfb6e540 100644
--- a/nuttx/arch/arm/src/arm/up_schedulesigaction.c
+++ b/nuttx/arch/arm/src/arm/up_schedulesigaction.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/arm/src/arm/up_schedulesigaction.c
*
- * Copyright (C) 2007-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2007-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
diff --git a/nuttx/arch/arm/src/arm/up_sigdeliver.c b/nuttx/arch/arm/src/arm/up_sigdeliver.c
index a2358a044..f92f85e7e 100644
--- a/nuttx/arch/arm/src/arm/up_sigdeliver.c
+++ b/nuttx/arch/arm/src/arm/up_sigdeliver.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/arm/src/arm/up_sigdeliver.c
*
- * Copyright (C) 2007-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2007-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
@@ -73,10 +73,9 @@
* Name: up_sigdeliver
*
* Description:
- * This is the a signal handling trampoline. When a
- * signal action was posted. The task context was mucked
- * with and forced to branch to this location with interrupts
- * disabled.
+ * This is the a signal handling trampoline. When a signal action was
+ * posted. The task context was mucked with and forced to branch to this
+ * location with interrupts disabled.
*
****************************************************************************/
@@ -86,9 +85,9 @@ void up_sigdeliver(void)
uint32_t regs[XCPTCONTEXT_REGS];
sig_deliver_t sigdeliver;
- /* Save the errno. This must be preserved throughout the
- * signal handling so that the user code final gets
- * the correct errno value (probably EINTR).
+ /* Save the errno. This must be preserved throughout the signal handling
+ * so that the user code final gets the correct errno value (probably
+ * EINTR).
*/
int saved_errno = rtcb->pterrno;
@@ -105,11 +104,9 @@ void up_sigdeliver(void)
regs[REG_PC] = rtcb->xcp.saved_pc;
regs[REG_CPSR] = rtcb->xcp.saved_cpsr;
- /* Get a local copy of the sigdeliver function pointer.
- * we do this so that we can nullify the sigdeliver
- * function point in the TCB and accept more signal
- * deliveries while processing the current pending
- * signals.
+ /* Get a local copy of the sigdeliver function pointer. we do this so that
+ * we can nullify the sigdeliver function pointer in the TCB and accept
+ * more signal deliveries while processing the current pending signals.
*/
sigdeliver = rtcb->xcp.sigdeliver;
@@ -123,18 +120,16 @@ void up_sigdeliver(void)
sigdeliver(rtcb);
- /* Output any debug messaged BEFORE restoreing errno
- * (becuase they may alter errno), then restore the
- * original errno that is needed by the user logic
- * (it is probably EINTR).
+ /* Output any debug messages BEFORE restoring errno (because they may
+ * alter errno), then disable interrupts again and restore the original
+ * errno that is needed by the user logic (it is probably EINTR).
*/
sdbg("Resuming\n");
+ (void)irqsave();
rtcb->pterrno = saved_errno;
- /* Then restore the correct state for this thread of
- * execution.
- */
+ /* Then restore the correct state for this thread of execution. */
up_ledoff(LED_SIGNAL);
up_fullcontextrestore(regs);
diff --git a/nuttx/arch/arm/src/cortexm3/up_schedulesigaction.c b/nuttx/arch/arm/src/cortexm3/up_schedulesigaction.c
index e4f4f51b4..879cd6715 100644
--- a/nuttx/arch/arm/src/cortexm3/up_schedulesigaction.c
+++ b/nuttx/arch/arm/src/cortexm3/up_schedulesigaction.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/arm/src/cortexm3/up_schedulesigaction.c
*
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
diff --git a/nuttx/arch/arm/src/cortexm3/up_sigdeliver.c b/nuttx/arch/arm/src/cortexm3/up_sigdeliver.c
index e350f126a..f05b7ce69 100644
--- a/nuttx/arch/arm/src/cortexm3/up_sigdeliver.c
+++ b/nuttx/arch/arm/src/cortexm3/up_sigdeliver.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/arm/src/cortexm3/up_sigdeliver.c
*
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
@@ -73,10 +73,9 @@
* Name: up_sigdeliver
*
* Description:
- * This is the a signal handling trampoline. When a
- * signal action was posted. The task context was mucked
- * with and forced to branch to this location with interrupts
- * disabled.
+ * This is the a signal handling trampoline. When a signal action was
+ * posted. The task context was mucked with and forced to branch to this
+ * location with interrupts disabled.
*
****************************************************************************/
@@ -86,9 +85,9 @@ void up_sigdeliver(void)
uint32_t regs[XCPTCONTEXT_REGS];
sig_deliver_t sigdeliver;
- /* Save the errno. This must be preserved throughout the
- * signal handling so that the user code final gets
- * the correct errno value (probably EINTR).
+ /* Save the errno. This must be preserved throughout the signal handling
+ * so that the user code final gets the correct errno value (probably
+ * EINTR).
*/
int saved_errno = rtcb->pterrno;
@@ -106,11 +105,9 @@ void up_sigdeliver(void)
regs[REG_PRIMASK] = rtcb->xcp.saved_primask;
regs[REG_XPSR] = rtcb->xcp.saved_xpsr;
- /* Get a local copy of the sigdeliver function pointer.
- * we do this so that we can nullify the sigdeliver
- * function point in the TCB and accept more signal
- * deliveries while processing the current pending
- * signals.
+ /* Get a local copy of the sigdeliver function pointer. We do this so that
+ * we can nullify the sigdeliver function pointer in the TCB and accept
+ * more signal deliveries while processing the current pending signals.
*/
sigdeliver = rtcb->xcp.sigdeliver;
@@ -124,13 +121,13 @@ void up_sigdeliver(void)
sigdeliver(rtcb);
- /* Output any debug messaged BEFORE restoreing errno
- * (becuase they may alter errno), then restore the
- * original errno that is needed by the user logic
- * (it is probably EINTR).
+ /* Output any debug messages BEFORE restoring errno (because they may
+ * alter errno), then disable interrupts again and restore the original
+ * errno that is needed by the user logic (it is probably EINTR).
*/
sdbg("Resuming\n");
+ (void)irqsave();
rtcb->pterrno = saved_errno;
/* Then restore the correct state for this thread of
diff --git a/nuttx/arch/avr/src/avr32/up_sigdeliver.c b/nuttx/arch/avr/src/avr32/up_sigdeliver.c
index 599b6f0d0..aa3940b79 100644
--- a/nuttx/arch/avr/src/avr32/up_sigdeliver.c
+++ b/nuttx/arch/avr/src/avr32/up_sigdeliver.c
@@ -103,9 +103,9 @@ void up_sigdeliver(void)
regs[REG_PC] = rtcb->xcp.saved_pc;
regs[REG_SR] = rtcb->xcp.saved_sr;
- /* Get a local copy of the sigdeliver function pointer. We do this so tha
- * we can nullify the sigdeliver function point in the TCB and accept more
- * signal deliveries while processing the current pending signals.
+ /* Get a local copy of the sigdeliver function pointer. We do this so that
+ * we can nullify the sigdeliver function pointer in the TCB and accept
+ * more signal deliveries while processing the current pending signals.
*/
sigdeliver = rtcb->xcp.sigdeliver;
@@ -119,17 +119,16 @@ void up_sigdeliver(void)
sigdeliver(rtcb);
- /* Output any debug messaged BEFORE restoring errno (becuase they may
- * alter errno), then restore the original errno that is needed by
- * the user logic (it is probably EINTR).
+ /* Output any debug messages BEFORE restoring errno (because they may
+ * alter errno), then disable interrupts again and restore the original
+ * errno that is needed by the user logic (it is probably EINTR).
*/
sdbg("Resuming\n");
+ (void)irqsave();
rtcb->pterrno = saved_errno;
- /* Then restore the correct state for this thread of
- * execution.
- */
+ /* Then restore the correct state for this thread of execution. */
up_ledoff(LED_SIGNAL);
up_fullcontextrestore(regs);
diff --git a/nuttx/arch/sh/src/m16c/m16c_schedulesigaction.c b/nuttx/arch/sh/src/m16c/m16c_schedulesigaction.c
index ae53e4ff5..d921fca01 100644
--- a/nuttx/arch/sh/src/m16c/m16c_schedulesigaction.c
+++ b/nuttx/arch/sh/src/m16c/m16c_schedulesigaction.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/sh/src/m16c/m16c_schedulesigaction.c
*
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
diff --git a/nuttx/arch/sh/src/m16c/m16c_sigdeliver.c b/nuttx/arch/sh/src/m16c/m16c_sigdeliver.c
index 4493c28b4..848249721 100644
--- a/nuttx/arch/sh/src/m16c/m16c_sigdeliver.c
+++ b/nuttx/arch/sh/src/m16c/m16c_sigdeliver.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/sh/src/m16c/m16c_sigdeliver.c
*
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
@@ -72,10 +72,9 @@
* Name: up_sigdeliver
*
* Description:
- * This is the a signal handling trampoline. When a
- * signal action was posted. The task context was mucked
- * with and forced to branch to this location with interrupts
- * disabled.
+ * This is the a signal handling trampoline. When a signal action was
+ * posted. The task context was mucked with and forced to branch to this
+ * location with interrupts disabled.
*
****************************************************************************/
@@ -86,9 +85,9 @@ void up_sigdeliver(void)
uint8_t regs[XCPTCONTEXT_SIZE];
sig_deliver_t sigdeliver;
- /* Save the errno. This must be preserved throughout the
- * signal handling so that the user code final gets
- * the correct errno value (probably EINTR).
+ /* Save the errno. This must be preserved throughout the signal handling
+ * so that the user code final gets the correct errno value (probably
+ * EINTR).
*/
int saved_errno = rtcb->pterrno;
@@ -106,10 +105,9 @@ void up_sigdeliver(void)
regs[REG_PC+1] = rtcb->xcp.saved_pc[1];
regs[REG_FLG] = rtcb->xcp.saved_flg;
- /* Get a local copy of the sigdeliver function pointer.
- * we do this so that we can nullify the sigdeliver
- * function point in the TCB and accept more signal
- * deliveries while processing the current pending
+ /* Get a local copy of the sigdeliver function pointer. We do this so
+ * that we can nullify the sigdeliver function pointer in the TCB and
+ * accept more signal deliveries while processing the current pending
* signals.
*/
@@ -124,13 +122,13 @@ void up_sigdeliver(void)
sigdeliver(rtcb);
- /* Output any debug messaged BEFORE restoreing errno
- * (becuase they may alter errno), then restore the
- * original errno that is needed by the user logic
- * (it is probably EINTR).
+ /* Output any debug messages BEFORE restoring errno (because they may
+ * alter errno), then disable interrupts again and restore the original
+ * errno that is needed by the user logic (it is probably EINTR).
*/
sdbg("Resuming\n");
+ (void)irqsave();
rtcb->pterrno = saved_errno;
/* Then restore the correct state for this thread of
diff --git a/nuttx/arch/sh/src/sh1/sh1_schedulesigaction.c b/nuttx/arch/sh/src/sh1/sh1_schedulesigaction.c
index 6e7ba34e8..4454195d6 100644
--- a/nuttx/arch/sh/src/sh1/sh1_schedulesigaction.c
+++ b/nuttx/arch/sh/src/sh1/sh1_schedulesigaction.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/sh/src/sh1/sh1_schedulesigaction.c
*
- * Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
diff --git a/nuttx/arch/sh/src/sh1/sh1_sigdeliver.c b/nuttx/arch/sh/src/sh1/sh1_sigdeliver.c
index cddec6041..568b448e3 100644
--- a/nuttx/arch/sh/src/sh1/sh1_sigdeliver.c
+++ b/nuttx/arch/sh/src/sh1/sh1_sigdeliver.c
@@ -1,7 +1,7 @@
/****************************************************************************
* common/up_sigdeliver.c
*
- * Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
@@ -72,10 +72,9 @@
* Name: up_sigdeliver
*
* Description:
- * This is the a signal handling trampoline. When a
- * signal action was posted. The task context was mucked
- * with and forced to branch to this location with interrupts
- * disabled.
+ * This is the a signal handling trampoline. When a signal action was
+ * posted. The task context was mucked with and forced to branch to this
+ * location with interrupts disabled.
*
****************************************************************************/
@@ -86,9 +85,9 @@ void up_sigdeliver(void)
uint32_t regs[XCPTCONTEXT_REGS];
sig_deliver_t sigdeliver;
- /* Save the errno. This must be preserved throughout the
- * signal handling so that the user code final gets
- * the correct errno value (probably EINTR).
+ /* Save the errno. This must be preserved throughout the signal handling
+ * so that the user code final gets the correct errno value (probably
+ * EINTR).
*/
int saved_errno = rtcb->pterrno;
@@ -105,17 +104,16 @@ void up_sigdeliver(void)
regs[REG_PC] = rtcb->xcp.saved_pc;
regs[REG_SR] = rtcb->xcp.saved_sr;
- /* Get a local copy of the sigdeliver function pointer.
- * we do this so that we can nullify the sigdeliver
- * function point in the TCB and accept more signal
- * deliveries while processing the current pending
+ /* Get a local copy of the sigdeliver function pointer. We do this so
+ * that we can nullify the sigdeliver function pointer in the TCB and
+ * accept more signal deliveries while processing the current pending
* signals.
*/
sigdeliver = rtcb->xcp.sigdeliver;
rtcb->xcp.sigdeliver = NULL;
- /* Then restore the task interrupt statat. */
+ /* Then restore the task interrupt state. */
irqrestore(regs[REG_SR] & 0x000000f0);
@@ -123,18 +121,16 @@ void up_sigdeliver(void)
sigdeliver(rtcb);
- /* Output any debug messaged BEFORE restoreing errno
- * (becuase they may alter errno), then restore the
- * original errno that is needed by the user logic
- * (it is probably EINTR).
+ /* Output any debug messages BEFORE restoring errno (because they may
+ * alter errno), then disable interrupts again and restore the original
+ * errno that is needed by the user logic (it is probably EINTR).
*/
sdbg("Resuming\n");
+ (void)irqsave();
rtcb->pterrno = saved_errno;
- /* Then restore the correct state for this thread of
- * execution.
- */
+ /* Then restore the correct state for this thread of execution. */
up_ledoff(LED_SIGNAL);
up_fullcontextrestore(regs);
diff --git a/nuttx/arch/sim/src/up_schedulesigaction.c b/nuttx/arch/sim/src/up_schedulesigaction.c
index b22aa5252..ca61e8ddf 100644
--- a/nuttx/arch/sim/src/up_schedulesigaction.c
+++ b/nuttx/arch/sim/src/up_schedulesigaction.c
@@ -1,7 +1,7 @@
/****************************************************************************
* up_schedulesigaction.c
*
- * Copyright (C) 2007-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2007-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
@@ -98,7 +98,7 @@
void up_schedule_sigaction(_TCB *tcb, sig_deliver_t sigdeliver)
{
- /* We don't have to anything complex of the simulated target */
+ /* We don't have to anything complex for the simulated target */
if (tcb == (_TCB*)g_readytorun.head)
{
diff --git a/nuttx/arch/z16/src/common/up_schedulesigaction.c b/nuttx/arch/z16/src/common/up_schedulesigaction.c
index e76a8c4ff..368b2ed54 100644
--- a/nuttx/arch/z16/src/common/up_schedulesigaction.c
+++ b/nuttx/arch/z16/src/common/up_schedulesigaction.c
@@ -1,7 +1,7 @@
/****************************************************************************
* common/up_schedulesigaction.c
*
- * Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
diff --git a/nuttx/arch/z16/src/common/up_sigdeliver.c b/nuttx/arch/z16/src/common/up_sigdeliver.c
index 85f3e972d..4ca05d17b 100644
--- a/nuttx/arch/z16/src/common/up_sigdeliver.c
+++ b/nuttx/arch/z16/src/common/up_sigdeliver.c
@@ -1,7 +1,7 @@
/****************************************************************************
* common/up_sigdeliver.c
*
- * Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
@@ -95,8 +95,8 @@ void up_sigdeliver(void)
up_ledon(LED_SIGNAL);
- dbg("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
- rtcb, rtcb->xcp.sigdeliver, rtcb->sigpendactionq.head);
+ sdbg("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
+ rtcb, rtcb->xcp.sigdeliver, rtcb->sigpendactionq.head);
ASSERT(rtcb->xcp.sigdeliver != NULL);
/* Save the real return state on the stack. */
@@ -125,17 +125,16 @@ void up_sigdeliver(void)
sigdeliver(rtcb);
- /* Output any debug messaged BEFORE restoring errno (because they may
- * alter errno), then restore the original errno that is needed by
- * the user logic (it is probably EINTR).
+ /* Output any debug messages BEFORE restoring errno (because they may
+ * alter errno), then disable interrupts again and restore the original
+ * errno that is needed by the user logic (it is probably EINTR).
*/
- dbg("Resuming\n");
+ sdbg("Resuming\n");
+ (void)irqsave();
rtcb->pterrno = saved_errno;
- /* Then restore the correct state for this thread of
- * execution.
- */
+ /* Then restore the correct state for this thread of execution. */
up_ledoff(LED_SIGNAL);
SIGNAL_RETURN(regs);
diff --git a/nuttx/arch/z80/src/ez80/ez80_schedulesigaction.c b/nuttx/arch/z80/src/ez80/ez80_schedulesigaction.c
index 8c9a84260..ce48fe987 100644
--- a/nuttx/arch/z80/src/ez80/ez80_schedulesigaction.c
+++ b/nuttx/arch/z80/src/ez80/ez80_schedulesigaction.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/z80/src/ez80/ez80_schedulesigaction.c
*
- * Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
diff --git a/nuttx/arch/z80/src/ez80/ez80_sigdeliver.c b/nuttx/arch/z80/src/ez80/ez80_sigdeliver.c
index 90fdf4c6b..86aaad2d5 100644
--- a/nuttx/arch/z80/src/ez80/ez80_sigdeliver.c
+++ b/nuttx/arch/z80/src/ez80/ez80_sigdeliver.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/z80/src/ez80/ez80_sigdeliver.c
*
- * Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
@@ -72,10 +72,9 @@
* Name: up_sigdeliver
*
* Description:
- * This is the a signal handling trampoline. When a
- * signal action was posted. The task context was mucked
- * with and forced to branch to this location with interrupts
- * disabled.
+ * This is the a signal handling trampoline. When a signal action was
+ * posted. The task context was mucked with and forced to branch to this
+ * location with interrupts disabled.
*
****************************************************************************/
@@ -106,8 +105,9 @@ void up_sigdeliver(void)
regs[XCPT_I] = rtcb->xcp.saved_i;
/* Get a local copy of the sigdeliver function pointer. We do this so
- * that we can nullify the sigdeliver function point in the TCB and accept
- * more signal deliveries while processing the current pending signals.
+ * that we can nullify the sigdeliver function pointer in the TCB and
+ * accept more signal deliveries while processing the current pending
+ * signals.
*/
sigdeliver = rtcb->xcp.sigdeliver;
@@ -121,12 +121,13 @@ void up_sigdeliver(void)
sigdeliver(rtcb);
- /* Output any debug messaged BEFORE restoring errno (because they may alter
- * errno), then restore the original errno that is needed by the user logic
- * (it is probably EINTR).
+ /* Output any debug messages BEFORE restoring errno (because they may
+ * alter errno), then disable interrupts again and restore the original
+ * errno that is needed by the user logic (it is probably EINTR).
*/
sdbg("Resuming\n");
+ (void)irqsave();
rtcb->pterrno = saved_errno;
/* Then restore the correct state for this thread of
diff --git a/nuttx/arch/z80/src/z8/z8_schedulesigaction.c b/nuttx/arch/z80/src/z8/z8_schedulesigaction.c
index 0a5b9c095..1f1a35471 100644
--- a/nuttx/arch/z80/src/z8/z8_schedulesigaction.c
+++ b/nuttx/arch/z80/src/z8/z8_schedulesigaction.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/z80/src/z8/z8_schedulesigaction.c
*
- * Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
diff --git a/nuttx/arch/z80/src/z8/z8_sigdeliver.c b/nuttx/arch/z80/src/z8/z8_sigdeliver.c
index badb8a328..c5cf30aa6 100644
--- a/nuttx/arch/z80/src/z8/z8_sigdeliver.c
+++ b/nuttx/arch/z80/src/z8/z8_sigdeliver.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/z80/src/z8/z8_sigdeliver.c
*
- * Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
@@ -86,10 +86,9 @@ static void z8_copystate(FAR chipreg_t *dest, FAR const chipreg_t *src)
* Name: up_sigdeliver
*
* Description:
- * This is the a signal handling trampoline. When a
- * signal action was posted. The task context was mucked
- * with and forced to branch to this location with interrupts
- * disabled.
+ * This is the a signal handling trampoline. When a signal action was
+ * posted. The task context was mucked with and forced to branch to this
+ * location with interrupts disabled.
*
****************************************************************************/
@@ -109,7 +108,7 @@ void up_sigdeliver(void)
up_ledon(LED_SIGNAL);
- dbg("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
+ sdbg("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
rtcb, rtcb->xcp.sigdeliver, rtcb->sigpendactionq.head);
ASSERT(rtcb->xcp.sigdeliver != NULL);
@@ -120,8 +119,9 @@ void up_sigdeliver(void)
regs[XCPT_IRQCTL] = rtcb->xcp.saved_irqctl;
/* Get a local copy of the sigdeliver function pointer. We do this so
- * that we can nullify the sigdeliver function point in the TCB and accept
- * more signal deliveries while processing the current pending signals.
+ * that we can nullify the sigdeliver function pointer in the TCB and
+ * accept more signal deliveries while processing the current pending
+ * signals.
*/
sigdeliver = rtcb->xcp.sigdeliver;
@@ -135,17 +135,16 @@ void up_sigdeliver(void)
sigdeliver(rtcb);
- /* Output any debug messaged BEFORE restoring errno (because they may alter
- * errno), then restore the original errno that is needed by the user logic
- * (it is probably EINTR).
+ /* Output any debug messages BEFORE restoring errno (because they may
+ * alter errno), then disable interrupts again and restore the original
+ * errno that is needed by the user logic (it is probably EINTR).
*/
- dbg("Resuming\n");
+ sdbg("Resuming\n");
+ (void)irqsave();
rtcb->pterrno = saved_errno;
- /* Then restore the correct state for this thread of
- * execution.
- */
+ /* Then restore the correct state for this thread of execution. */
up_ledoff(LED_SIGNAL);
z8_restorecontext(regs);
diff --git a/nuttx/arch/z80/src/z80/z80_schedulesigaction.c b/nuttx/arch/z80/src/z80/z80_schedulesigaction.c
index 19ea6d6bc..24b12731c 100644
--- a/nuttx/arch/z80/src/z80/z80_schedulesigaction.c
+++ b/nuttx/arch/z80/src/z80/z80_schedulesigaction.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/z80/src/z80/z80_schedulesigaction.c
*
- * Copyright (C) 2007-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2007-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
diff --git a/nuttx/arch/z80/src/z80/z80_sigdeliver.c b/nuttx/arch/z80/src/z80/z80_sigdeliver.c
index 884a5c4b6..c6aa5ff3c 100644
--- a/nuttx/arch/z80/src/z80/z80_sigdeliver.c
+++ b/nuttx/arch/z80/src/z80/z80_sigdeliver.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/z80/src/z80/z80_sigdeliver.c
*
- * Copyright (C) 2007-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2007-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
@@ -71,10 +71,9 @@
* Name: up_sigdeliver
*
* Description:
- * This is the a signal handling trampoline. When a
- * signal action was posted. The task context was mucked
- * with and forced to branch to this location with interrupts
- * disabled.
+ * This is the a signal handling trampoline. When a signal action was
+ * posted. The task context was mucked with and forced to branch to this
+ * location with interrupts disabled.
*
****************************************************************************/
@@ -94,7 +93,7 @@ void up_sigdeliver(void)
up_ledon(LED_SIGNAL);
- dbg("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
+ sdbg("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
rtcb, rtcb->xcp.sigdeliver, rtcb->sigpendactionq.head);
ASSERT(rtcb->xcp.sigdeliver != NULL);
@@ -105,8 +104,9 @@ void up_sigdeliver(void)
regs[XCPT_I] = rtcb->xcp.saved_i;
/* Get a local copy of the sigdeliver function pointer. We do this so
- * that we can nullify the sigdeliver function point in the TCB and accept
- * more signal deliveries while processing the current pending signals.
+ * that we can nullify the sigdeliver function pointer in the TCB and
+ * accept more signal deliveries while processing the current pending
+ * signals.
*/
sigdeliver = rtcb->xcp.sigdeliver;
@@ -120,17 +120,16 @@ void up_sigdeliver(void)
sigdeliver(rtcb);
- /* Output any debug messaged BEFORE restoring errno (because they may alter
- * errno), then restore the original errno that is needed by the user logic
- * (it is probably EINTR).
+ /* Output any debug messages BEFORE restoring errno (because they may
+ * alter errno), then disable interrupts again and restore the original
+ * errno that is needed by the user logic (it is probably EINTR).
*/
- dbg("Resuming\n");
+ sdbg("Resuming\n");
+ (void)irqsave();
rtcb->pterrno = saved_errno;
- /* Then restore the correct state for this thread of
- * execution.
- */
+ /* Then restore the correct state for this thread of execution. */
up_ledoff(LED_SIGNAL);
z80_restoreusercontext(regs);