Skip to content

Commit

Permalink
CSR: optionally set delegable hypervisor exceptions
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.
  • Loading branch information
poemonsense committed Jun 29, 2023
1 parent 43e0af1 commit a4afd56
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 a4afd56

Please sign in to comment.