From nobody Fri May 3 13:20:39 2024 Delivered-To: importer@patchew.org Received-SPF: temperror (zoho.com: Error in retrieving data from DNS) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1557158069; cv=none; d=zoho.com; s=zohoarc; b=S7+Lh8KQ0QBOIpqe3IoJHD1Hmt+HvU2dYgO5p1o4lB5K/wt1mrtV6Bhhtl5834XuFnRpYVmhMMAuhjSv1Mk6Q79UyumncT3EP0wTeOscKl0zYB7FNhv5Q3hKxg8fIgGtiMwIyv/m6JGhPH7i4tTyMyycKRdS7moOv9y8GPQU+mM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557158069; h=Content-Type:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To:ARC-Authentication-Results; bh=CW+oLSWZj4PKKSX7IrcsDp2qqOfUIavmL3M27PwE0i8=; b=UXmJ5FEbceqPKGqsspT8Ba4oTeLDDEBPgT06xIO6eDZqsqU+A5DO3nTSjVFsZS9K2fHMl3VirWPi81ab3ts9aBF8AVi2/jOcNoMtEU49SAHXApNW96iVuktAjUbwitn+punsyGhw+R8uLvRwoMHAS3D3Mq4M3wP+5SCkIBWe3vE= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557158069366125.86585678239419; Mon, 6 May 2019 08:54:29 -0700 (PDT) Received: from localhost ([127.0.0.1]:58519 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hNfwR-0005wF-8L for importer@patchew.org; Mon, 06 May 2019 11:54:11 -0400 Received: from eggs.gnu.org ([209.51.188.92]:41215) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hNfvW-0005cf-Uy for qemu-devel@nongnu.org; Mon, 06 May 2019 11:53:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hNfvV-0008Nt-SE for qemu-devel@nongnu.org; Mon, 06 May 2019 11:53:14 -0400 Received: from mail-lj1-x241.google.com ([2a00:1450:4864:20::241]:33372) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hNfvV-0008L5-Kb; Mon, 06 May 2019 11:53:13 -0400 Received: by mail-lj1-x241.google.com with SMTP id f23so11559431ljc.0; Mon, 06 May 2019 08:53:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to:cc; bh=KHavCqKvy5hytza/0TzF9855TIZSWm0TzjfnbXQH0cw=; b=AtL0d3H81swLS4uZt18XiT02PWvQ7TTncUH0e3VYMlljn8XPo/O6MZXoZ+zvHulxMk AAaYPmYdHa4LA8WoSteZ2GdpC0KVB4YDNdWrqnZ+PaCUGzveM7C9kdMjqzw741EMuBl8 DJxyR6YauFruSUmFMee8Ya5WZsM4VXabUnqpi958sezCNm/NARWYZi9aYktrozB3llcd YA+1qE8VLfsKnuCSTwcZFJ0fw6OMZD6T2b36BhPgFVw1gUpYh6mMOrdZtnv7vRCZ+35e rfUaRXSWKm0YA1huKCtvoKu7UtEp1VzJlAmUy0HqOkTdz4mFGO/7Wy/D5fouv9aL7yII s21Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=KHavCqKvy5hytza/0TzF9855TIZSWm0TzjfnbXQH0cw=; b=drBCqpz2Pc4UdTxZyFcJhVLgwdT2LXRwRTL6PZdGNaL/vV9p2HQ9kokKbyIQt5G1hC 38lXNAhD3BKs8M6yLhY8wR/nzPto8OYd3R5RGZ9pcD7vtsyj9bTUHOJuAqhEprijW/g0 RfCRXWg5ytvGtV64+fS6D2cUWPw4SSwZbfMjE4PKDE9OTreoSQbg/ABRJsCnwZt+Eud6 aafCpkUMwIuVTEBas1MoAKpY6QTpR0dbkzxQqKLyJ7syCQ5Mk/X84oUu/BOGiyxfTByV Y9U5/uTSAy532R+qJB4IF+tWby0Sk6GQSc7L54oa5JHfyjyR3qtmeE/8OxhBSC1qlsU7 67Kg== X-Gm-Message-State: APjAAAWqtNID8hUQkQ+MS+zb5JaAMWPF4XNUUJ/0rjjc5uLTmFKMzmWi 6Cqfb2W1lDt7yvxwebuZ846VyeHsv9v19KUkIt/c6kEy X-Google-Smtp-Source: APXvYqxeKzabLDw6/7De7vQ6oF/DFmc0qw+VGkv3cVndTzmTVb40jxAslvoBJyLtY5DuzAGmtLJe9l8X5q1moeBlos0= X-Received: by 2002:a2e:84ce:: with SMTP id q14mr14315801ljh.80.1557157989829; Mon, 06 May 2019 08:53:09 -0700 (PDT) MIME-Version: 1.0 From: Jonathan Behrens Date: Mon, 6 May 2019 11:52:43 -0400 Message-ID: To: "qemu-devel@nongnu.org Developers" X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::241 X-Content-Filtered-By: Mailman/MimeDel 2.1.21 Subject: [Qemu-devel] [PATCH for 4.1] target/riscv: More accurate handling of `sip` CSR X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Alistair Francis , Palmer Dabbelt , "open list:RISC-V" , Sagar Karandikar , Bastian Koppelmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" According to the spec, "All bits besides SSIP, USIP, and UEIP in the sip register are read-only." Further, if an interrupt is not delegated to mode x, then "the corresponding bits in xip [...] should appear to be hardwired to zero. This patch implements both of those requirements. Signed-off-by: Jonathan Behrens --- target/riscv/csr.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/target/riscv/csr.c b/target/riscv/csr.c index 1ec1222da1..fff7d834e8 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -246,6 +246,7 @@ static const target_ulong sstatus_v1_9_mask =3D SSTATUS_SIE | SSTATUS_SPIE | static const target_ulong sstatus_v1_10_mask =3D SSTATUS_SIE | SSTATUS_SPI= E | SSTATUS_UIE | SSTATUS_UPIE | SSTATUS_SPP | SSTATUS_FS | SSTATUS_XS | SSTATUS_SUM | SSTATUS_MXR | SSTATUS_SD; +static const target_ulong sip_writable_mask =3D SIP_SSIP | MIP_USIP | MIP_UEIP; #if defined(TARGET_RISCV32) static const char valid_vm_1_09[16] =3D { @@ -694,8 +695,10 @@ static int write_sbadaddr(CPURISCVState *env, int csrno, target_ulong val) static int rmw_sip(CPURISCVState *env, int csrno, target_ulong *ret_value, target_ulong new_value, target_ulong write_mask) { - return rmw_mip(env, CSR_MSTATUS, ret_value, new_value, - write_mask & env->mideleg); + int ret =3D rmw_mip(env, CSR_MSTATUS, ret_value, new_value, + write_mask & env->mideleg & sip_writable_mask); + *ret_value &=3D env->mideleg; + return ret; } /* Supervisor Protection and Translation */ --=20 2.20.1