summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/sparc/leon3/include/leon.h
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-02-18 08:36:16 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-03-04 13:36:10 +0100
commit90d8567d34a6d80da04b1cb37b667a3173f584c4 (patch)
tree221e66b9da1dd9dd79d01e507f0026bfb477b810 /c/src/lib/libbsp/sparc/leon3/include/leon.h
parentscore: Add _SMP_Before_multitasking_action() (diff)
downloadrtems-90d8567d34a6d80da04b1cb37b667a3173f584c4.tar.bz2
score: Distribute clock tick to all online CPUs
Update #2554.
Diffstat (limited to 'c/src/lib/libbsp/sparc/leon3/include/leon.h')
-rw-r--r--c/src/lib/libbsp/sparc/leon3/include/leon.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/sparc/leon3/include/leon.h b/c/src/lib/libbsp/sparc/leon3/include/leon.h
index 5ac1d71872..bbf94d90b3 100644
--- a/c/src/lib/libbsp/sparc/leon3/include/leon.h
+++ b/c/src/lib/libbsp/sparc/leon3/include/leon.h
@@ -194,6 +194,24 @@ extern rtems_interrupt_lock LEON3_IrqCtrl_Lock;
LEON3_IrqCtrl_Regs->iforce = (1 << (_source)); \
} while (0)
+#define LEON_Enable_interrupt_broadcast( _source ) \
+ do { \
+ rtems_interrupt_lock_context _lock_context; \
+ uint32_t _mask = 1U << ( _source ); \
+ LEON3_IRQCTRL_ACQUIRE( &_lock_context ); \
+ LEON3_IrqCtrl_Regs->bcast |= _mask; \
+ LEON3_IRQCTRL_RELEASE( &_lock_context ); \
+ } while (0)
+
+#define LEON_Disable_interrupt_broadcast( _source ) \
+ do { \
+ rtems_interrupt_lock_context _lock_context; \
+ uint32_t _mask = 1U << ( _source ); \
+ LEON3_IRQCTRL_ACQUIRE( &_lock_context ); \
+ LEON3_IrqCtrl_Regs->bcast &= ~_mask; \
+ LEON3_IRQCTRL_RELEASE( &_lock_context ); \
+ } while (0)
+
#define LEON_Is_interrupt_pending( _source ) \
(LEON3_IrqCtrl_Regs->ipend & (1 << (_source)))