summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/shared/arm-gic-irq.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2017-07-11 11:54:30 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2017-07-12 08:00:13 +0200
commitaf207fa9f6ac891b9a61f36bd8382eb89358aeca (patch)
tree0f6604b9702087b467c48bd747b63f865b43c697 /c/src/lib/libbsp/arm/shared/arm-gic-irq.c
parentAdd interrupt server move (diff)
downloadrtems-af207fa9f6ac891b9a61f36bd8382eb89358aeca.tar.bz2
Add interrupt vector set/get affinity
Close #3071.
Diffstat (limited to 'c/src/lib/libbsp/arm/shared/arm-gic-irq.c')
-rw-r--r--c/src/lib/libbsp/arm/shared/arm-gic-irq.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/c/src/lib/libbsp/arm/shared/arm-gic-irq.c b/c/src/lib/libbsp/arm/shared/arm-gic-irq.c
index 5a4a998bfb..7d36ce0930 100644
--- a/c/src/lib/libbsp/arm/shared/arm-gic-irq.c
+++ b/c/src/lib/libbsp/arm/shared/arm-gic-irq.c
@@ -153,20 +153,24 @@ rtems_status_code arm_gic_irq_get_priority(
return sc;
}
-rtems_status_code arm_gic_irq_set_affinity(
+void bsp_interrupt_set_affinity(
rtems_vector_number vector,
- uint8_t targets
+ const Processor_mask *affinity
)
{
- rtems_status_code sc = RTEMS_SUCCESSFUL;
+ volatile gic_dist *dist = ARM_GIC_DIST;
+ uint8_t targets = (uint8_t) _Processor_mask_To_uint32_t(affinity, 0);
- if (bsp_interrupt_is_valid_vector(vector)) {
- volatile gic_dist *dist = ARM_GIC_DIST;
+ gic_id_set_targets(dist, vector, targets);
+}
- gic_id_set_targets(dist, vector, targets);
- } else {
- sc = RTEMS_INVALID_ID;
- }
+void bsp_interrupt_get_affinity(
+ rtems_vector_number vector,
+ Processor_mask *affinity
+)
+{
+ volatile gic_dist *dist = ARM_GIC_DIST;
+ uint8_t targets = gic_id_get_targets(dist, vector);
- return sc;
+ _Processor_mask_From_uint32_t(affinity, targets, 0);
}