qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug 1851939] Re: RISC-V mstatus TSR bit not correctly implemented


From: Laurent Vivier
Subject: [Bug 1851939] Re: RISC-V mstatus TSR bit not correctly implemented
Date: Thu, 30 Apr 2020 13:37:33 -0000

Fixed here:
https://git.qemu.org/?p=qemu.git;a=commitdiff;h=ed5abf46b3c4


** Changed in: qemu
       Status: New => Fix Released

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1851939

Title:
  RISC-V mstatus TSR bit not correctly implemented

Status in QEMU:
  Fix Released

Bug description:
  Hi,

  since qemu 4.1.0 the TSR bit in mstatus register is supported. But it
  does not allow for executing sret in m-mode.

  From the RISC-V specifications:
  "When TSR=1, attempts to execute SRET while executing in S-mode will raise an 
illegal instruction
  exception. When TSR=0, this operation is permitted in S-mode."

  This means an exception should only be raised when executing in S-mode, but 
not in M-mode, hence you should change the condition in helper_sret 
(target/riscv/op_helper.c) from:
       if (env->priv_ver >= PRIV_VERSION_1_10_0 &&
            get_field(env->mstatus, MSTATUS_TSR))
  to:
       if (env->priv_ver >= PRIV_VERSION_1_10_0 &&
            get_field(env->mstatus, MSTATUS_TSR) && !(env->priv >= PRV_M))

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1851939/+subscriptions



reply via email to

[Prev in Thread] Current Thread [Next in Thread]