31#ifndef LIBBSP_NIOSV_IRQ_H
32#define LIBBSP_NIOSV_IRQ_H
42#define NIOSV_INTERRUPT_VECTOR_SOFTWARE 0
44#define NIOSV_INTERRUPT_VECTOR_TIMER 1
46#define NIOSV_INTERRUPT_VECTOR_EXTERNAL(x) ((x) + 2)
48#define NIOSV_INTERRUPT_VECTOR_IS_EXTERNAL(x) ((x) >= 2)
50#define NIOSV_INTERRUPT_VECTOR_EXTERNAL_TO_INDEX(x) ((x) - 2)
52#define BSP_INTERRUPT_VECTOR_COUNT \
53 NIOSV_INTERRUPT_VECTOR_EXTERNAL(NIOSV_MAXIMUM_EXTERNAL_INTERRUPTS)
55#define BSP_INTERRUPT_CUSTOM_VALID_VECTOR
60enum alt_exception_cause_e {
61 NIOSV_UNDEFINED_CAUSE = -1,
62 NIOSV_INSTRUCTION_ADDRESS_MISALIGNED = 0,
63 NIOSV_INSTRUCTION_ACCESS_FAULT = 1,
64 NIOSV_ILLEGAL_INSTRUCTION = 2,
66 NIOSV_LOAD_ADDRESS_MISALIGNED = 4,
67 NIOSV_LOAD_ACCESS_FAULT = 5,
68 NIOSV_STORE_AMO_ADDRESS_MISALIGNED = 6,
69 NIOSV_STORE_AMO_ACCESS_FAULT = 7,
70 NIOSV_ENVIRONMENT_CALL_FROM_U_MODE = 8,
71 NIOSV_ENVIRONMENT_CALL_FROM_S_MODE = 9,
72 NIOSV_RESERVED_BIT_10 = 10,
73 NIOSV_ENVIRONMENT_CALL_FROM_M_MODE = 11,
74 NIOSV_INSTRUCTION_PAGE_FAULT = 12,
75 NIOSV_LOAD_PAGE_FAULT = 13,
76 NIOSV_RESERVED_BIT_14 = 14,
77 NIOSV_STORE_AMO_PAGE_FAULT = 15
79typedef enum alt_exception_cause_e alt_exception_cause;
86static inline uint32_t alt_irq_pending(
void)
88 uint32_t active, enabled;
90 active = read_csr(mip);
91 enabled = read_csr(mie);
97 return (active & enabled) >> 16;
100static inline uint32_t alt_irq_index(uint32_t active)
122static inline bool alt_irq_is_pending(uint32_t index)
124 uint32_t mask, active;
126 active = alt_irq_pending();
137static inline bool alt_irq_is_enabled(uint32_t index)
139 uint32_t mask, enabled;
141 enabled = read_csr(mie) >> 16;
145 if (enabled & mask) {
152static inline void alt_irq_enable(uint32_t index)
156 mask = 1 << (index + 16);
160static inline void alt_irq_disable(uint32_t index)
164 mask = 1 << (index + 16);
165 clear_csr(mie, mask);
This header file is provided for backward compatiblility.
This header file provides the interfaces of the Processor Mask.