From patchwork Tue Apr 16 12:57:22 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 1086298 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="c4f+R1n+"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 44k5B303nSz9s5c for ; Tue, 16 Apr 2019 23:02:19 +1000 (AEST) Received: from localhost ([127.0.0.1]:36322 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hGNj7-0007Zi-1O for incoming@patchwork.ozlabs.org; Tue, 16 Apr 2019 09:02:17 -0400 Received: from eggs.gnu.org ([209.51.188.92]:34369) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hGNf2-0004Vf-II for qemu-devel@nongnu.org; Tue, 16 Apr 2019 08:58:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hGNez-00016M-1k for qemu-devel@nongnu.org; Tue, 16 Apr 2019 08:58:02 -0400 Received: from mail-wr1-x444.google.com ([2a00:1450:4864:20::444]:34507) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hGNev-00012p-9x for qemu-devel@nongnu.org; Tue, 16 Apr 2019 08:57:59 -0400 Received: by mail-wr1-x444.google.com with SMTP id p10so26959475wrq.1 for ; Tue, 16 Apr 2019 05:57:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=6cCVRnIqDr1YlxNV4JvcQbdEHcgddBmMkialjOjujLk=; b=c4f+R1n+jjnEslMRaVeRaR6ItZ5Mw1u+NmUqBlFdCRt0wh83Y76IWliCl2MB5evha/ VdLNuhgxNjWwmmlkSA3m5/B/I/4d9yJz1NxhNHjOhIxOkC2EaPInzU+TrXG/O34GlqfM ZmxEJhCi94tuUOGnsZIQZJlZ1Pn4v3PvIoyzXDJDepjoRQ9vD+2Ua5OLQW4yTPBPwz7o dppuCApRJ6d+8kybhp004Z1gJ+037lSjr9XpmUXakMzbBhwNWEzA2R+dWtMe6TAhVq/6 MBCCp6gnRZ64THuI4ZT0wswx8szE3/HrpuX8Nw2L0nZq3G8msGk2bucTUAGjcbeBT7Wp GESw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6cCVRnIqDr1YlxNV4JvcQbdEHcgddBmMkialjOjujLk=; b=meQZJ2jB1NhzNycOBYkI1FrLs2hSxptiob176sz+4dsTZO7zm2Jcg3JhXZ/U7Wcklx Qk1adRpSyI1BNl6k+3ahBLOgFBD3PZRZ65lqd4hY24eKWod8jvoKjyp60fN4ds0/nQ+W vt62IkKPdlcGrK7k9cCtxaOqSGRtUQyF8ySQfJU9fRaGd0nW051D+gey61ip0+CgjPZr 4ykzhK/imP6Ff3/UU/sE34JJfQQ7badkTcVNL3FR0IINwMHnMRnavsB5KnI1jRyVPOZj X/O/i271Cpo0avaN3EiZp+1GvmLMEqDQqii3HqXT3njIomv/egjx3LoWY6o8gemCeI/w hp+w== X-Gm-Message-State: APjAAAXzdDU1kafTCVuzBjMNX5L2j4UOB0gTrUO9sjK9iWWOLWaujBVR fM+Za4aDWv3NvTjha/sycTxXWQ== X-Google-Smtp-Source: APXvYqxCheZt7DalEk/3eS6/S984Feaz4yZqP3+I7clWmS1jeCRDFgKgatHvtt6l97CZTdxlrxHq2Q== X-Received: by 2002:adf:b6a4:: with SMTP id j36mr50713225wre.55.1555419475203; Tue, 16 Apr 2019 05:57:55 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id v184sm39476572wma.6.2019.04.16.05.57.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Apr 2019 05:57:54 -0700 (PDT) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Date: Tue, 16 Apr 2019 13:57:22 +0100 Message-Id: <20190416125744.27770-5-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190416125744.27770-1-peter.maydell@linaro.org> References: <20190416125744.27770-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::444 Subject: [Qemu-devel] [PATCH 04/26] target/arm: Disable most VFP sysregs for M-profile 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: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The only "system register" that M-profile floating point exposes via the VMRS/VMRS instructions is FPSCR, and it does not have the odd special case for rd==15. Add a check to ensure we only expose FPSCR. Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson --- target/arm/translate.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/target/arm/translate.c b/target/arm/translate.c index d408e4d7ef4..d56488ec847 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -3512,12 +3512,27 @@ static int disas_vfp_insn(DisasContext *s, uint32_t insn) } } } else { /* !dp */ + bool is_sysreg; + if ((insn & 0x6f) != 0x00) return 1; rn = VFP_SREG_N(insn); + + is_sysreg = extract32(insn, 21, 1); + + if (arm_dc_feature(s, ARM_FEATURE_M)) { + /* + * The only M-profile VFP vmrs/vmsr sysreg is FPSCR. + * Writes to R15 are UNPREDICTABLE; we choose to undef. + */ + if (is_sysreg && (rd == 15 || (rn >> 1) != ARM_VFP_FPSCR)) { + return 1; + } + } + if (insn & ARM_CP_RW_BIT) { /* vfp->arm */ - if (insn & (1 << 21)) { + if (is_sysreg) { /* system register */ rn >>= 1; @@ -3584,7 +3599,7 @@ static int disas_vfp_insn(DisasContext *s, uint32_t insn) } } else { /* arm->vfp */ - if (insn & (1 << 21)) { + if (is_sysreg) { rn >>= 1; /* system register */ switch (rn) {