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.
  • Loading branch information
poemonsense committed Jun 29, 2023
1 parent 43e0af1 commit 026f4c9
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions src/main/scala/rocket/CSR.scala
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 026f4c9

Please sign in to comment.