Skip to content

Commit

Permalink
CSR: optionally set delegable hypervisor exceptions (#3401)
Browse files Browse the repository at this point in the history
Given that usingHypervisor is used to distinguish whether the hardware
supports hypervisor extensions, we should use it for the delegable
exceptions as well.

(cherry picked from commit 026f4c9)
  • Loading branch information
poemonsense authored and mergify[bot] committed Jun 30, 2023
1 parent 1afa32a commit 0320cfb
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions src/main/scala/rocket/CSR.scala
Original file line number Diff line number Diff line change
Expand Up @@ -424,7 +424,7 @@ class CSRFile(

(sup.asUInt | supported_high_interrupts, del.asUInt)
}
val delegable_exceptions = Seq(
val delegable_base_exceptions = Seq(
Causes.misaligned_fetch,
Causes.fetch_page_fault,
Causes.breakpoint,
Expand All @@ -434,11 +434,18 @@ class CSRFile(
Causes.misaligned_store,
Causes.illegal_instruction,
Causes.user_ecall,
)
val delegable_hypervisor_exceptions = Seq(
Causes.virtual_supervisor_ecall,
Causes.fetch_guest_page_fault,
Causes.load_guest_page_fault,
Causes.virtual_instruction,
Causes.store_guest_page_fault).map(1 << _).sum.U
Causes.store_guest_page_fault,
)
val delegable_exceptions = (
delegable_base_exceptions
++ (if (usingHypervisor) delegable_hypervisor_exceptions else Seq())
).map(1 << _).sum.U

val hs_delegable_exceptions = Seq(
Causes.misaligned_fetch,
Expand Down

0 comments on commit 0320cfb

Please sign in to comment.