-
Notifications
You must be signed in to change notification settings - Fork 53
Remove Smaiae extension #622 #640
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
mark-honman
wants to merge
4
commits into
riscv:master
Choose a base branch
from
mark-honman:Remove-smaiae
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
4 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -180,7 +180,6 @@ The table below provides a summary of the ACLIC extensions. | |
| [%autowidth] | ||
| |=== | ||
| | Extension Name | Description | ||
| | Smaiae | Advanced Interrupt Architecture for Embedded Systems | ||
| | Smaclic | Advanced Core Local Interrupt Controller at Machine level | ||
| | Ssaclic | Advanced Core Local Interrupt Controller at Supervisor level | ||
| | Smivt | Support for interrupt vector table at Machine level | ||
|
|
@@ -202,18 +201,17 @@ Each row contains the dependencies of the extension named in the first column. | |
|
|
||
| [%autowidth] | ||
| |=== | ||
| | Extension Name | Sm | Ss | Smcsrind | Sscsrind | Smaiae | Smnip | ||
| | Smivt | x | | | | | | ||
| | Ssivt | | x | | | | | ||
| | Smcsps | x | | | | | | ||
| | Sscsps | | x | | | | | ||
| | Smtp | (x)| (x)| | | | | ||
| | Smaiae | x | (x)| x | (x) | | | ||
| | Smaclic | | | | | x | | ||
| | Ssaclic | | | | | x | | ||
| | Smnip | | | | | x | | ||
| | Ssnip | | | | | | x | ||
| | Smehv | | | | | | x | ||
| | Extension Name | Sm | Ss | Smcsrind | Sscsrind | Smaclic | Smnip | ||
| | Smivt | x | | | | | | ||
| | Ssivt | | x | | | | | ||
| | Smcsps | x | | | | | | ||
| | Sscsps | | x | | | | | ||
| | Smtp | (x)| (x)| | | | | ||
| | Smaclic | x | | x | | | | ||
| | Ssaclic | | x | | x | x | | ||
| | Smnip | | | | | x | | ||
| | Ssnip | | | | | | x | ||
| | Smehv | | | | | | x | ||
| |=== | ||
|
|
||
| In this table (x) denotes a dependency that is valid, | ||
|
|
@@ -222,28 +220,9 @@ if the corresponding privilege mode is implemented in the hart. | |
| NOTE: The extensions defined here are orthogonal to the NMI and RNMI | ||
| mechanisms. Their behavior is unchanged by the extensions of ACLIC. | ||
|
|
||
| == Advanced Interrupt Architecture for Embedded Systems (Smaiae) | ||
|
|
||
| The Smaia extension encompasses all added CSRs | ||
| and all modifications to interrupt response behavior | ||
| that the AIA specifies for a hart, | ||
| over all privilege levels. | ||
|
|
||
| The Smaiae extension is a subset of Smaia. | ||
| To limit the implementation cost, | ||
| the interrupt filtering and virtual interrupts are not supported. | ||
|
|
||
| Specifically, `xvip` and `xvien` are read-only 0. | ||
| When XLEN=32, `xviph` and `xvienh` are also read-only 0. | ||
|
|
||
| NOTE: While other features of AIA like IMSIC or programmable IPRIO | ||
| might also not be needed resource constraint systems, | ||
| These are already controlled by WARL registers, | ||
| so implementations can already choose to not support these. | ||
|
|
||
| == Advanced Core Local Interrupt Controller (Smaclic and Ssaclic) | ||
|
|
||
| The Smaclic and Ssaclic extensions depend on the Smaiae extension. | ||
| The Smaclic extension depends on the Smcsrind extension, and Ssaclic depends on Sscsrind. | ||
|
|
||
| Of the main ACLIC goals, these targets are addressed here: | ||
|
|
||
|
|
@@ -429,6 +408,14 @@ and the conditions for a virtual instruction exception apply, | |
| in which case a virtual instruction exception is raised | ||
| when in VS or VU mode instead of an illegal instruction exception. | ||
|
|
||
| NOTE: Many AIA features like programmable IPRIO may not be needed in resource constrained systems. | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I do not think this is the right place for this note. |
||
| Since these are already controlled by WARL registers, implementations can save area by choosing to not support them. + | ||
| + | ||
| A minimal implementation of the `mvip` CSR is suggested by the AIA specification: + | ||
| "When supervisor mode is implemented, the minimal required implementation of mvien and mvip has all bits being | ||
| read-only zeros except for mvip bits 1 and 9, and sometimes bit 5, each of which is an alias of an existing | ||
| writable bit in mip. When supervisor mode is not implemented, registers mvien and mvip do not exist." | ||
|
|
||
| == Conditional Stack Pointer Swap extension (Smcsps, Sscsps) | ||
|
|
||
| The Sscsps depends on the Smcsps extension and adds the ability for conditional stack pointer swap at supervisor level and below. | ||
|
|
@@ -622,7 +609,8 @@ Included in: <<smcsps>> | |
|
|
||
| == Horizontal Nested Interrupt Preemption Support (Smnip & Ssip) | ||
|
|
||
| The Smnip extension depends on the Smaiae extension and adds nested preemption support at machine level. | ||
| The Smnip extension depends on the Smaia extension and adds nested preemption support at machine level. | ||
|
|
||
| The Ssnip extension depends on the Smnip extension and adds nested preemption support at supervisor level. | ||
|
|
||
| The extensions enable higher priority interrupts to preempt a lower priority interrupts in a nested fashion. | ||
|
|
||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
needs the AIA dependency