aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpx4dev <px4@purgatory.org>2012-09-15 17:21:26 -0700
committerpx4dev <px4@purgatory.org>2012-09-15 17:21:26 -0700
commit9d0992d2a738016d38657ce4b5c463acba2fccf6 (patch)
tree019346df0ee92743c5da6fe6cf697ffdddcf8f60
parent273b6cf08593b23b101f0a98213a07de6c0a4ff7 (diff)
downloadpx4-firmware-9d0992d2a738016d38657ce4b5c463acba2fccf6.tar.gz
px4-firmware-9d0992d2a738016d38657ce4b5c463acba2fccf6.tar.bz2
px4-firmware-9d0992d2a738016d38657ce4b5c463acba2fccf6.zip
Make irqsave/irqrestore (much) cheaper.
-rw-r--r--nuttx/arch/arm/include/armv7-m/irq.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/nuttx/arch/arm/include/armv7-m/irq.h b/nuttx/arch/arm/include/armv7-m/irq.h
index 6cef85c02..e74e06be6 100644
--- a/nuttx/arch/arm/include/armv7-m/irq.h
+++ b/nuttx/arch/arm/include/armv7-m/irq.h
@@ -131,6 +131,8 @@ struct xcptcontext
/* Disable IRQs */
+static inline void irqdisable(void) __attribute__((always_inline, no_instrument_function));
+
static inline void irqdisable(void)
{
__asm__ __volatile__ ("\tcpsid i\n");
@@ -138,6 +140,8 @@ static inline void irqdisable(void)
/* Save the current primask state & disable IRQs */
+static inline irqstate_t irqsave(void) __attribute__((always_inline, no_instrument_function));
+
static inline irqstate_t irqsave(void)
{
unsigned short primask;
@@ -158,6 +162,8 @@ static inline irqstate_t irqsave(void)
/* Enable IRQs */
+static inline void irqenable(void) __attribute__((always_inline, no_instrument_function));
+
static inline void irqenable(void)
{
__asm__ __volatile__ ("\tcpsie i\n");
@@ -165,6 +171,8 @@ static inline void irqenable(void)
/* Restore saved primask state */
+static inline void irqrestore(irqstate_t primask) __attribute__((always_inline, no_instrument_function));
+
static inline void irqrestore(irqstate_t primask)
{
/* If bit 0 of the primask is 0, then we need to restore