From 25e0687210c69f0d1a802b9a699f4acccbfbd67c Mon Sep 17 00:00:00 2001 From: Jimmy Brush Date: Fri, 18 Aug 2023 03:26:49 -0400 Subject: [PATCH 1/2] libsel4simple-default,riscv: implement irq_trigger Wire up simple->irq_trigger to seL4_IRQControl_GetTrigger on risc-v. This allows risc-v drivers in libplatsupport to register edge-triggered interrupts. Signed-off-by: Jimmy Brush --- libsel4simple-default/src/arch/riscv/default.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/libsel4simple-default/src/arch/riscv/default.c b/libsel4simple-default/src/arch/riscv/default.c index 8dc63f267..c8684381d 100644 --- a/libsel4simple-default/src/arch/riscv/default.c +++ b/libsel4simple-default/src/arch/riscv/default.c @@ -15,14 +15,21 @@ #include -seL4_Error simple_default_get_irq(void *data, int irq, seL4_CNode root, seL4_Word index, uint8_t depth) { +seL4_Error simple_default_get_irq(void *data, int irq, seL4_CNode root, seL4_Word index, uint8_t depth) +{ return seL4_IRQControl_Get(seL4_CapIRQControl, irq, root, index, depth); } -void -simple_default_init_arch_simple(arch_simple_t *simple, void *data) +seL4_Error simple_default_get_irq_trigger(void *data, int irq, int trigger, UNUSED int core, seL4_CNode root, + seL4_Word index, uint8_t depth) +{ + return seL4_IRQControl_GetTrigger(seL4_CapIRQControl, irq, trigger, root, index, depth); +} + +void simple_default_init_arch_simple(arch_simple_t *simple, void *data) { simple->data = data; simple->irq = simple_default_get_irq; + simple->irq_trigger = simple_default_get_irq_trigger; } From a3a136f39184bd1a059cd75237818fa25383904b Mon Sep 17 00:00:00 2001 From: Jimmy Brush Date: Tue, 22 Aug 2023 11:05:27 -0400 Subject: [PATCH 2/2] trivial: fix whitespace Signed-off-by: Jimmy Brush --- libsel4simple-default/src/arch/riscv/default.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libsel4simple-default/src/arch/riscv/default.c b/libsel4simple-default/src/arch/riscv/default.c index c8684381d..d1d015d31 100644 --- a/libsel4simple-default/src/arch/riscv/default.c +++ b/libsel4simple-default/src/arch/riscv/default.c @@ -26,7 +26,7 @@ seL4_Error simple_default_get_irq_trigger(void *data, int irq, int trigger, UNUS return seL4_IRQControl_GetTrigger(seL4_CapIRQControl, irq, trigger, root, index, depth); } -void simple_default_init_arch_simple(arch_simple_t *simple, void *data) +void simple_default_init_arch_simple(arch_simple_t *simple, void *data) { simple->data = data; simple->irq = simple_default_get_irq;