diff options
author | Martin Berger <contact@martinfriedrichberger.net> | 2024-04-30 09:33:57 +0100 |
---|---|---|
committer | Bill McSpadden <bill@riscv.org> | 2024-05-07 19:56:04 -0500 |
commit | 5c55b5bb6f6d69dc3ff58a2ce9b25c4e582f6e88 (patch) | |
tree | 87652b9baf9ecae2b7920ba14606d05c5a210bd3 /model | |
parent | 418cf128bf212058dfc6a9a3d952edf2a61ce920 (diff) | |
download | sail-riscv-5c55b5bb6f6d69dc3ff58a2ce9b25c4e582f6e88.zip sail-riscv-5c55b5bb6f6d69dc3ff58a2ce9b25c4e582f6e88.tar.gz sail-riscv-5c55b5bb6f6d69dc3ff58a2ce9b25c4e582f6e88.tar.bz2 |
Add Svinval extension.
These changes add the "Svinval" Standard Extension for Fine-Grained
Address-Translation Cache Invalidation, Version 1.0 to the sail-riscv
model.
This extension defines five new instructions: SINVAL.VMA,
SFENCE.W.INVAL, SFENCE.INVAL.IR, HINVAL.VVMA, HINVAL.GVMA.
HINVAL.VVMA & HINVAL.GVMA are omitted since they build on the
Hypervisor Extension which is yet to be included in the model.
SFENCE.W.INVAL & SFENCE.INVAL.IR are treated as nops pending
integration of the coherency model (rmem) with sail.
The specification says that SINVAL.VMA behaves just as SFENCE.VMA,
except there are additional ordering constraints with respect to the
new SFENCE.W.INVAL & SFENCE.INVAL.IR instructions. Since these are
nops, we can treat SINVAL.VMA as if it were SFENCE.VMA.
Co-authored-by: Kristin Barber <kristinbarber@google.com>
Diffstat (limited to 'model')
-rw-r--r-- | model/riscv_insts_svinval.sail | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/model/riscv_insts_svinval.sail b/model/riscv_insts_svinval.sail index ea74838..168fb17 100644 --- a/model/riscv_insts_svinval.sail +++ b/model/riscv_insts_svinval.sail @@ -30,7 +30,7 @@ mapping clause encdec = function clause execute SFENCE_W_INVAL() = { if cur_privilege == User then { handle_illegal(); RETIRE_FAIL } - else { RETIRE_SUCCESS } + else { RETIRE_SUCCESS } // Implemented as no-op as all memory operations are visible immediately the current Sail model } mapping clause assembly = SFENCE_W_INVAL() <-> "sfence.w.inval" @@ -46,7 +46,7 @@ mapping clause encdec = function clause execute SFENCE_INVAL_IR() = { if cur_privilege == User then { handle_illegal(); RETIRE_FAIL } - else { RETIRE_SUCCESS } + else { RETIRE_SUCCESS } // Implemented as no-op as all memory operations are visible immediately in current Sail model } mapping clause assembly = SFENCE_INVAL_IR() <-> "sfence.inval.ir" |