summaryrefslogtreecommitdiffstats
path: root/c/src/lib
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2017-07-03 11:46:12 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2017-07-06 15:29:16 +0200
commit3dfe55ee154b6053e936e7b458206b71aad51caa (patch)
treeb455d560a13cccc855c3259c67f3fafa20f4fb97 /c/src/lib
parentxz: Suppress attribute warnings (diff)
downloadrtems-3dfe55ee154b6053e936e7b458206b71aad51caa.tar.bz2
score: Use <sys/bitset.h> for Processor_mask
Implement the Processor_mask via <sys/bitset.h>. Provide _Processor_mask_To_uint32_t() to enable its use in device specific routines, e.g. interrupt affinity register in an interrupt controller. Update #3059.
Diffstat (limited to 'c/src/lib')
-rw-r--r--c/src/lib/libbsp/powerpc/qoriq/clock/clock-config.c5
-rw-r--r--c/src/lib/libbsp/powerpc/qoriq/startup/bsprestart.c3
-rw-r--r--c/src/lib/libbsp/shared/clockdrv_shell.h4
-rw-r--r--c/src/lib/libbsp/sparc/shared/drvmgr/ambapp_bus.c2
-rw-r--r--c/src/lib/libbsp/sparc/shared/drvmgr/ambapp_bus_grlib.c4
-rw-r--r--c/src/lib/libbsp/sparc/shared/include/drvmgr/ambapp_bus.h2
6 files changed, 12 insertions, 8 deletions
diff --git a/c/src/lib/libbsp/powerpc/qoriq/clock/clock-config.c b/c/src/lib/libbsp/powerpc/qoriq/clock/clock-config.c
index 17d4bde3cb..42fdfda77c 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/clock/clock-config.c
+++ b/c/src/lib/libbsp/powerpc/qoriq/clock/clock-config.c
@@ -133,7 +133,10 @@ static void qoriq_clock_cleanup(void)
qoriq_clock_handler_install(&old_isr)
#define Clock_driver_support_set_interrupt_affinity(online_processors) \
- qoriq_pic_set_affinities(CLOCK_INTERRUPT, online_processors[0])
+ qoriq_pic_set_affinities( \
+ CLOCK_INTERRUPT, \
+ _Processor_mask_To_uint32_t(online_processors, 0) \
+ )
#define Clock_driver_support_shutdown_hardware() \
qoriq_clock_cleanup()
diff --git a/c/src/lib/libbsp/powerpc/qoriq/startup/bsprestart.c b/c/src/lib/libbsp/powerpc/qoriq/startup/bsprestart.c
index 4159050e5d..c85a6b831d 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/startup/bsprestart.c
+++ b/c/src/lib/libbsp/powerpc/qoriq/startup/bsprestart.c
@@ -99,7 +99,8 @@ static void restart_interrupt(void *arg)
static void raise_restart_interrupt(void)
{
- qoriq.pic.ipidr[RESTART_IPI_INDEX].reg = _SMP_Online_processors[0];
+ qoriq.pic.ipidr[RESTART_IPI_INDEX].reg =
+ _Processor_mask_To_uint32_t(&_SMP_Online_processors, 0);
ppc_synchronize_data();
ppc_synchronize_instructions();
}
diff --git a/c/src/lib/libbsp/shared/clockdrv_shell.h b/c/src/lib/libbsp/shared/clockdrv_shell.h
index 2b90fe6f82..bf741339ae 100644
--- a/c/src/lib/libbsp/shared/clockdrv_shell.h
+++ b/c/src/lib/libbsp/shared/clockdrv_shell.h
@@ -80,7 +80,7 @@ static void Clock_driver_timecounter_tick( void )
if ( _Per_CPU_Is_boot_processor( cpu ) ) {
rtems_timecounter_tick();
- } else if ( _Processor_mask_Is_set( _SMP_Online_processors, cpu_index ) ) {
+ } else if ( _Processor_mask_Is_set( &_SMP_Online_processors, cpu_index ) ) {
_Watchdog_Tick( cpu );
}
}
@@ -227,7 +227,7 @@ rtems_device_driver Clock_initialize(
Clock_driver_support_install_isr( Clock_isr, Old_ticker );
#ifdef RTEMS_SMP
- Clock_driver_support_set_interrupt_affinity( _SMP_Online_processors );
+ Clock_driver_support_set_interrupt_affinity( &_SMP_Online_processors );
#endif
/*
diff --git a/c/src/lib/libbsp/sparc/shared/drvmgr/ambapp_bus.c b/c/src/lib/libbsp/sparc/shared/drvmgr/ambapp_bus.c
index d17affbf81..c2a63a71eb 100644
--- a/c/src/lib/libbsp/sparc/shared/drvmgr/ambapp_bus.c
+++ b/c/src/lib/libbsp/sparc/shared/drvmgr/ambapp_bus.c
@@ -59,7 +59,7 @@ void ambapp_dev_info(struct drvmgr_dev *, void (*print)(void *p, char *str), voi
int ambapp_int_set_affinity(
struct drvmgr_dev *dev,
int index,
- Processor_mask cpus);
+ const Processor_mask *cpus);
#endif
struct drvmgr_bus_ops ambapp_bus_ops =
diff --git a/c/src/lib/libbsp/sparc/shared/drvmgr/ambapp_bus_grlib.c b/c/src/lib/libbsp/sparc/shared/drvmgr/ambapp_bus_grlib.c
index 5305527346..f61d2a8ab0 100644
--- a/c/src/lib/libbsp/sparc/shared/drvmgr/ambapp_bus_grlib.c
+++ b/c/src/lib/libbsp/sparc/shared/drvmgr/ambapp_bus_grlib.c
@@ -50,7 +50,7 @@ int ambapp_grlib_int_unmask(
int ambapp_grlib_int_set_affinity(
struct drvmgr_dev *dev,
int irq,
- Processor_mask cpus);
+ const Processor_mask *cpus);
#endif
int ambapp_grlib_get_params(
struct drvmgr_dev *dev,
@@ -233,7 +233,7 @@ int ambapp_grlib_int_set_affinity
(
struct drvmgr_dev *dev,
int irq,
- Processor_mask cpus
+ const Processor_mask *cpus
)
{
uint32_t cpu_count = rtems_get_processor_count();
diff --git a/c/src/lib/libbsp/sparc/shared/include/drvmgr/ambapp_bus.h b/c/src/lib/libbsp/sparc/shared/include/drvmgr/ambapp_bus.h
index e59af066f6..d034aae3a3 100644
--- a/c/src/lib/libbsp/sparc/shared/include/drvmgr/ambapp_bus.h
+++ b/c/src/lib/libbsp/sparc/shared/include/drvmgr/ambapp_bus.h
@@ -91,7 +91,7 @@ struct ambapp_ops {
int (*int_unmask)(struct drvmgr_dev *dev, int index);
#ifdef RTEMS_SMP
int (*int_set_affinity)(struct drvmgr_dev *dev, int index,
- Processor_mask cpus);
+ const Processor_mask *cpus);
#endif
int (*get_params)
(struct drvmgr_dev *, struct drvmgr_bus_params *);