/* 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 /* Imports */ GTEXT(_isr_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 _isr_wrapper /* 32 identical entries, all pointing to the interrupt handler */ .endr