On Sat, Oct 12, 2024 at 4:52 AM Ved Shanbhogue <v...@rivosinc.com> wrote: > > Alistair Francis wrote: > >> When the Ssdbltrp extension is enabled, SSTATUS.SDT field is cleared > >> when executing sret. When executing mret/mnret, SSTATUS.SDT is cleared > >> when returning to U, VS or VU and VSSTATUS.SDT is cleared when returning > >> to VU from HS. > > > >I don't see mret being mentioned in the spec. Where do you see that > >V/SSTATUS.SDT should be cleared? > > > > Ssdbltrp specifies: > In S-mode, the SRET instruction sets sstatus.SDT to 0, > and if the new privilege mode is VU, it also sets > vsstatus.SDT to 0. However, in VS-mode, only vsstatus.SDT > is set to to 0.
I cannot find this $ git show --shortstat commit ef2ec9dc9afd003d0dab6d5ca36db59864c8483c (HEAD -> main, tag: riscv-isa-release-ef2ec9d-2024-10-16, origin/main) Author: Andrew Waterman <and...@sifive.com> Date: Wed Oct 16 12:09:41 2024 -0700 Remove future tense from description of now-ratified text (#1685) 2 files changed, 8 insertions(+), 15 deletions(-) $ grep -r sstatus.SDT | grep SRET src/hypervisor.adoc:if the new privilege mode is VU, the `SRET` instruction sets `vsstatus.SDT` What am I missing here? Alistair > > The MRET instructions sets sstatus.SDT to 0, if the new > privilege mode is U, VS, or VU. Additionally, if it is > VU, then vsstatus.SDT is also set to 0. > > Smdbltrp specifies: > The MRET and SRET instructions, when executed in M-mode, > set the MDT bit to 0. If the new privilege mode is U, VS, > or VU, then sstatus.SDT is also set to 0. Additionally, > if it is VU, then vsstatus.SDT is also set to 0. > > The MNRET instruction sets the MDT bit to 0 if the new > privilege mode is not M. If it is U, VS, or VU, then > sstatus.SDT is also set to 0. Additionally, if it is VU, > then vsstatus.SDT is also set to 0. > > regards > ved