RV32 SoC DS UG
High-Perf RV32 SoC DS UG
RV64 SoC DS UG API and Examples
Embedded IDE UG
Loading...
Searching...
No Matches
mtrap.h File Reference
#include <stdio.h>
#include "debug.h"
#include "plic/plic.h"

Go to the source code of this file.

Overview

Trap (Interrupt) and Exception Handling Definitions.

Author
Efinix Inc

This file defines the entry point for all processor traps (trap_entry), as well as the C-level dispatchers for Interrupts (trap()) and Exceptions (crash()).

Definition in file mtrap.h.

Macros

#define STORE   "sw"
 Store Word (32-bit).
#define LOAD   "lw"
 Load Word (32-bit).
#define GPR_SIZE   "4"
#define STACK_SIZE   "64"

Functions

Main Trap Entry Point (Naked).

Hardware vector target (written to mtvec).

void trap_entry (void)
 The Main Trap Entry Point (Naked).
CPU Interrupt Handler.

Handle interrupt from external, timer, software interrupts.

Note
These are weak aliases pointing to irq_handleDefault. The user can override them by defining a function with the same name.
int irq_handleDefault (void)
 Default Fallback Interrupt Handler.
int irq_handleSoft (void)
 Handlers for CPU interrupts (Software).
int irq_handleTimer (void)
 Handlers for CPU interrupts (Timer).
void irq_handleExt (void)
 External Interrupt Handler (PLIC).
List of Interrupt Handler.

List of weak aliases for all PLIC interrupt sources. The user can override any of these by defining a function with the same name.

Note
These are weak aliases pointing to irq_handleDefault. Refer to mtrap.c for the full list of handlers and their corresponding PLIC IDs. The user can override them by defining a function with the same name.
int irq_m_invalid_handler (void)
 ID: 0, Handler for invalid/unassigned interrupts.
int irq_m_uart0_handler (void)
 ID: 1, Handler for UART0 interrupts.
int irq_m_uart1_handler (void)
 ID: 2, Handler for UART1 interrupts.
int irq_m_uart2_handler (void)
 ID: 3, Handler for UART2 interrupts.
int irq_m_spi0_handler (void)
 ID: 6, Handler for SPI0 interrupts.
int irq_m_spi1_handler (void)
 ID: 7, Handler for SPI1 interrupts.
int irq_m_spi2_handler (void)
 ID: 8, Handler for SPI2 interrupts.
int irq_m_i2c0_handler (void)
 ID: 11, Handler for I2C0 interrupts.
int irq_m_i2c1_handler (void)
 ID: 12, Handler for I2C1 interrupts.
int irq_m_i2c2_handler (void)
 ID: 13, Handler for I2C2 interrupts.
int irq_m_i2c3_handler (void)
 ID: 14, Handler for I2C3 interrupts.
int irq_m_i2c4_handler (void)
 ID: 15, Handler for I2C4 interrupts.
int irq_m_gpio0_0_handler (void)
 ID: 16, Handler for GPIO0_0 interrupts.
int irq_m_gpio0_1_handler (void)
 ID: 17, Handler for GPIO0_1 interrupts.
int irq_m_gpio1_0_handler (void)
 ID: 18, Handler for GPIO1_0 interrupts.
int irq_m_gpio1_1_handler (void)
 ID: 19, Handler for GPIO1_1 interrupts.
int irq_m_userTimer0_handler (void)
 ID: 21, Handler for User Timer 0 interrupts.
int irq_m_userTimer1_handler (void)
 ID: 22, Handler for User Timer 1 interrupts.
int irq_m_userTimer2_handler (void)
 ID: 23, Handler for User Timer 2 interrupts.
int irq_m_watchDog0_handler (void)
 ID: 26, Handler for WatchDog Timer interrupts.
int irq_m_axiA_handler (void)
 ID: 30, Handler for AXI A interrupts.
int irq_m_l2Cache_handler (void)
 ID: 31, Handler for L2 Cache Control interrupts.
int irq_m_user_a_handler (void)
 ID: 32, Handler for User-defined Interrupt A.
int irq_m_user_b_handler (void)
 ID: 33, Handler for User-defined Interrupt B.
int irq_m_user_c_handler (void)
 ID: 34, Handler for User-defined Interrupt C.
int irq_m_user_d_handler (void)
 ID: 35, Handler for User-defined Interrupt D.
int irq_m_user_e_handler (void)
 ID: 36, Handler for User-defined Interrupt E.
int irq_m_user_f_handler (void)
 ID: 37, Handler for User-defined Interrupt F.
int irq_m_user_g_handler (void)
 ID: 38, Handler for User-defined Interrupt G.
int irq_m_user_h_handler (void)
 ID: 39, Handler for User-defined Interrupt H.
Dispatcher/Exception Handlers (Function)

Trap Dispatcher mainly for external interrupt and exception handler.

Note
These are weak aliases pointing to irq_handleDefault. The user can override them by defining a function with the same name.
void trap (void)
 Main C Trap Dispatcher.
void crash (void)
 Fatal Exception Handler.