Browse Source

Make irqsave/irqrestore (much) cheaper.

sbg
px4dev 13 years ago
parent
commit
9d0992d2a7
  1. 8
      nuttx/arch/arm/include/armv7-m/irq.h

8
nuttx/arch/arm/include/armv7-m/irq.h

@ -131,6 +131,8 @@ struct xcptcontext @@ -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) @@ -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) @@ -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) @@ -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

Loading…
Cancel
Save