summaryrefslogtreecommitdiff
path: root/FreeRTOS/Demo/RISC-V_RV32_SiFive_HiFive1-RevB_FreedomStudio/freedom-metal/src/interrupt.c
diff options
context:
space:
mode:
Diffstat (limited to 'FreeRTOS/Demo/RISC-V_RV32_SiFive_HiFive1-RevB_FreedomStudio/freedom-metal/src/interrupt.c')
-rw-r--r--FreeRTOS/Demo/RISC-V_RV32_SiFive_HiFive1-RevB_FreedomStudio/freedom-metal/src/interrupt.c99
1 files changed, 64 insertions, 35 deletions
diff --git a/FreeRTOS/Demo/RISC-V_RV32_SiFive_HiFive1-RevB_FreedomStudio/freedom-metal/src/interrupt.c b/FreeRTOS/Demo/RISC-V_RV32_SiFive_HiFive1-RevB_FreedomStudio/freedom-metal/src/interrupt.c
index eeb88b26f..c4a7050c5 100644
--- a/FreeRTOS/Demo/RISC-V_RV32_SiFive_HiFive1-RevB_FreedomStudio/freedom-metal/src/interrupt.c
+++ b/FreeRTOS/Demo/RISC-V_RV32_SiFive_HiFive1-RevB_FreedomStudio/freedom-metal/src/interrupt.c
@@ -1,13 +1,12 @@
/* Copyright 2018 SiFive, Inc */
/* SPDX-License-Identifier: Apache-2.0 */
-#include <string.h>
#include <metal/interrupt.h>
#include <metal/machine.h>
+#include <string.h>
-struct metal_interrupt* metal_interrupt_get_controller (metal_intr_cntrl_type cntrl,
- int id)
-{
+struct metal_interrupt *
+metal_interrupt_get_controller(metal_intr_cntrl_type cntrl, int id) {
switch (cntrl) {
case METAL_CPU_CONTROLLER:
break;
@@ -32,51 +31,81 @@ struct metal_interrupt* metal_interrupt_get_controller (metal_intr_cntrl_type cn
extern __inline__ void metal_interrupt_init(struct metal_interrupt *controller);
-extern __inline__ int metal_interrupt_set_vector_mode(struct metal_interrupt *controller,
- metal_vector_mode mode);
-extern __inline__ metal_vector_mode metal_interrupt_get_vector_mode(struct metal_interrupt *controller);
+extern __inline__ int
+metal_interrupt_set_vector_mode(struct metal_interrupt *controller,
+ metal_vector_mode mode);
+extern __inline__ metal_vector_mode
+metal_interrupt_get_vector_mode(struct metal_interrupt *controller);
+
+extern __inline__ int
+metal_interrupt_set_privilege(struct metal_interrupt *controller,
+ metal_intr_priv_mode mode);
+extern __inline__ metal_intr_priv_mode
+metal_interrupt_get_privilege(struct metal_interrupt *controller);
-extern __inline__ int metal_interrupt_set_privilege(struct metal_interrupt *controller,
- metal_intr_priv_mode mode);
-extern __inline__ metal_intr_priv_mode metal_interrupt_get_privilege(struct metal_interrupt *controller);
+extern __inline__ int
+metal_interrupt_set_threshold(struct metal_interrupt *controller,
+ unsigned int level);
+extern __inline__ unsigned int
+metal_interrupt_get_threshold(struct metal_interrupt *controller);
-extern __inline__ int metal_interrupt_set_threshold(struct metal_interrupt *controller,
- unsigned int level);
-extern __inline__ unsigned int metal_interrupt_get_threshold(struct metal_interrupt *controller);
+extern __inline__ unsigned int
+metal_interrupt_get_priority(struct metal_interrupt *controller, int id);
-extern __inline__ unsigned int metal_interrupt_get_priority(struct metal_interrupt *controller, int id);
+extern __inline__ int
+metal_interrupt_set_priority(struct metal_interrupt *controller, int id,
+ unsigned int priority);
-extern __inline__ int metal_interrupt_set_priority(struct metal_interrupt *controller, int id, unsigned int priority);
+extern __inline__ int
+metal_interrupt_set_preemptive_level(struct metal_interrupt *controller, int id,
+ unsigned int level);
-extern __inline__ int metal_interrupt_clear(struct metal_interrupt *controller, int id);
+extern __inline__ unsigned int
+metal_interrupt_get_preemptive_level(struct metal_interrupt *controller,
+ int id);
-extern __inline__ int metal_interrupt_set(struct metal_interrupt *controller, int id);
+extern __inline__ int metal_interrupt_clear(struct metal_interrupt *controller,
+ int id);
-extern __inline__ int metal_interrupt_register_handler(struct metal_interrupt *controller,
- int id,
- metal_interrupt_handler_t handler,
- void *priv);
+extern __inline__ int metal_interrupt_set(struct metal_interrupt *controller,
+ int id);
-extern __inline__ int metal_interrupt_register_vector_handler(struct metal_interrupt *controller,
- int id,
- metal_interrupt_vector_handler_t handler,
- void *priv_data);
+extern __inline__ int
+metal_interrupt_register_handler(struct metal_interrupt *controller, int id,
+ metal_interrupt_handler_t handler, void *priv);
-extern __inline__ int metal_interrupt_enable(struct metal_interrupt *controller, int id);
+extern __inline__ int metal_interrupt_register_vector_handler(
+ struct metal_interrupt *controller, int id,
+ metal_interrupt_vector_handler_t handler, void *priv_data);
-extern __inline__ int metal_interrupt_disable(struct metal_interrupt *controller, int id);
+extern __inline__ int metal_interrupt_enable(struct metal_interrupt *controller,
+ int id);
-extern __inline__ unsigned int metal_interrupt_get_threshold(struct metal_interrupt *controller);
+extern __inline__ int
+metal_interrupt_disable(struct metal_interrupt *controller, int id);
-extern __inline__ int metal_interrupt_set_threshold(struct metal_interrupt *controller, unsigned int threshold);
+extern __inline__ int
+metal_interrupt_vector_enable(struct metal_interrupt *controller, int id);
-extern __inline__ unsigned int metal_interrupt_get_priority(struct metal_interrupt *controller, int id);
+extern __inline__ int
+metal_interrupt_vector_disable(struct metal_interrupt *controller, int id);
-extern __inline__ int metal_interrupt_set_priority(struct metal_interrupt *controller, int id, unsigned int priority);
+extern __inline__ int
+_metal_interrupt_command_request(struct metal_interrupt *controller, int cmd,
+ void *data);
-extern __inline__ int metal_interrupt_vector_enable(struct metal_interrupt *controller, int id);
+extern __inline__ metal_affinity
+metal_interrupt_affinity_enable(struct metal_interrupt *controller,
+ metal_affinity bitmask, int id);
-extern __inline__ int metal_interrupt_vector_disable(struct metal_interrupt *controller, int id);
+extern __inline__ metal_affinity
+metal_interrupt_affinity_disable(struct metal_interrupt *controller,
+ metal_affinity bitmask, int id);
-extern __inline__ int _metal_interrupt_command_request(struct metal_interrupt *controller,
- int cmd, void *data);
+extern __inline__ metal_affinity
+metal_interrupt_affinity_set_threshold(struct metal_interrupt *controller,
+ metal_affinity bitmask,
+ unsigned int level);
+extern __inline__ unsigned int
+metal_interrupt_affinity_get_threshold(struct metal_interrupt *controller,
+ int contextid);