From 41310c026ca3869adbbe4962474c596ab92b3e5c Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 18 Jan 2019 13:16:29 +0100 Subject: score: Improve debug support for ISR locks Ensure that interrupts are disabled while acquiring an ISR lock. --- cpukit/include/rtems/rtems/intr.h | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'cpukit/include/rtems/rtems/intr.h') diff --git a/cpukit/include/rtems/rtems/intr.h b/cpukit/include/rtems/rtems/intr.h index 82433826e6..4a9ac9f478 100644 --- a/cpukit/include/rtems/rtems/intr.h +++ b/cpukit/include/rtems/rtems/intr.h @@ -342,8 +342,16 @@ typedef ISR_lock_Context rtems_interrupt_lock_context; * * @see rtems_interrupt_lock_release_isr(). */ -#define rtems_interrupt_lock_acquire_isr( _lock, _lock_context ) \ - _ISR_lock_Acquire( _lock, _lock_context ) +#if defined(RTEMS_SMP) + #define rtems_interrupt_lock_acquire_isr( _lock, _lock_context ) \ + _SMP_lock_Acquire( \ + &( _lock )->Lock, \ + &( _lock_context )->Lock_context \ + ) +#else + #define rtems_interrupt_lock_acquire_isr( _lock, _lock_context ) \ + do { (void) _lock_context; } while ( 0 ) +#endif /** * @brief Releases an interrupt lock in the corresponding interrupt service @@ -358,8 +366,16 @@ typedef ISR_lock_Context rtems_interrupt_lock_context; * * @see rtems_interrupt_lock_acquire_isr(). */ -#define rtems_interrupt_lock_release_isr( _lock, _lock_context ) \ - _ISR_lock_Release( _lock, _lock_context ) +#if defined(RTEMS_SMP) + #define rtems_interrupt_lock_release_isr( _lock, _lock_context ) \ + _SMP_lock_Release( \ + &( _lock )->Lock, \ + &( _lock_context )->Lock_context \ + ) +#else + #define rtems_interrupt_lock_release_isr( _lock, _lock_context ) \ + do { (void) _lock_context; } while ( 0 ) +#endif /** @} */ -- cgit v1.2.3