diff options
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.c | 99 |
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); |