|  | // Copyright lowRISC contributors. | 
|  | // Licensed under the Apache License, Version 2.0, see LICENSE for details. | 
|  | // SPDX-License-Identifier: Apache-2.0 | 
|  |  | 
|  | /** | 
|  | * Interrupt handler vector, set up so that all interrupts are | 
|  | * caught and loop forever. | 
|  | * | 
|  | * See the Ibex manual, Chapter 11, for more information. | 
|  | */ | 
|  | // NOTE: The "ax" flag below is necessary to ensure that this section | 
|  | // is allocated executable space in ROM by the linker. | 
|  | .section .vectors, "ax" | 
|  | .option push | 
|  |  | 
|  | // Disable RISC-V instruction compression: we need all instructions to | 
|  | // be exactly word wide in the interrupt vector. | 
|  | .option norvc | 
|  |  | 
|  | // Disable RISC-V linker relaxation, as it can compress instructions at | 
|  | // link-time, which we also really don't want. | 
|  | .option norelax | 
|  |  | 
|  | // Exception handler. | 
|  | .org 0x00 | 
|  | j exception_handler | 
|  |  | 
|  | // Software interrupt handler. | 
|  | .org 0x0c | 
|  | j default_irq_handler | 
|  |  | 
|  | // Timer interrupt handler. | 
|  | .org 0x1c | 
|  | j default_irq_handler | 
|  |  | 
|  | // External interrupt handler | 
|  | .org 0x2c | 
|  | j default_irq_handler | 
|  |  | 
|  | // Fast interrupts, 0 through 14. | 
|  | // Since there are 15 of these in a continuous block, | 
|  | // we just repeat the same instruction. | 
|  | .org 0x40 | 
|  | .rept 15 | 
|  | j default_irq_handler | 
|  | .endr | 
|  |  | 
|  | // Non-maskable interrupt (NMI) handler. | 
|  | .org 0x7c | 
|  | j default_irq_handler | 
|  |  | 
|  | // Reset vector, the initial entry point after reset. | 
|  | .org 0x80 | 
|  | j _reset_start | 
|  |  | 
|  | .option pop | 
|  |  | 
|  | // Put these handlers in the code section. | 
|  | .text | 
|  | /** | 
|  | * Default exception handler; loops forever. | 
|  | */ | 
|  | exception_handler: | 
|  | wfi | 
|  | j exception_handler | 
|  |  | 
|  | /** | 
|  | * Default interrupt handler; loops forever. | 
|  | */ | 
|  | default_irq_handler: | 
|  | wfi | 
|  | j default_irq_handler |