Sapphire SoC DS Sapphire SoC UG Sapphire HP SoC DS Sapphire HP SoC UG RISC-V Embedded IDE UG Board Support Package
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 "soc.h"
21#include "type.h"
22#include "riscv.h"
23#include "plic/plic.h"
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
68
69/* ========================================================================== */
70/* DATA TYPES */
71/* ========================================================================== */
82 typedef int (*irq_handler_t)(void);
83
89 extern int (*interrupt_vector_table[64])(void);
90
95 typedef enum {
96 IRQ_SOFTWARE = MIE_MSIE, //< Machine Software Interrupt (Bit 3)
97 IRQ_TIMER = MIE_MTIE, //< Machine Timer Interrupt (Bit 7)
98 IRQ_EXTERNAL = MIE_MEIE //< Machine External Interrupt (PLIC) (Bit 11)
99 } cpu_irq_t;
100 // End of IRQ_Types
101
102/* ========================================================================== */
103/* FUNCTION PROTOTYPES */
104/* ========================================================================== */
105
117 void irq_enable(void);
118
124 void irq_disable(void);
125
131 void irq_setType(cpu_irq_t enable);
132
138 void irq_clearType(cpu_irq_t disable);
139
146 void irq_registerExt(u32 gateway, irq_handler_t handler);
147
154 void irq_setTrapVector(void (*trap_vector)(void)); // End of Core_Funcs
156
157
158#ifdef __cplusplus
159}
160#endif // C_plusplus
161 // End of IRQ_Funcs
163
164#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:20
int(* irq_handler_t)(void)
Standard Interrupt Handler Function Pointer.
Definition irq.h:82
cpu_irq_t
CPU Interrupt Type (Standard RISC-V MIE bits).
Definition irq.h:95
@ IRQ_SOFTWARE
Definition irq.h:96
@ IRQ_TIMER
Definition irq.h:97
@ IRQ_EXTERNAL
Definition irq.h:98
#define MIE_MTIE
Machine Timer Interrupt Enable (Bit 7).
Definition riscv.h:88
#define MIE_MEIE
Machine External Interrupt Enable (Bit 11).
Definition riscv.h:89
#define MIE_MSIE
Machine Software Interrupt Enable (Bit 3).
Definition riscv.h:87
PLIC driver API definitions.
RISC-V related functions and definitions.
uint32_t u32
Definition type.h:22