mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-28 23:33:33 +08:00
Make irqsave/irqrestore (much) cheaper.
This commit is contained in:
@@ -131,6 +131,8 @@ struct xcptcontext
|
|||||||
|
|
||||||
/* Disable IRQs */
|
/* Disable IRQs */
|
||||||
|
|
||||||
|
static inline void irqdisable(void) __attribute__((always_inline, no_instrument_function));
|
||||||
|
|
||||||
static inline void irqdisable(void)
|
static inline void irqdisable(void)
|
||||||
{
|
{
|
||||||
__asm__ __volatile__ ("\tcpsid i\n");
|
__asm__ __volatile__ ("\tcpsid i\n");
|
||||||
@@ -138,6 +140,8 @@ static inline void irqdisable(void)
|
|||||||
|
|
||||||
/* Save the current primask state & disable IRQs */
|
/* 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)
|
static inline irqstate_t irqsave(void)
|
||||||
{
|
{
|
||||||
unsigned short primask;
|
unsigned short primask;
|
||||||
@@ -158,6 +162,8 @@ static inline irqstate_t irqsave(void)
|
|||||||
|
|
||||||
/* Enable IRQs */
|
/* Enable IRQs */
|
||||||
|
|
||||||
|
static inline void irqenable(void) __attribute__((always_inline, no_instrument_function));
|
||||||
|
|
||||||
static inline void irqenable(void)
|
static inline void irqenable(void)
|
||||||
{
|
{
|
||||||
__asm__ __volatile__ ("\tcpsie i\n");
|
__asm__ __volatile__ ("\tcpsie i\n");
|
||||||
@@ -165,6 +171,8 @@ static inline void irqenable(void)
|
|||||||
|
|
||||||
/* Restore saved primask state */
|
/* Restore saved primask state */
|
||||||
|
|
||||||
|
static inline void irqrestore(irqstate_t primask) __attribute__((always_inline, no_instrument_function));
|
||||||
|
|
||||||
static inline void irqrestore(irqstate_t primask)
|
static inline void irqrestore(irqstate_t primask)
|
||||||
{
|
{
|
||||||
/* If bit 0 of the primask is 0, then we need to restore
|
/* If bit 0 of the primask is 0, then we need to restore
|
||||||
|
|||||||
Reference in New Issue
Block a user