You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: doc/03_reference/exception_interrupts.rst
+18-17Lines changed: 18 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,18 +3,18 @@
3
3
Exceptions and Interrupts
4
4
=========================
5
5
6
-
Ibex implements trap handling for interrupts and exceptions according to the RISC-V Privileged Specification, version 1.11.
6
+
Ibex implements trap handling for interrupts and exceptions according to the `RISC-V Privileged Specification, version 20211203 <https://drive.google.com/file/d/1EMip5dZlnypTk7pt4WWUKmtjUKTOkBqh/view>`.
7
7
8
8
When entering an interrupt/exception handler, the core sets the ``mepc`` CSR to the current program counter and saves ``mstatus``.MIE to ``mstatus``.MPIE.
9
9
All exceptions cause the core to jump to the base address of the vector table in the ``mtvec`` CSR.
10
-
Interrupts are handled in vectored mode, i.e., the core jumps to the base address plus four times the interrupt ID.
10
+
Interrupts are handled in vectored mode, i.e., the core jumps to the base address plus the interrupt ID times 4.
11
11
Upon executing an MRET instruction, the core jumps to the program counter previously saved in the ``mepc`` CSR and restores ``mstatus``.MPIE to ``mstatus``.MIE.
12
12
13
13
The base address of the vector table is initialized to the boot address (must be aligned to 256 bytes, i.e., its least significant byte must be 0x00) when the core is booting.
14
14
The base address can be changed after bootup by writing to the ``mtvec`` CSR.
15
15
For more information, see the :ref:`cs-registers` documentation.
16
16
17
-
The core starts fetching at the address made by concatenating the most significant 3 bytes of the boot address and the reset value (0x80) as the least significant byte.
17
+
The core starts fetching at ``boot_addr_i``, see :ref:`core-integration` .
18
18
It is assumed that the boot address is supplied via a register to avoid long paths to the instruction fetch unit.
0 commit comments