feat(interrupts): new interrupt controller ABIs
This patch introduces additional platform interrupt controller ABIs
and implements these ABIs for a dummy platform interrupt controller
and a fake platform.
Change-Id: I08c140f43edc7a72958fc3638b33b4365a88b40a
Signed-off-by: Madhukar Pappireddy <madhukar.pappireddy@arm.com>
diff --git a/src/arch/aarch64/plat/interrupts/absent.c b/src/arch/aarch64/plat/interrupts/absent.c
index 241dc7a..a803e09 100644
--- a/src/arch/aarch64/plat/interrupts/absent.c
+++ b/src/arch/aarch64/plat/interrupts/absent.c
@@ -6,9 +6,80 @@
* https://opensource.org/licenses/BSD-3-Clause.
*/
+#include "hf/plat/interrupts.h"
#include "hf/types.h"
+bool plat_interrupts_controller_driver_init(
+ const struct fdt *fdt, struct mm_stage1_locked stage1_locked,
+ struct mpool *ppool)
+{
+ (void)fdt;
+ (void)stage1_locked;
+ (void)ppool;
+ return true;
+}
+
+void plat_interrupts_controller_hw_init(struct cpu *c)
+{
+ (void)c;
+}
+
void plat_interrupts_set_priority_mask(uint8_t min_priority)
{
(void)min_priority;
}
+
+uint8_t plat_interrupts_get_priority_mask(void)
+{
+ return 0;
+}
+
+void plat_interrupts_set_priority(uint32_t id, uint32_t core_pos,
+ uint32_t priority)
+{
+ (void)id;
+ (void)core_pos;
+ (void)priority;
+}
+
+void plat_interrupts_disable(uint32_t id, uint32_t core_pos)
+{
+ (void)id;
+ (void)core_pos;
+}
+
+void plat_interrupts_set_type(uint32_t id, uint32_t type)
+{
+ (void)id;
+ (void)type;
+}
+
+uint32_t plat_interrupts_get_type(uint32_t id)
+{
+ (void)id;
+ return 0;
+}
+
+uint32_t plat_interrupts_get_pending_interrupt_id(void)
+{
+ return 0;
+}
+
+void plat_interrupts_end_of_interrupt(uint32_t id)
+{
+ (void)id;
+}
+
+void plat_interrupts_configure_interrupt(struct interrupt_descriptor int_desc)
+{
+ (void)int_desc;
+}
+
+void plat_interrupts_send_sgi(uint32_t id, bool send_to_all,
+ uint32_t target_list, bool to_this_security_state)
+{
+ (void)id;
+ (void)send_to_all;
+ (void)target_list;
+ (void)to_this_security_state;
+}
diff --git a/src/arch/fake/hypervisor/BUILD.gn b/src/arch/fake/hypervisor/BUILD.gn
index a845532..89c75a7 100644
--- a/src/arch/fake/hypervisor/BUILD.gn
+++ b/src/arch/fake/hypervisor/BUILD.gn
@@ -8,6 +8,7 @@
sources = [
"cpu.c",
"ffa.c",
+ "interrupts.c",
]
deps = [
"//src/arch/fake:arch",
diff --git a/src/arch/fake/hypervisor/cpu.c b/src/arch/fake/hypervisor/cpu.c
index 2ef9f32..8f3a5ad 100644
--- a/src/arch/fake/hypervisor/cpu.c
+++ b/src/arch/fake/hypervisor/cpu.c
@@ -10,6 +10,7 @@
#include "hf/cpu.h"
#include "hf/ffa.h"
+#include "hf/plat/interrupts.h"
void arch_irq_disable(void)
{
@@ -21,11 +22,6 @@
/* TODO */
}
-void plat_interrupts_set_priority_mask(uint8_t min_priority)
-{
- (void)min_priority;
-}
-
void arch_regs_reset(struct vcpu *vcpu)
{
/* TODO */
diff --git a/src/arch/fake/hypervisor/interrupts.c b/src/arch/fake/hypervisor/interrupts.c
new file mode 100644
index 0000000..4d2585b
--- /dev/null
+++ b/src/arch/fake/hypervisor/interrupts.c
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2021 The Hafnium Authors.
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://opensource.org/licenses/BSD-3-Clause.
+ */
+
+#include "hf/plat/interrupts.h"
+
+#include "hf/cpu.h"
+#include "hf/ffa.h"
+
+void plat_interrupts_set_priority_mask(uint8_t min_priority)
+{
+ (void)min_priority;
+}
+
+void plat_interrupts_controller_hw_init(struct cpu *c)
+{
+ (void)c;
+}