Skip to content

Commit

Permalink
4 NMI alternate vector table
Browse files Browse the repository at this point in the history
closes #22
  • Loading branch information
jnk0le committed Sep 30, 2024
1 parent 1e7ba17 commit d73ced7
Showing 1 changed file with 26 additions and 4 deletions.
30 changes: 26 additions & 4 deletions XTeic.adoc
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

= XTeic
Jan Oleksiewicz <[email protected]>
:appversion: 0.35.0
:appversion: 0.36.0
:toc:
:toclevels: 5
:sectnums:
Expand Down Expand Up @@ -1137,18 +1137,40 @@ to allow immediate shutdown of certain peripherals (pwm timers etc.)
be performed.
| 5 | NMI | MemoryViolation_NMI | Bus or memory access fault
| 6 | NMI | InstructionViolation_NMI | Illegal instruction exception
| 7 | NMI | Unrecoverable_NMI | Nested nmi, unknown or a state that cannot be easily
recovered from.
| 7 | NMI | Unrecoverable_NMI | Nested nmi, unknown or a state that cannot be easily recovered from.
| 8 | IRQ | Deffered0_IRQ | software deffered interrupt, can be used for context switch.
| 9 | IRQ | reserved | reserved/systick???
| 10..1022 | IRQ | *_IRQ | (optional) device specific interrupts
|============================================================================================

Unimplemented optional NMIs can be recycled for custom NMIs other than the ones provided in table above.

NOTE: XTeic doesn't provide any peripheral API for optional watchdog, clock and integrity protection
NOTE: XTeic doesn't provide any peripheral API for optional watchdog, clock and integrity protection
systems. It's up to the implementer to provide them.

===== alternate vector table allocation

Alternate vector table allocation designated for minimal implementationns that are not
making use of optional NMIs, but benefit from additional space savings.

Alternate vector table allocation is implentation defined. It's not discoverable nor configurable.

[cols="3,2,7,12",options=header]
|============================================================================================
| irq num | type | name | notes
| 0 | - | reserved | reserved for startup code (typically jump instruction)
| 1 | NMI | HW_NMI | (optional) hardware related exceptions (watchdogs, ECC etc.)
| 2 | NMI | SW_NMI | exceptions related to application execution on a given hart
(illegal instr, integrity violations by sw etc.)
| 3 | NMI | Unrecoverable_NMI | Nested nmi, unknown or a state that cannot be easily recovered from.
| 4 | IRQ | Deffered0_IRQ | software deffered interrupt, can be used for context switch.
| 5 | IRQ | reserved | reserved/systick???
| 6..1022 | IRQ | *_IRQ | (optional) device specific interrupts
|============================================================================================

NOTE: Fragmentation is not a big of a deal, as all devices will be fragmented by implementing it's
own layout of device specific IRQ handlers. Which will be provided within startup files.

=== recycled volume II CSRs

To reduce disruption some of the "privileged" csr have been recycled
Expand Down

0 comments on commit d73ced7

Please sign in to comment.