const struct gic_hw_operations *gic_hw_ops;
+static void __init __maybe_unused build_assertions(void)
+{
+ /* Check our enum gic_sgi only covers SGIs */
+ BUILD_BUG_ON(GIC_SGI_MAX > NR_GIC_SGI);
+}
+
void register_gic_ops(const struct gic_hw_operations *ops)
{
gic_hw_ops = ops;
void send_SGI_mask(const cpumask_t *cpumask, enum gic_sgi sgi)
{
- ASSERT(sgi < 16); /* There are only 16 SGIs */
-
gic_hw_ops->send_SGI(sgi, SGI_TARGET_LIST, cpumask);
}
void send_SGI_self(enum gic_sgi sgi)
{
- ASSERT(sgi < 16); /* There are only 16 SGIs */
-
gic_hw_ops->send_SGI(sgi, SGI_TARGET_SELF, NULL);
}
void send_SGI_allbutself(enum gic_sgi sgi)
{
- ASSERT(sgi < 16); /* There are only 16 SGIs */
-
gic_hw_ops->send_SGI(sgi, SGI_TARGET_OTHERS, NULL);
}
/* SGI (AKA IPIs) */
enum gic_sgi {
- GIC_SGI_EVENT_CHECK = 0,
- GIC_SGI_DUMP_STATE = 1,
- GIC_SGI_CALL_FUNCTION = 2,
+ GIC_SGI_EVENT_CHECK,
+ GIC_SGI_DUMP_STATE,
+ GIC_SGI_CALL_FUNCTION,
+ GIC_SGI_MAX,
};
/* SGI irq mode types */