-
Notifications
You must be signed in to change notification settings - Fork 863
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
AIA: Implement Smaia/Ssaia extension #1635
base: master
Are you sure you want to change the base?
Commits on Oct 6, 2024
-
Configuration menu - View commit details
-
Copy full SHA for 66a4ab4 - Browse repository at this point
Copy the full SHA 66a4ab4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 62e0699 - Browse repository at this point
Copy the full SHA 62e0699View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9231043 - Browse repository at this point
Copy the full SHA 9231043View commit details -
AIA: Add RV32-only mieh, miph, and midelegh CSRs
Existing CSRs mie, mip, and mideleg are widended to 64 bits to support a total of 64 interrupt causes.
Configuration menu - View commit details
-
Copy full SHA for 83128ea - Browse repository at this point
Copy the full SHA 83128eaView commit details -
AIA: Enable Smcsrind/Sscsrind if supporting Smaia/Ssaia
Smaia/Ssaia allocates indirect CSRs 0x30~0x3f for major interrupt priorities and 0x70~0xff for external interrupts (only with an IMSIC).
Configuration menu - View commit details
-
Copy full SHA for 8d1e172 - Browse repository at this point
Copy the full SHA 8d1e172View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6c3a60e - Browse repository at this point
Copy the full SHA 6c3a60eView commit details -
All bytes of the machine-level iprio array are read-only 0s, and mtopi.IPRIO is always 1 whenever mtopi is not 0.
Configuration menu - View commit details
-
Copy full SHA for d104423 - Browse repository at this point
Copy the full SHA d104423View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8c1bfd9 - Browse repository at this point
Copy the full SHA 8c1bfd9View commit details -
AIA: Add mvip CSR, where mvip.SEIP, (sometimes) mvip.STIP, and mvip.S…
…SIP are aliases of the bits in mip When mvien is read-only 0, mvip.SEIP and mvip.SSIP are aliases of mip.SEIP and mip.SSIP. Accessing mvip.SEIP and mvip.SSIP reads from and writes to mip.SEIP and mip.SSIP. Accessing mvip.STIP reads from and writes to mip.STIP if menvcfg.STCE=1; otherwise, mvip.STIP is read-only 0.
Configuration menu - View commit details
-
Copy full SHA for dad58b3 - Browse repository at this point
Copy the full SHA dad58b3View commit details -
AIA: Let mvien.SSIP be writable
When mvien.SSIP=0, mvip.SSIP is an alias of mip.SSIP. Accessing mvip.SSIP reads from and writes to mip.SSIP. When mvien.SSIP=1, mvip.SSIP is a separate writable bit independent of mip.SSIP. Accessing mvip.SSIP reads from and writes to the separate, writable, independent bit normally.
Configuration menu - View commit details
-
Copy full SHA for af0be26 - Browse repository at this point
Copy the full SHA af0be26View commit details -
AIA: refactor: Let mvip.SEIP be the software-writable bit of mip.SEIP
The mip.SEIP is the logical-OR of a software-writable bit and signal from an external interrupt controller (e.g., APLIC or IMSIC). The AIA spec lets the software-writable bit be the mvip.SEIP. This commit follows the concept that the mvip.SEIP is a sub-component of mip.SEIP. Writing mip.SEIP actually updates the software-writable bit, i.e., mvip.SEIP. Reading mip.SEIP returns a value consisting of the software-writable bit, i.e., mvip.SEIP. The SEIP bit in mip::val becomes a placeholder for the external interrupt controller. Accessing mvip.SEIP reads from and writes to mvip.SEIP normally. Reference: riscv/riscv-aia#64
Configuration menu - View commit details
-
Copy full SHA for 3a2fd53 - Browse repository at this point
Copy the full SHA 3a2fd53View commit details -
AIA: Let mvien.SEIP be writable
When mvien.SEIP=0, mip.SEIP includes the software-writable bit, i.e., mvip.SEIP. When mvien.SEIP=1, mip.SEIP is read-only and does not include the value of mvip.SEIP.
Configuration menu - View commit details
-
Copy full SHA for a466721 - Browse repository at this point
Copy the full SHA a466721View commit details -
AIA: Alias sip[n] to mvip[n] when mideleg[n]=0 and mvien[n]=1
The AIA spec specifies the sip[n] behavior conditionally: (1) When mideleg[n]=0 and mvien[n]=0, sip[n] is read-only 0. (2) When mideleg[n]=0 and mvien[n]=1, sip[n] is an alias of mvip[n]. (3) When mideleg[n]=1, sip[n] is an alias of mip[n]. Points (1) and (3) describe the same behavior without AIA. This commit provides the behavior of point (2).
Configuration menu - View commit details
-
Copy full SHA for e424405 - Browse repository at this point
Copy the full SHA e424405View commit details -
AIA: Let sie[n] be writable when mideleg[n]=0 and mvien[n]=1
The AIA spec specifies the sie[n] behavior conditionally: (1) When mideleg[n]=0 and mvien[n]=0, sie[n] is read-only 0. (2) When mideleg[n]=0 and mvien[n]=1, sie[n] is writable. (3) When mideleg[n]=1, sie[n] is an alias of mie[n]. Points (1) and (3) describe the same behavior without AIA. This commit provides the behavior of point (2).
Configuration menu - View commit details
-
Copy full SHA for f387588 - Browse repository at this point
Copy the full SHA f387588View commit details -
Configuration menu - View commit details
-
Copy full SHA for e7a6027 - Browse repository at this point
Copy the full SHA e7a6027View commit details -
Configuration menu - View commit details
-
Copy full SHA for 56adf18 - Browse repository at this point
Copy the full SHA 56adf18View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1e0f3f5 - Browse repository at this point
Copy the full SHA 1e0f3f5View commit details -
All bytes of the supervisor-level iprio array are read-only 0s, and stopi.IPRIO is always 1 whenever stopi is not 0.
Configuration menu - View commit details
-
Copy full SHA for 6cf0f2b - Browse repository at this point
Copy the full SHA 6cf0f2bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 243b2e1 - Browse repository at this point
Copy the full SHA 243b2e1View commit details -
Configuration menu - View commit details
-
Copy full SHA for c4b02ad - Browse repository at this point
Copy the full SHA c4b02adView commit details -
AIA: Add read-only 0 hviprio1 and hviprio2 CSRs (RV32-only hviprio1h …
…and hviprio2h CSRs)
Configuration menu - View commit details
-
Copy full SHA for 5346076 - Browse repository at this point
Copy the full SHA 5346076View commit details -
AIA: Add inaccessible vstopei CSR
AIA introduces the concept of inaccessible CSR, where accessing from M-mode or HS-mode raises an illegal instruction exception, but doing so from VS-mode or VU-mode raises a virtual instruction exception. Without IMSIC, mtopei and stopei do not exist. In contrast, vstopei is an inaccessible CSR even without IMSIC, i.e., exits and is HS-qualified. In summary, accessing stopei from M-mode or HS-mode (v=0) raises illegal instruction, and accessing stopei (actually vstopei) from VS-mode or VU-mode (v=1) raises virtual instruction.
Configuration menu - View commit details
-
Copy full SHA for c214ff4 - Browse repository at this point
Copy the full SHA c214ff4View commit details -
AIA: Add hvictl CSR (no interrupt)
The pair hvictl.IID=9 and hvictl.IPRIO=0 generally represent no interrupt in hvictl. While zeroing also signifies no interrupt, this intermediate commit in the AIA series aims to explicitly state the absence of an interrupt condition to prevent confusion in subsequent intermediate commits.
Configuration menu - View commit details
-
Copy full SHA for 6d8504c - Browse repository at this point
Copy the full SHA 6d8504cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 74e42c0 - Browse repository at this point
Copy the full SHA 74e42c0View commit details -
refactor: Rename virtualized_stimecmp_csr_t to virtualized_with_speci…
…al_permission_csr_t
Configuration menu - View commit details
-
Copy full SHA for e3612d6 - Browse repository at this point
Copy the full SHA e3612d6View commit details -
AIA: Raise virtual instruction exception on acessing sie or sip (sieh…
… or siph) from VS-mode when hvictl.VTI=1
Configuration menu - View commit details
-
Copy full SHA for 5ea18ad - Browse repository at this point
Copy the full SHA 5ea18adView commit details -
AIA: Raise virtual instruction exception on writing stimecmp (stimecm…
…ph) from VS-mode when hvictl.VTI=1
Configuration menu - View commit details
-
Copy full SHA for db5dce7 - Browse repository at this point
Copy the full SHA db5dce7View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5460369 - Browse repository at this point
Copy the full SHA 5460369View commit details -
AIA: Implement hvictl.VTI behavior in vstopi CSR
If hvictl.VTI=0, vstopi returns information about the highest-priority pending-and-enabled major interrupt indicated by vsip and vsie. If hvictl.VTI=1, vstopi return information about a supervisor extenal interrupt if bit 9 is one in both vsip and vsie.
Configuration menu - View commit details
-
Copy full SHA for e14574b - Browse repository at this point
Copy the full SHA e14574bView commit details -
AIA: Implement hvictl.IID and hvictl.DPR behavior in vstopi CSR
If hvictl.VTI=1, there are two interrupt candidates for VS level. One is a supervisor extenal interrupt if bit 9 is one in both vsip and vsie. The other one is specified by hvictl.IID if hvictl.IID is not 9. The hvictl.DPR determines the priority order between two interrupts.
Configuration menu - View commit details
-
Copy full SHA for 511d7e1 - Browse repository at this point
Copy the full SHA 511d7e1View commit details -
AIA: Implement hvictl.IPRIOM and hvictl.IPRIO behavior in vstopi CSR
If hvictl.IPRIOM=1, vstopi.IPRIO indicates the priority of the highest-priority interrupt if vstopi is nonzero. For a supervisor external interrupt, vstopi.IPRIO is hvictl.IPRIO if hvictl.IID=9 and hvictl.IPRIO!=0; otherwise, vstopi.IPRIO is 255. For other interrupts under hvictl.VTI=1, vstopi.IPRIO is 0 if hvictl.iprio=0 and hvictl.dpr=0; vstopi.IPRIO is hvictl.iprio if hvictl.iprio!=0; vstopi.IPRIO is 255 if hvictl.iprio=0 and hvictl.dpr=1. For other interrupts under hvictl.VTI=0, vstopi.IPRIO is 255 (lowest priority). That is because other interrupts have the same priority value 0 due to hviprio1=hviprio2=0. In other words, the hvictl.IPRIO of other interrupts is determined by the default priority, which is lower than the SEI with the lowest priority value 255.
Configuration menu - View commit details
-
Copy full SHA for f574b32 - Browse repository at this point
Copy the full SHA f574b32View commit details -
AIA: Permit supervisor-level interrupts even while corresponding bits…
… in mideleg remain 0s (interrupt filtering) The modification is backward compatible because mvien is implicitly 0 without AIA.
Configuration menu - View commit details
-
Copy full SHA for 62b05b6 - Browse repository at this point
Copy the full SHA 62b05b6View commit details -
Configuration menu - View commit details
-
Copy full SHA for c774289 - Browse repository at this point
Copy the full SHA c774289View commit details -
AIA: Take interrupts at VS level through vstopi instead of vsip and vsie
An interrupt is pending at VS level if and only if vstopi is not 0. The modification is backward compatible because hvictl is implicitly 0 without AIA.
Configuration menu - View commit details
-
Copy full SHA for ad7c922 - Browse repository at this point
Copy the full SHA ad7c922View commit details -
Configuration menu - View commit details
-
Copy full SHA for d854584 - Browse repository at this point
Copy the full SHA d854584View commit details -
Configuration menu - View commit details
-
Copy full SHA for f07a39b - Browse repository at this point
Copy the full SHA f07a39bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 4fe9c8e - Browse repository at this point
Copy the full SHA 4fe9c8eView commit details -
Smstateen: Implement *stateen0[59] controlling CSRs hvien(h), hvictl,…
… hviprio[12](h), and supervisor-level iprio array
Configuration menu - View commit details
-
Copy full SHA for 7471db2 - Browse repository at this point
Copy the full SHA 7471db2View commit details -
Configuration menu - View commit details
-
Copy full SHA for e70ef4f - Browse repository at this point
Copy the full SHA e70ef4fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 4dcaff0 - Browse repository at this point
Copy the full SHA 4dcaff0View commit details -
Smstateen: Implement *stateen0[59] controlling RV32-only CSRs (v)siph…
…, (v)sieh, hidelegh, and hviph
Configuration menu - View commit details
-
Copy full SHA for d50bf54 - Browse repository at this point
Copy the full SHA d50bf54View commit details