blob: 140cad3672687380cd50f798d1d87aa9fbfc25f8 [file] [log] [blame]
/* Copyright 2020 Espressif Systems (Shanghai) PTE LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "soc/soc.h"
#include "soc/interrupt_reg.h"
#include "riscv/rvruntime-frames.h"
#include "soc/soc_caps.h"
#include <toolchain.h>
/* Imports */
GTEXT(__irq_wrapper)
/* This is the vector table. MTVEC points here.
*
* Use 4-byte intructions here. 1 instruction = 1 entry of the table.
* The CPU jumps to MTVEC (i.e. the first entry) in case of an exception,
* and (MTVEC & 0xfffffffc) + (mcause & 0x7fffffff) * 4, in case of an interrupt.
*
* Note: for our CPU, we need to place this on a 256-byte boundary, as CPU
* only uses the 24 MSBs of the MTVEC, i.e. (MTVEC & 0xffffff00).
*/
.global _esp32c3_vector_table
.section .exception_vectors.text
.balign 0x100
.type _esp32c3_vector_table, @function
_esp32c3_vector_table:
.option push
.option norvc
.rept (32)
j __irq_wrapper /* 32 identical entries, all pointing to the interrupt handler */
.endr