RV32 SoC DS UG
High-Perf RV32 SoC DS UG
RV64 SoC DS UG API and Examples
Embedded IDE UG
Loading...
Searching...
No Matches
irq.h
Go to the documentation of this file.
1
2// Copyright (C) 2013-2026 Efinix Inc. All rights reserved.
3// Full license header bsp/efinix/EfxSapphireSocRV64/include/LICENSE.MD
5
6#ifndef IRQ_H
7#define IRQ_H
8
19
20#include "type.h"
21#include "riscv.h"
22#include "mtrap.h"
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
92
93/* ========================================================================== */
94/* DATA TYPES */
95/* ========================================================================== */
106 typedef int (*irq_handler_t)(void);
107
113 extern int (*interrupt_vector_table[64])(void);
114
119 typedef enum {
120 IRQ_SOFTWARE = MIE_MSIE, //< Machine Software Interrupt (Bit 3)
121 IRQ_TIMER = MIE_MTIE, //< Machine Timer Interrupt (Bit 7)
122 IRQ_EXTERNAL = MIE_MEIE //< Machine External Interrupt (PLIC) (Bit 11)
123 } cpu_irq_t;
124 // End of IRQ_Types
125
126/* ========================================================================== */
127/* FUNCTION PROTOTYPES */
128/* ========================================================================== */
129
141 void irq_enable(void);
142
148 void irq_disable(void);
149
155 void irq_setType(cpu_irq_t enable);
156
162 void irq_clearType(cpu_irq_t disable);
163
170 void irq_registerExt(u32 gateway, irq_handler_t handler);
171
178 void irq_setTrapVector(void (*trap_vector)(void)); // End of Core_Funcs
180
181
182#ifdef __cplusplus
183}
184#endif // C_plusplus
185 // End of IRQ_Funcs
187
188#endif // IRQ_H
void irq_enable(void)
Enable Global Interrupts.
Definition irq.c:56
void irq_registerExt(u32 gateway, irq_handler_t handler)
Register a handler for an External Interrupt (PLIC).
Definition irq.c:29
void irq_setType(cpu_irq_t enable)
Enable specific CPU interrupt sources.
Definition irq.c:76
void irq_setTrapVector(void(*trap_vector)(void))
Set the Machine Trap Vector (mtvec).
Definition irq.c:46
void irq_clearType(cpu_irq_t disable)
Disable specific CPU interrupt sources.
Definition irq.c:85
void irq_disable(void)
Disable Global Interrupts.
Definition irq.c:66
int(* interrupt_vector_table[64])(void)
Global Interrupt Vector Table.
Definition mtrap.c:75
int(* irq_handler_t)(void)
Standard Interrupt Handler Function Pointer.
Definition irq.h:106
cpu_irq_t
CPU Interrupt Type (Standard RISC-V MIE bits).
Definition irq.h:119
@ IRQ_SOFTWARE
Definition irq.h:120
@ IRQ_TIMER
Definition irq.h:121
@ IRQ_EXTERNAL
Definition irq.h:122
#define MIE_MTIE
Machine Timer Interrupt Enable (Bit 7).
Definition riscv.h:132
#define MIE_MEIE
Machine External Interrupt Enable (Bit 11).
Definition riscv.h:133
#define MIE_MSIE
Machine Software Interrupt Enable (Bit 3).
Definition riscv.h:131
Trap (Interrupt) and Exception Handling Definitions.
RISC-V related functions and definitions.
uint32_t u32
Definition type.h:26