diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-11-10 15:17:28 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-11-18 07:30:35 +0100 |
commit | 408609f6b9cd8e03d3886b7c150efbf7e59b5fb0 (patch) | |
tree | 0c4ec2f82334c0efb93f1222e4ee80a6ada166ce /cpukit/score/cpu/arm/rtems | |
parent | score: Restrict task interrupt level to 0 on SMP (diff) | |
download | rtems-408609f6b9cd8e03d3886b7c150efbf7e59b5fb0.tar.bz2 |
score: Add _ISR_Is_enabled()
In contrast to _ISR_Get_level() the _ISR_Is_enabled() function evaluates
a level parameter and returns a boolean value.
Update #2811.
Diffstat (limited to 'cpukit/score/cpu/arm/rtems')
-rw-r--r-- | cpukit/score/cpu/arm/rtems/score/cpu.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/cpukit/score/cpu/arm/rtems/score/cpu.h b/cpukit/score/cpu/arm/rtems/score/cpu.h index b1fabafb59..6a57ac85e5 100644 --- a/cpukit/score/cpu/arm/rtems/score/cpu.h +++ b/cpukit/score/cpu/arm/rtems/score/cpu.h @@ -350,8 +350,6 @@ static inline uint32_t arm_interrupt_disable( void ) : [level] "=&r" (level) : [basepri] "r" (basepri) ); -#else - level = 0; #endif return level; @@ -416,6 +414,15 @@ static inline void arm_interrupt_flash( uint32_t level ) #define _CPU_ISR_Flash( _isr_cookie ) \ arm_interrupt_flash( _isr_cookie ) +RTEMS_INLINE_ROUTINE bool _CPU_ISR_Is_enabled( uint32_t level ) +{ +#if defined(ARM_MULTILIB_ARCH_V4) + return ( level & 0x80 ) == 0; +#elif defined(ARM_MULTILIB_ARCH_V7M) + return level > 0x80; +#endif +} + void _CPU_ISR_Set_level( uint32_t level ); uint32_t _CPU_ISR_Get_level( void ); |