From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890033; cv=none; d=zohomail.com; s=zohoarc; b=e6plPxkW2Igf7RNQkYfuRymXUthvZTsT4yLbLKeYKD7KEHiQ34k0rKcNVAAFA0lobxGxReOpDH/NtpBSCQvy6Nv9p9C5d8o5PBaRNh5J14I9GmWqMjZZb0la3zB6n1nAbbXGshwhjgTgMZ4qhXsPVyhYkTuKOnwuMmLnZaE7UMc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890033; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=+Qj3xRWO6EliICZrXOPzUaS0C7IplaZERqwK2dfygrE=; b=J4j4gWNLGatg/pb11lJgZkNKaIiASNxPmWpNdlDkgyhT+M+u65ThDMuwoO3dnpSB9uQGdC0sP+VCS1PrdCUp18HNCX4HU7pX1fB2uetg4AT+YZEjVoAeT++XVHPXQrWtu60fR02FDWmuED6xS1aBitrYxfDqvn0fe4Zw5676tiI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890033605951.718634857448; Mon, 31 Aug 2020 09:07:13 -0700 (PDT) Received: from localhost ([::1]:54052 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmKu-0004sk-CO for importer@patchew.org; Mon, 31 Aug 2020 12:07:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33330) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmJv-0003OW-D1 for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:11 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]:45381) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmJr-0005td-SW for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:11 -0400 Received: by mail-pl1-x633.google.com with SMTP id bh1so3225950plb.12 for ; Mon, 31 Aug 2020 09:06:07 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=+Qj3xRWO6EliICZrXOPzUaS0C7IplaZERqwK2dfygrE=; b=SKkgiQZCcBx65/es52wy/nSwOdefuy/15lslalGHa1xke3Zb682mUXlbBDPgqExu1+ zHb8B9oAH8BBr2O2WVxaIDt/p4NfTQn3dFzfkNm905F3P1ItqRqtKKnTnjJQEHzY3IsL VIXiiOBUmNukMpBilArRX7GOQ08HMhhcNXUni8Gg44ep2EQXJxkqZO20/Dp5Sxkr4krE rXPMGGQd5OUgpymcIqwEViebExSpswDAaG5HJyivIDEI26M23j2ssWqtX84O+G2HYhOB +MBwD5put/b1gTtUYVNqlqe6DNjBRW9Fqpu7LUPT2rGadhCzhjGtY452qaTK2ptZO1HY L5ng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=+Qj3xRWO6EliICZrXOPzUaS0C7IplaZERqwK2dfygrE=; b=AmlPO07cwkJh5rpszbAgAJz3OQ9AeAdisQbAtpTAqeBxrWv1xkb2MbXQXG1c6Xwy83 nUGL5IsQDJdSto/Gfe/Cp0I1+FA+g5NUWIbuJtgmRDXhzrm6fGWln7iNKE35cZemyVCD r52yb8TlNttQP1QX1oYJKqovGUPiHSyc6EZd0jkhHGQ+VI4c5WBnwzWL5tyVxHGk0Jwn OM7uqHvmFvMsX+hh7/+lgOJHhS/yh1BiJcrsxWjgo/KftZN3u5ZUIqEB46j2PPAgPhkX HXLJl1Vp+AXgp6EPz/5eYGl/o/gKLJ/4xEoUvzCvPlaNofZOiQbpFuAbcn0mOby3bEAm w92Q== X-Gm-Message-State: AOAM532CvhNLglFJ4UkaLtEBBOCvi1h6c0xipvL6F/8wGf5DoRQvOcJ2 E2VfhvuzSebmm/XPTrU1Gqyr6AU0kkmb4Q== X-Google-Smtp-Source: ABdhPJyYXgbdbcDN/qe/CXQPNYVsBLr4U4U5+Tv9bqq24SHnnGDsCFZsHtpbVZbTaSCkKgNS0EjNXg== X-Received: by 2002:a17:902:7083:: with SMTP id z3mr1503304plk.187.1598889965788; Mon, 31 Aug 2020 09:06:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 01/76] tests/tcg: Add microblaze to arches filter Date: Mon, 31 Aug 2020 09:04:46 -0700 Message-Id: <20200831160601.833692-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Not attempting to use a single cross-compiler for both big-endian and little-endian at this time. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- tests/tcg/configure.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/tcg/configure.sh b/tests/tcg/configure.sh index 7d714f902a..598a50cd4f 100755 --- a/tests/tcg/configure.sh +++ b/tests/tcg/configure.sh @@ -94,7 +94,7 @@ for target in $target_list; do xtensa|xtensaeb) arches=3Dxtensa ;; - alpha|cris|hppa|i386|lm32|m68k|openrisc|riscv64|s390x|sh4|sparc64) + alpha|cris|hppa|i386|lm32|microblaze|microblazeel|m68k|openrisc|riscv6= 4|s390x|sh4|sparc64) arches=3D$target ;; *) --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890135; cv=none; d=zohomail.com; s=zohoarc; b=EuhILkty7Xam5yKLIJwZDhr9MPuEhfSoxxilFq3wW0tY3ZOa41artikMZs7lKXEt0db5tgcoBTxU85MbawWcMRAUOaZuVXOkS9Bste/anAzcX3tzYOHU4hFX5tlAqZulqXO6pj+CbHWVHZmhzy6Go8yx/vaczkG5m8mDYR3TsKo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890135; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=4SYcyC7WRrB7DQoqG8Jlb5pwufeHvMZ+/v7u+myx2PU=; b=UB/pK1CJvc3EiIPibje4FOyrS4ndmIdQPXTk0/RnPqCTW2JVjgolGHQP+6Aj6dCtlU5e/zCiXOyENqoEYzgg2eGIwRkVJ93yuqMyW/KEGLSb3w2AzlgDrlwsfbJdeAHXII92gvBGfcV37/LQ+vtT2Oyv8vE3/5j8I5F95fdntTU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890135850988.4370619012154; Mon, 31 Aug 2020 09:08:55 -0700 (PDT) Received: from localhost ([::1]:34162 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmMZ-0008Rx-2q for importer@patchew.org; Mon, 31 Aug 2020 12:08:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33372) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmJw-0003Od-Ih for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:12 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]:54427) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmJs-0005tk-US for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:12 -0400 Received: by mail-pj1-x1034.google.com with SMTP id mm21so21775pjb.4 for ; Mon, 31 Aug 2020 09:06:08 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4SYcyC7WRrB7DQoqG8Jlb5pwufeHvMZ+/v7u+myx2PU=; b=d7LhMucORIONCqg2i3gR/PrClkr4YL03oYPiyxNr/RkK2dgmxxE5WzAAGw9tI7g8uw VkIueu2ZfbdZVl7+FVcWh4VDqmAW5Xs2xUYy34E7n3pDGw4fN4K6yB88C6kLUHf16mt4 csGmS+B7F2S4GhH3F7Eh762+Jc6s7z3PfZMlVTFxtW+ZrWXIyZ0RTABM3ehB7jhlqvht q/O3qJovqQx8IUHc7+PQ/lGz9T10sq7T7ZGxVZsYT1gNOhKOHjJxo5MKSl0bIERUuafD j3LjlPEj6CPxQ5giBYlkTeWbV0n4NkJt4YqIRE118qgSks9jMWzdvOWt4dqR69dLZAyw nTMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4SYcyC7WRrB7DQoqG8Jlb5pwufeHvMZ+/v7u+myx2PU=; b=pYPLuQCN2eEtEvTHCBOIBofoX2NLItZQ6VHEhGzemCkZRzTWGL+HY21AP3TD08G7nC HeqpmAetWFlsZHQ6aPsVSiKLpD5J4qevnkvj4fv33Nvi2hBdcIsYBIWWq4XjSf1inuZ7 TZo6x16tRaky1CFXfOAnRqvplufbAWmPnbOGhLQkKsQlbF2dPkBTHp2Cs3GzggaGv4RX VzSK8HkckpvUrCZOfhKTc5LQxFABn1TiOsWqnJwuaIsKl89+PeU8FLlsa/mucJcG6sNE d1mneFvKJR2c1JPeiQgsb5mk34zYrkIdmW6ZUXkSq1wDWVHyZObtlQbuu/4dOl5jvAOh 1fbg== X-Gm-Message-State: AOAM5301i3APVgHE1N09zEpYJjSw44IVnhmsls00Z+yAnup+alDMfN+A FqJ0+P/ifZsAjkvYCbT4luHKhknrGVUH8A== X-Google-Smtp-Source: ABdhPJzApW96pj/9JW00R2DM/ZzsuuHyUo76E2/pS4u+QZTw/0DuK3fJ6cxK9QblLD3p8DN3roFRFQ== X-Received: by 2002:a17:902:6902:: with SMTP id j2mr1554291plk.2.1598889967255; Mon, 31 Aug 2020 09:06:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 02/76] tests/tcg: Do not require FE_TOWARDZERO Date: Mon, 31 Aug 2020 09:04:47 -0700 Message-Id: <20200831160601.833692-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1034.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This is optional in ISO C, and not all cpus provide it. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- tests/tcg/multiarch/float_convs.c | 2 ++ tests/tcg/multiarch/float_madds.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/tests/tcg/multiarch/float_convs.c b/tests/tcg/multiarch/float_= convs.c index 47e24b8b16..e9be75c2d5 100644 --- a/tests/tcg/multiarch/float_convs.c +++ b/tests/tcg/multiarch/float_convs.c @@ -30,7 +30,9 @@ float_mapping round_flags[] =3D { #ifdef FE_DOWNWARD { FE_DOWNWARD, "downwards" }, #endif +#ifdef FE_TOWARDZERO { FE_TOWARDZERO, "to zero" } +#endif }; =20 static void print_input(float input) diff --git a/tests/tcg/multiarch/float_madds.c b/tests/tcg/multiarch/float_= madds.c index eceb4ae38b..e422608ccd 100644 --- a/tests/tcg/multiarch/float_madds.c +++ b/tests/tcg/multiarch/float_madds.c @@ -29,7 +29,9 @@ float_mapping round_flags[] =3D { #ifdef FE_DOWNWARD { FE_DOWNWARD, "downwards" }, #endif +#ifdef FE_TOWARDZERO { FE_TOWARDZERO, "to zero" } +#endif }; =20 =20 --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890138; cv=none; d=zohomail.com; s=zohoarc; b=eq9ES1WtJPMj493jjlhkEoBNCjxK2C7U1ewom5Xg66k+DBCsKIxj0vdn+72ahueAbQ2tSts9k32sj6YO42Z9FcHe4vYhdrcK5/uWHGa9y6HKxDdHkjr3H/JJ+Fg5sGw97Qbcj05f2dStlToJ0FLbkhVMAbasqWMX1jFCbewJRo8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890138; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=unhCEa+c++7uk9+yQ2XBvkX8JjrsH/tZ97/HnRS/zo4=; b=hLSzAlwfSLPYRPMqJ3qKkhlraXv3HLIfo2SRmD+cll6WbLFzo5quR661drVCNszRREwXp7A8p/uCQFR8zi+xAVswgXGhL6gunhFE17NLYg5zpUkESAOnYRXAb8pmRW3akAIYF5j402SufC4LaX3WKJT2DMVtls2bUneDi6ZAq6E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890138949906.0569622819919; Mon, 31 Aug 2020 09:08:58 -0700 (PDT) Received: from localhost ([::1]:34570 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmMc-0000AF-6c for importer@patchew.org; Mon, 31 Aug 2020 12:08:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33410) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmJx-0003Q0-P5 for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:13 -0400 Received: from mail-pg1-x52b.google.com ([2607:f8b0:4864:20::52b]:35753) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmJu-0005tw-C0 for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:13 -0400 Received: by mail-pg1-x52b.google.com with SMTP id g29so841030pgl.2 for ; Mon, 31 Aug 2020 09:06:09 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=unhCEa+c++7uk9+yQ2XBvkX8JjrsH/tZ97/HnRS/zo4=; b=C9aKhV9zcNFwgMhf9cj1IdJ6dZpAscIBprz8wWvT4iq1HxyeIhWeoE2VtqQrvMtQR0 0WwEXOWTUMLxTzWhS/zD+9pgo1PsD8xPooFp2LRoM6TBg9sOhfJtvCBaBgOrpL1jU+Cr mydkkEKeZAbg0CpprObEX7u3HyADIbQZIrTUza6MyZh+vHUSJmETbF/KMEUypwqgoIHL iullAOCQ5GgQa66sHqU6qbQ4AwyfO2BLYdPAcwROSoleU8BptHLBcEWuKzTSPtWxlx5X ZH2TdRASkkZeygNNUChr2uRX3zpZPnbTCOJg7xWCvcS0rs+PYeqBssJ2UHR749aTAjZi A5yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=unhCEa+c++7uk9+yQ2XBvkX8JjrsH/tZ97/HnRS/zo4=; b=JIb+WNNxvKgkUl42KfJOtWz/tPQBiolD/47Ex4BIbY+GxOKHnzzKCVwIc5nGV4f9ji 8pGsanQegVnbW8a6w0uRozhKm39xUfIuBOuGGb8Mxdq0e/XjO/py9AhXLRzgOJWTmNJs Fh7jF9SrQc8/CrchdqfYVJUHNF+tkFXyRM6QvganREbh531jhp4KvkYjtQz1N7ySy0vN 14z2wUXGnNdAn7qSatuQHp9uiubZVMcOHbpVxSIYLc5hJR92ZrfL3PN0JfMBKhyv+C5V 2Dyo/9o+f77gvTWUCKfQBLbqzuF6iUC0EHXNM/AlzQ5bedoNL4X6fzFggq3yrAJywx0/ zxvQ== X-Gm-Message-State: AOAM532uGYIiA7eVDa7z4rO4R4EoaApZSiNFK9oihSddzRLwXaL0+3HU mhi9aUbeAUgJukw3s6UUmvkUGwSpfQLWTw== X-Google-Smtp-Source: ABdhPJyDtqdok+j03nMpUOxHCp1UMzO12T+qf4sH0KLNQDn+FaqoB1MZ7t2tCHSudCIXc1U5J5Sz5w== X-Received: by 2002:a63:5c1a:: with SMTP id q26mr1788510pgb.223.1598889968668; Mon, 31 Aug 2020 09:06:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 03/76] tests/tcg: Do not require FE_* exception bits Date: Mon, 31 Aug 2020 09:04:48 -0700 Message-Id: <20200831160601.833692-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52b; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52b.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Define anything that is missing as 0, so that flags & FE_FOO is false for any missing FOO. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- tests/tcg/multiarch/float_helpers.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/tcg/multiarch/float_helpers.h b/tests/tcg/multiarch/floa= t_helpers.h index 6337bc66c1..309f3f4bf1 100644 --- a/tests/tcg/multiarch/float_helpers.h +++ b/tests/tcg/multiarch/float_helpers.h @@ -8,6 +8,23 @@ =20 #include =20 +/* Some hosts do not have support for all of these; not required by ISO C.= */ +#ifndef FE_OVERFLOW +#define FE_OVERFLOW 0 +#endif +#ifndef FE_UNDERFLOW +#define FE_UNDERFLOW 0 +#endif +#ifndef FE_DIVBYZERO +#define FE_DIVBYZERO 0 +#endif +#ifndef FE_INEXACT +#define FE_INEXACT 0 +#endif +#ifndef FE_INVALID +#define FE_INVALID 0 +#endif + /* Number of constants in each table */ int get_num_f16(void); int get_num_f32(void); --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890241; cv=none; d=zohomail.com; s=zohoarc; b=jeq3xs76+sBWiiK6NA+MEIs0RY+DSB73epp26u1Rs0n7ksd3xLCY/J5zRXUCwrlyftlljQDL9UVU17laL3O+LAToX0cBQU1Kw1NUmQVNz/P5YTAyJdhd/8SLPsJGN9X5N84u4BeQAsGwLUuWZq6v8yVGDN+U5PhDlMVp/CAo5Wk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890241; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=EAqHVd7k8qnFGYSw1XH+Q9LqQUEdcVQsZIdVmMRUJCo=; b=ZYxcNnEr3ho6SwUlb458KVCDHVNKlQxs1JMyd2RiL62VQmGp/Z3s8ui7NYSoo4X1EZzzZ7GN2TNtc5XIfNjTg7DbJFTifZPZtWVjRZJ+jNd0vNTqfYlhKVVY3aVGKHbI5GtXhC0gyrAaD5bHLQ7NmbtCZGQWXH7ePwJs8/qvImE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890241747387.25177270309314; Mon, 31 Aug 2020 09:10:41 -0700 (PDT) Received: from localhost ([::1]:42936 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmOG-0003W8-Tm for importer@patchew.org; Mon, 31 Aug 2020 12:10:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33426) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmJy-0003SX-Pp for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:14 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]:40379) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmJv-0005u4-Qe for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:14 -0400 Received: by mail-pf1-x430.google.com with SMTP id c142so804699pfb.7 for ; Mon, 31 Aug 2020 09:06:11 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=EAqHVd7k8qnFGYSw1XH+Q9LqQUEdcVQsZIdVmMRUJCo=; b=yaEv84DwJSc1LaJNI+Yu4tyRP9PN6oLWy6S+wvSiSuMRkFUi5Qvs8ajcINvPTck8Qs Kcx9UUjk0fC2BOh67v2j4VRB+82fNqU3wgv6nYEA5j/ynLyjbAOKe3rI0h/aLUXntwjW T5liPMFFEUagpYpYBaMjJ111D6GonBo8TUaArh8AEbz9RFVF5h7BjLfZrRSXx0PU/DMi qQZoqRZyS+7tvcWMdsXmaNmz8fxCrFlgqhLJAkucrB0il68gM9WYb7q7dCKv0rI6ZEKN clpEzrQp814qqpE1It1VhQlIv5cZ3LAGQUkn0lhlo7tlyJAm4LgWub/EnypNJ+Qnakgj IyRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=EAqHVd7k8qnFGYSw1XH+Q9LqQUEdcVQsZIdVmMRUJCo=; b=A/42wvBBVzyt434rzFYtQRSqcYt/NlG6ZjiREUGADoRh6bUzH4EStFRNdYJFftErXL SZ7mPlCoO3Ytxgs4CkoQzeEtgXFSz3VdSJ9wnGzeTqbgvB/EpzA9yo/04REzl110CHGl NYl35cr940YqbxlJebNWAsKzJ31M6I8QW2mKc2ymjgXLCHFS+nU+MBFjJbccnzdmIkaL 57+x+eT2/HbvuwJusUhehW5khLCGUkrTyW3aun35oVtcYu/K1Ckcb4z2W19GaoNnJvuB BhjDazT3DdCVPJwd5AH2WblxuiqW9qQESVLVqk4keNsikYaWswTfxgE8wElf+sQIHA/J 7boQ== X-Gm-Message-State: AOAM533Wb8ilfXsKN092F3rfac2smz3Ms9xJ6xqG2X8xyno8tO2cw3FC 8rFRDyBCJvuckHiWkjccXMx0M6haRl0r3A== X-Google-Smtp-Source: ABdhPJy99AJH1SHXr+9rcWqCo+2PcVIrbMvrPAmovZVCKec/SC6JjfqAwyi/SIlUvkY4b1XXdfIplA== X-Received: by 2002:a62:8c91:: with SMTP id m139mr1822568pfd.267.1598889969889; Mon, 31 Aug 2020 09:06:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 04/76] target/microblaze: Tidy gdbstub Date: Mon, 31 Aug 2020 09:04:49 -0700 Message-Id: <20200831160601.833692-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Use an enumeration for the gdb register mapping. Use one switch statement for the entire dispatch. Drop sreg_map and simply enumerate those cases explicitly. Force r0 to have value 0 and ignore writes. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/gdbstub.c | 193 +++++++++++++++++++----------------- 1 file changed, 101 insertions(+), 92 deletions(-) diff --git a/target/microblaze/gdbstub.c b/target/microblaze/gdbstub.c index 73e8973597..e65ec051a5 100644 --- a/target/microblaze/gdbstub.c +++ b/target/microblaze/gdbstub.c @@ -21,58 +21,80 @@ #include "cpu.h" #include "exec/gdbstub.h" =20 +/* + * GDB expects SREGs in the following order: + * PC, MSR, EAR, ESR, FSR, BTR, EDR, PID, ZPR, TLBX, TLBSX, TLBLO, TLBHI. + * + * PID, ZPR, TLBx, TLBsx, TLBLO, and TLBHI aren't modeled, so we don't + * map them to anything and return a value of 0 instead. + */ + +enum { + GDB_PC =3D 32 + 0, + GDB_MSR =3D 32 + 1, + GDB_EAR =3D 32 + 2, + GDB_ESR =3D 32 + 3, + GDB_FSR =3D 32 + 4, + GDB_BTR =3D 32 + 5, + GDB_PVR0 =3D 32 + 6, + GDB_PVR11 =3D 32 + 17, + GDB_EDR =3D 32 + 18, + GDB_SLR =3D 32 + 25, + GDB_SHR =3D 32 + 26, +}; + int mb_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n) { MicroBlazeCPU *cpu =3D MICROBLAZE_CPU(cs); + CPUClass *cc =3D CPU_GET_CLASS(cs); CPUMBState *env =3D &cpu->env; - /* - * GDB expects SREGs in the following order: - * PC, MSR, EAR, ESR, FSR, BTR, EDR, PID, ZPR, TLBX, TLBSX, TLBLO, TLB= HI. - * They aren't stored in this order, so make a map. - * PID, ZPR, TLBx, TLBsx, TLBLO, and TLBHI aren't modeled, so we don't - * map them to anything and return a value of 0 instead. - */ - static const uint8_t sreg_map[6] =3D { - SR_PC, - SR_MSR, - SR_EAR, - SR_ESR, - SR_FSR, - SR_BTR - }; + uint32_t val; =20 - /* - * GDB expects registers to be reported in this order: - * R0-R31 - * PC-BTR - * PVR0-PVR11 - * EDR-TLBHI - * SLR-SHR - */ - if (n < 32) { - return gdb_get_reg32(mem_buf, env->regs[n]); - } else { - n -=3D 32; - switch (n) { - case 0 ... 5: - return gdb_get_reg32(mem_buf, env->sregs[sreg_map[n]]); - /* PVR12 is intentionally skipped */ - case 6 ... 17: - n -=3D 6; - return gdb_get_reg32(mem_buf, env->pvr.regs[n]); - case 18: - return gdb_get_reg32(mem_buf, env->sregs[SR_EDR]); - /* Other SRegs aren't modeled, so report a value of 0 */ - case 19 ... 24: - return gdb_get_reg32(mem_buf, 0); - case 25: - return gdb_get_reg32(mem_buf, env->slr); - case 26: - return gdb_get_reg32(mem_buf, env->shr); - default: - return 0; - } + if (n > cc->gdb_num_core_regs) { + return 0; } + + switch (n) { + case 1 ... 31: + val =3D env->regs[n]; + break; + case GDB_PC: + val =3D env->sregs[SR_PC]; + break; + case GDB_MSR: + val =3D env->sregs[SR_MSR]; + break; + case GDB_EAR: + val =3D env->sregs[SR_EAR]; + break; + case GDB_ESR: + val =3D env->sregs[SR_ESR]; + break; + case GDB_FSR: + val =3D env->sregs[SR_FSR]; + break; + case GDB_BTR: + val =3D env->sregs[SR_BTR]; + break; + case GDB_PVR0 ... GDB_PVR11: + /* PVR12 is intentionally skipped */ + val =3D env->pvr.regs[n - GDB_PVR0]; + break; + case GDB_EDR: + val =3D env->sregs[SR_EDR]; + break; + case GDB_SLR: + val =3D env->slr; + break; + case GDB_SHR: + val =3D env->shr; + break; + default: + /* Other SRegs aren't modeled, so report a value of 0 */ + val =3D 0; + break; + } + return gdb_get_reg32(mem_buf, val); } =20 int mb_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n) @@ -82,60 +104,47 @@ int mb_cpu_gdb_write_register(CPUState *cs, uint8_t *m= em_buf, int n) CPUMBState *env =3D &cpu->env; uint32_t tmp; =20 - /* - * GDB expects SREGs in the following order: - * PC, MSR, EAR, ESR, FSR, BTR, EDR, PID, ZPR, TLBX, TLBSX, TLBLO, TLB= HI. - * They aren't stored in this order, so make a map. - * PID, ZPR, TLBx, TLBsx, TLBLO, and TLBHI aren't modeled, so we don't - * map them to anything. - */ - static const uint8_t sreg_map[6] =3D { - SR_PC, - SR_MSR, - SR_EAR, - SR_ESR, - SR_FSR, - SR_BTR - }; - if (n > cc->gdb_num_core_regs) { return 0; } =20 tmp =3D ldl_p(mem_buf); =20 - /* - * GDB expects registers to be reported in this order: - * R0-R31 - * PC-BTR - * PVR0-PVR11 - * EDR-TLBHI - * SLR-SHR - */ - if (n < 32) { + switch (n) { + case 1 ... 31: env->regs[n] =3D tmp; - } else { - n -=3D 32; - switch (n) { - case 0 ... 5: - env->sregs[sreg_map[n]] =3D tmp; - break; + break; + case GDB_PC: + env->sregs[SR_PC] =3D tmp; + break; + case GDB_MSR: + env->sregs[SR_MSR] =3D tmp; + break; + case GDB_EAR: + env->sregs[SR_EAR] =3D tmp; + break; + case GDB_ESR: + env->sregs[SR_ESR] =3D tmp; + break; + case GDB_FSR: + env->sregs[SR_FSR] =3D tmp; + break; + case GDB_BTR: + env->sregs[SR_BTR] =3D tmp; + break; + case GDB_PVR0 ... GDB_PVR11: /* PVR12 is intentionally skipped */ - case 6 ... 17: - n -=3D 6; - env->pvr.regs[n] =3D tmp; - break; - /* Only EDR is modeled in these indeces, so ignore the rest */ - case 18: - env->sregs[SR_EDR] =3D tmp; - break; - case 25: - env->slr =3D tmp; - break; - case 26: - env->shr =3D tmp; - break; - } + env->pvr.regs[n - GDB_PVR0] =3D tmp; + break; + case GDB_EDR: + env->sregs[SR_EDR] =3D tmp; + break; + case GDB_SLR: + env->slr =3D tmp; + break; + case GDB_SHR: + env->shr =3D tmp; + break; } return 4; } --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890042; cv=none; d=zohomail.com; s=zohoarc; b=cl12s1Chcvgm2gvtEscUciNpnpUh+wejsXA7ygkxx41RZAujOwmWeKtF78Pp7XDbT4+HDWVr3HoD5XXZykeYBqTiT2VzNvrkPeLvGYrmhFls5DiKvu9/81Z9EruMI6acJpWJIVA0abO2ruY3+MOQ3qQvLvGho6/dFsdrx28xM1M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890042; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=oASypVqUWEIg4ZAe6my1fFp1ehvS0890ZEtdtTj14Ic=; b=CYjVO5cr7ZvuP23NjBnLGACrUVcCGSmJB/rvTtPjOeIUqSG5CBQMZuyXNO9ViIoXQ2LfmQg1z/Zk2xgANDRSdOEmBQUrVpSmDFwlGC/9GZXHedkJh+uLvQ0mvKcnZdcmcfsWESL5wNISCM45gbmEWch5JeZ3s3YRA+8iLOhJHR8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890042241375.9917724517777; Mon, 31 Aug 2020 09:07:22 -0700 (PDT) Received: from localhost ([::1]:54784 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmL3-0005CE-2v for importer@patchew.org; Mon, 31 Aug 2020 12:07:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33440) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmJz-0003Uk-S9 for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:15 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]:39936) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmJx-0005uQ-BW for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:15 -0400 Received: by mail-pl1-x632.google.com with SMTP id z15so3239817plo.7 for ; Mon, 31 Aug 2020 09:06:12 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=oASypVqUWEIg4ZAe6my1fFp1ehvS0890ZEtdtTj14Ic=; b=cf8sysRCyeGQFHWm8dEuvB5PVympOMwjLZoZc2LOM6noT4BCIDgYZpXTRmCbG3RFou j5p6vcLFJjA9htpnmwupAbrKlN0pKS+JeBjYIBDEa7IRLdnZ7FQIVecDc+aqh5annIqA 1qpCSyIaGPOb8jQ4lbNVmygi65eaNcK+i/1cqIhI+Mg+e1wfQNJ8ov6tuqxLOsanqTsL FVcWf9etgLP/lLR8wQZOvQAUlpf+omZEoCetSTHEW9lRrzVVodWVGTEIQr3Fa6L/jlD8 GSZhtIEZCua22VWEbP8q8VN5nTl+8jqRk4x2zoUF6uvPjq9HoUYscFt1u2jAcw8R3Mwo GnfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=oASypVqUWEIg4ZAe6my1fFp1ehvS0890ZEtdtTj14Ic=; b=tYzs2wddVCAFBhky1aj9ymqJNcamMp2KR0kelBhRxKKXakI1bQPtrmFIzkyQ+UAiCl jJsC+8q+Ym71odYeZ5h28n5y9l/LX2NFYWjq/3cUkNMV5VRunTnqmb6tRKa4TVR+JY63 cKnh/DPnK7M7I7AS9ugt6kqGZ/Uq5iX9aDwzpQnEuU/cNt9d5kf0YhmGpqnmYkfofiFB yacH5k77IIutY9DrDf3nqBCA0Ze7ygAhDNcsmnf9BIdl6Zm06D214UVdDME29QRZNXga oaaCrLSyoFBI1MV8w/xbUm6JYD57EElkCyK9rhK46sb5xcBcFtcLl8D9yV3VlgmXKL0A ql+Q== X-Gm-Message-State: AOAM533ysYkQU1cKGVBSXUBwfQ/AsegAN5DeixHAf2+rHozxRLWR7365 B6RfBbzrfGj8AxjvEcWEj75179OuRvAWkg== X-Google-Smtp-Source: ABdhPJwu/4uJmT6jcUSGU7kFVHPJN93rFDZWkx9+V8q2sDi+nAP8ree/ztvtoN/7jafUx+y2LYjphw== X-Received: by 2002:a17:90a:d496:: with SMTP id s22mr58657pju.167.1598889971284; Mon, 31 Aug 2020 09:06:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 05/76] target/microblaze: Split out PC from env->sregs Date: Mon, 31 Aug 2020 09:04:50 -0700 Message-Id: <20200831160601.833692-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x632.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Begin eliminating the sregs array in favor of individual members. Does not correct the width of pc, yet. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/cpu.h | 3 ++- linux-user/microblaze/cpu_loop.c | 12 +++++------ linux-user/microblaze/signal.c | 8 ++++---- target/microblaze/cpu.c | 4 ++-- target/microblaze/gdbstub.c | 4 ++-- target/microblaze/helper.c | 34 ++++++++++++++++---------------- target/microblaze/mmu.c | 2 +- target/microblaze/op_helper.c | 2 +- target/microblaze/translate.c | 10 +++++++--- 9 files changed, 42 insertions(+), 37 deletions(-) diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index a31134b65c..d1f91bb318 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -236,6 +236,7 @@ struct CPUMBState { =20 uint32_t imm; uint32_t regs[32]; + uint64_t pc; uint64_t sregs[14]; float_status fp_status; /* Stack protectors. Yes, it's a hw feature. */ @@ -351,7 +352,7 @@ typedef MicroBlazeCPU ArchCPU; static inline void cpu_get_tb_cpu_state(CPUMBState *env, target_ulong *pc, target_ulong *cs_base, uint32_t *f= lags) { - *pc =3D env->sregs[SR_PC]; + *pc =3D env->pc; *cs_base =3D 0; *flags =3D (env->iflags & IFLAGS_TB_MASK) | (env->sregs[SR_MSR] & (MSR_UM | MSR_VM | MSR_EE)); diff --git a/linux-user/microblaze/cpu_loop.c b/linux-user/microblaze/cpu_l= oop.c index 3e0a7f730b..3c693086f4 100644 --- a/linux-user/microblaze/cpu_loop.c +++ b/linux-user/microblaze/cpu_loop.c @@ -51,7 +51,7 @@ void cpu_loop(CPUMBState *env) case EXCP_BREAK: /* Return address is 4 bytes after the call. */ env->regs[14] +=3D 4; - env->sregs[SR_PC] =3D env->regs[14]; + env->pc =3D env->regs[14]; ret =3D do_syscall(env,=20 env->regs[12],=20 env->regs[5],=20 @@ -63,7 +63,7 @@ void cpu_loop(CPUMBState *env) 0, 0); if (ret =3D=3D -TARGET_ERESTARTSYS) { /* Wind back to before the syscall. */ - env->sregs[SR_PC] -=3D 4; + env->pc -=3D 4; } else if (ret !=3D -TARGET_QEMU_ESIGRETURN) { env->regs[3] =3D ret; } @@ -73,13 +73,13 @@ void cpu_loop(CPUMBState *env) * not a userspace-usable register, as the kernel may clobber = it * at any point.) */ - env->regs[14] =3D env->sregs[SR_PC]; + env->regs[14] =3D env->pc; break; case EXCP_HW_EXCP: - env->regs[17] =3D env->sregs[SR_PC] + 4; + env->regs[17] =3D env->pc + 4; if (env->iflags & D_FLAG) { env->sregs[SR_ESR] |=3D 1 << 12; - env->sregs[SR_PC] -=3D 4; + env->pc -=3D 4; /* FIXME: if branch was immed, replay the imm as well. */ } =20 @@ -165,5 +165,5 @@ void target_cpu_copy_regs(CPUArchState *env, struct tar= get_pt_regs *regs) env->regs[29] =3D regs->r29; env->regs[30] =3D regs->r30; env->regs[31] =3D regs->r31; - env->sregs[SR_PC] =3D regs->pc; + env->pc =3D regs->pc; } diff --git a/linux-user/microblaze/signal.c b/linux-user/microblaze/signal.c index 80950c2181..b4eeef4673 100644 --- a/linux-user/microblaze/signal.c +++ b/linux-user/microblaze/signal.c @@ -87,7 +87,7 @@ static void setup_sigcontext(struct target_sigcontext *sc= , CPUMBState *env) __put_user(env->regs[29], &sc->regs.r29); __put_user(env->regs[30], &sc->regs.r30); __put_user(env->regs[31], &sc->regs.r31); - __put_user(env->sregs[SR_PC], &sc->regs.pc); + __put_user(env->pc, &sc->regs.pc); } =20 static void restore_sigcontext(struct target_sigcontext *sc, CPUMBState *e= nv) @@ -124,7 +124,7 @@ static void restore_sigcontext(struct target_sigcontext= *sc, CPUMBState *env) __get_user(env->regs[29], &sc->regs.r29); __get_user(env->regs[30], &sc->regs.r30); __get_user(env->regs[31], &sc->regs.r31); - __get_user(env->sregs[SR_PC], &sc->regs.pc); + __get_user(env->pc, &sc->regs.pc); } =20 static abi_ulong get_sigframe(struct target_sigaction *ka, @@ -188,7 +188,7 @@ void setup_frame(int sig, struct target_sigaction *ka, env->regs[7] =3D frame_addr +=3D offsetof(typeof(*frame), uc); =20 /* Offset of 4 to handle microblaze rtid r14, 0 */ - env->sregs[SR_PC] =3D (unsigned long)ka->_sa_handler; + env->pc =3D (unsigned long)ka->_sa_handler; =20 unlock_user_struct(frame, frame_addr, 1); return; @@ -228,7 +228,7 @@ long do_sigreturn(CPUMBState *env) restore_sigcontext(&frame->uc.tuc_mcontext, env); /* We got here through a sigreturn syscall, our path back is via an rtb insn so setup r14 for that. */ - env->regs[14] =3D env->sregs[SR_PC]; + env->regs[14] =3D env->pc; =20 unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; diff --git a/target/microblaze/cpu.c b/target/microblaze/cpu.c index 51e5c85b10..bde9992535 100644 --- a/target/microblaze/cpu.c +++ b/target/microblaze/cpu.c @@ -79,7 +79,7 @@ static void mb_cpu_set_pc(CPUState *cs, vaddr value) { MicroBlazeCPU *cpu =3D MICROBLAZE_CPU(cs); =20 - cpu->env.sregs[SR_PC] =3D value; + cpu->env.pc =3D value; } =20 static bool mb_cpu_has_work(CPUState *cs) @@ -117,7 +117,7 @@ static void mb_cpu_reset(DeviceState *dev) /* Disable stack protector. */ env->shr =3D ~0; =20 - env->sregs[SR_PC] =3D cpu->cfg.base_vectors; + env->pc =3D cpu->cfg.base_vectors; =20 #if defined(CONFIG_USER_ONLY) /* start in user mode with interrupts enabled. */ diff --git a/target/microblaze/gdbstub.c b/target/microblaze/gdbstub.c index e65ec051a5..9ea31f8d2f 100644 --- a/target/microblaze/gdbstub.c +++ b/target/microblaze/gdbstub.c @@ -59,7 +59,7 @@ int mb_cpu_gdb_read_register(CPUState *cs, GByteArray *me= m_buf, int n) val =3D env->regs[n]; break; case GDB_PC: - val =3D env->sregs[SR_PC]; + val =3D env->pc; break; case GDB_MSR: val =3D env->sregs[SR_MSR]; @@ -115,7 +115,7 @@ int mb_cpu_gdb_write_register(CPUState *cs, uint8_t *me= m_buf, int n) env->regs[n] =3D tmp; break; case GDB_PC: - env->sregs[SR_PC] =3D tmp; + env->pc =3D tmp; break; case GDB_MSR: env->sregs[SR_MSR] =3D tmp; diff --git a/target/microblaze/helper.c b/target/microblaze/helper.c index ab2ceeb055..5c392deea4 100644 --- a/target/microblaze/helper.c +++ b/target/microblaze/helper.c @@ -35,7 +35,7 @@ void mb_cpu_do_interrupt(CPUState *cs) =20 cs->exception_index =3D -1; env->res_addr =3D RES_ADDR_NONE; - env->regs[14] =3D env->sregs[SR_PC]; + env->regs[14] =3D env->pc; } =20 bool mb_cpu_tlb_fill(CPUState *cs, vaddr address, int size, @@ -126,7 +126,7 @@ void mb_cpu_do_interrupt(CPUState *cs) return; } =20 - env->regs[17] =3D env->sregs[SR_PC] + 4; + env->regs[17] =3D env->pc + 4; env->sregs[SR_ESR] &=3D ~(1 << 12); =20 /* Exception breaks branch + dslot sequence? */ @@ -145,15 +145,15 @@ void mb_cpu_do_interrupt(CPUState *cs) qemu_log_mask(CPU_LOG_INT, "hw exception at pc=3D%" PRIx64 " ear=3D%" PRIx6= 4 " " "esr=3D%" PRIx64 " iflags=3D%x\n", - env->sregs[SR_PC], env->sregs[SR_EAR], + env->pc, env->sregs[SR_EAR], env->sregs[SR_ESR], env->iflags); log_cpu_state_mask(CPU_LOG_INT, cs, 0); env->iflags &=3D ~(IMM_FLAG | D_FLAG); - env->sregs[SR_PC] =3D cpu->cfg.base_vectors + 0x20; + env->pc =3D cpu->cfg.base_vectors + 0x20; break; =20 case EXCP_MMU: - env->regs[17] =3D env->sregs[SR_PC]; + env->regs[17] =3D env->pc; =20 env->sregs[SR_ESR] &=3D ~(1 << 12); /* Exception breaks branch + dslot sequence? */ @@ -169,7 +169,7 @@ void mb_cpu_do_interrupt(CPUState *cs) qemu_log_mask(CPU_LOG_INT, "bimm exception at pc=3D%" PRIx64 " " "iflags=3D%x\n", - env->sregs[SR_PC], env->iflags); + env->pc, env->iflags); env->regs[17] -=3D 4; log_cpu_state_mask(CPU_LOG_INT, cs, 0); } @@ -188,10 +188,10 @@ void mb_cpu_do_interrupt(CPUState *cs) qemu_log_mask(CPU_LOG_INT, "exception at pc=3D%" PRIx64 " ear=3D%" PRIx64 "= " "iflags=3D%x\n", - env->sregs[SR_PC], env->sregs[SR_EAR], env->ifla= gs); + env->pc, env->sregs[SR_EAR], env->iflags); log_cpu_state_mask(CPU_LOG_INT, cs, 0); env->iflags &=3D ~(IMM_FLAG | D_FLAG); - env->sregs[SR_PC] =3D cpu->cfg.base_vectors + 0x20; + env->pc =3D cpu->cfg.base_vectors + 0x20; break; =20 case EXCP_IRQ: @@ -209,14 +209,14 @@ void mb_cpu_do_interrupt(CPUState *cs) { const char *sym; =20 - sym =3D lookup_symbol(env->sregs[SR_PC]); + sym =3D lookup_symbol(env->pc); if (sym && (!strcmp("netif_rx", sym) || !strcmp("process_backlog", sym))) { =20 qemu_log( "interrupt at pc=3D%x msr=3D%x %x iflags=3D%x sym= =3D%s\n", - env->sregs[SR_PC], env->sregs[SR_MSR], t, env->if= lags, + env->pc, env->sregs[SR_MSR], t, env->iflags, sym); =20 log_cpu_state(cs, 0); @@ -226,14 +226,14 @@ void mb_cpu_do_interrupt(CPUState *cs) qemu_log_mask(CPU_LOG_INT, "interrupt at pc=3D%" PRIx64 " msr=3D%" PRIx64 " = %x " "iflags=3D%x\n", - env->sregs[SR_PC], env->sregs[SR_MSR], t, env->if= lags); + env->pc, env->sregs[SR_MSR], t, env->iflags); =20 env->sregs[SR_MSR] &=3D ~(MSR_VMS | MSR_UMS | MSR_VM \ | MSR_UM | MSR_IE); env->sregs[SR_MSR] |=3D t; =20 - env->regs[14] =3D env->sregs[SR_PC]; - env->sregs[SR_PC] =3D cpu->cfg.base_vectors + 0x10; + env->regs[14] =3D env->pc; + env->pc =3D cpu->cfg.base_vectors + 0x10; //log_cpu_state_mask(CPU_LOG_INT, cs, 0); break; =20 @@ -245,17 +245,17 @@ void mb_cpu_do_interrupt(CPUState *cs) qemu_log_mask(CPU_LOG_INT, "break at pc=3D%" PRIx64 " msr=3D%" PRIx64 " %x " "iflags=3D%x\n", - env->sregs[SR_PC], env->sregs[SR_MSR], t, env->ifl= ags); + env->pc, env->sregs[SR_MSR], t, env->iflags); log_cpu_state_mask(CPU_LOG_INT, cs, 0); env->sregs[SR_MSR] &=3D ~(MSR_VMS | MSR_UMS | MSR_VM | MSR_UM); env->sregs[SR_MSR] |=3D t; env->sregs[SR_MSR] |=3D MSR_BIP; if (cs->exception_index =3D=3D EXCP_HW_BREAK) { - env->regs[16] =3D env->sregs[SR_PC]; + env->regs[16] =3D env->pc; env->sregs[SR_MSR] |=3D MSR_BIP; - env->sregs[SR_PC] =3D cpu->cfg.base_vectors + 0x18; + env->pc =3D cpu->cfg.base_vectors + 0x18; } else - env->sregs[SR_PC] =3D env->btarget; + env->pc =3D env->btarget; break; default: cpu_abort(cs, "unhandled exception type=3D%d\n", diff --git a/target/microblaze/mmu.c b/target/microblaze/mmu.c index 6763421ba2..3f403b567b 100644 --- a/target/microblaze/mmu.c +++ b/target/microblaze/mmu.c @@ -251,7 +251,7 @@ void mmu_write(CPUMBState *env, bool ext, uint32_t rn, = uint32_t v) if (i < 3 && !(v & TLB_VALID) && qemu_loglevel_mask(~0)) qemu_log_mask(LOG_GUEST_ERROR, "invalidating index %x at pc=3D%" PRIx64 "\n", - i, env->sregs[SR_PC]); + i, env->pc); env->mmu.tids[i] =3D env->mmu.regs[MMU_R_PID] & 0xff; mmu_flush_idx(env, i); } diff --git a/target/microblaze/op_helper.c b/target/microblaze/op_helper.c index f3b17a95b3..2deef32740 100644 --- a/target/microblaze/op_helper.c +++ b/target/microblaze/op_helper.c @@ -75,7 +75,7 @@ void helper_debug(CPUMBState *env) { int i; =20 - qemu_log("PC=3D%" PRIx64 "\n", env->sregs[SR_PC]); + qemu_log("PC=3D%" PRIx64 "\n", env->pc); qemu_log("rmsr=3D%" PRIx64 " resr=3D%" PRIx64 " rear=3D%" PRIx64 " " "debug[%x] imm=3D%x iflags=3D%x\n", env->sregs[SR_MSR], env->sregs[SR_ESR], env->sregs[SR_EAR], diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index a96cb21d96..9f6815cc1f 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -1805,7 +1805,7 @@ void mb_cpu_dump_state(CPUState *cs, FILE *f, int fla= gs) } =20 qemu_fprintf(f, "IN: PC=3D%" PRIx64 " %s\n", - env->sregs[SR_PC], lookup_symbol(env->sregs[SR_PC])); + env->pc, lookup_symbol(env->pc)); qemu_fprintf(f, "rmsr=3D%" PRIx64 " resr=3D%" PRIx64 " rear=3D%" PRIx6= 4 " " "debug=3D%x imm=3D%x iflags=3D%x fsr=3D%" PRIx64 " " "rbtr=3D%" PRIx64 "\n", @@ -1868,7 +1868,11 @@ void mb_tcg_init(void) offsetof(CPUMBState, regs[i]), regnames[i]); } - for (i =3D 0; i < ARRAY_SIZE(cpu_SR); i++) { + + cpu_SR[SR_PC] =3D + tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, pc), "rpc"); + + for (i =3D 1; i < ARRAY_SIZE(cpu_SR); i++) { cpu_SR[i] =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, sregs[i]), special_regnames[i]); @@ -1878,5 +1882,5 @@ void mb_tcg_init(void) void restore_state_to_opc(CPUMBState *env, TranslationBlock *tb, target_ulong *data) { - env->sregs[SR_PC] =3D data[0]; + env->pc =3D data[0]; } --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890144; cv=none; d=zohomail.com; s=zohoarc; b=Cyeks3ULA5UERDbLBckP4/Rmjljf9UcN4IMcv54h5gA+oxtNjK+Bf3XZVF2i2H/9bZWXwm3uuixR1UhT3zSaqGvVxZlhPbNfIa/WolkC/sn/Ypb72FO472y/+4gTVsxFrvbJnCzp4ssgLc+a2+K+hfRSGAD4XGsFiviS9k78oHs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890144; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=dhuky+ghTtqZQFSVESX75P/DE+x+rOs7dZeyQCqARaQ=; b=W+h5w++OQ80ALiReBV330iIVgkRIya4izCa27CVKldJE88NBghmGFNUG3rHVu9z3G2paYgC3Q35AOtmF2pPetHhhj6p0/4rvBnLtqhWYejZMXovFiyhxybWOnGjrioCEQrawm7MwAHJ8i7eYh//dhxHmp7eQsDfdFwqXqyUF134= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890144081246.86981766935799; Mon, 31 Aug 2020 09:09:04 -0700 (PDT) Received: from localhost ([::1]:35122 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmMh-0000Or-5E for importer@patchew.org; Mon, 31 Aug 2020 12:09:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33464) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmK1-0003XL-6N for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:17 -0400 Received: from mail-pf1-x443.google.com ([2607:f8b0:4864:20::443]:41665) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmJy-0005uf-U5 for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:16 -0400 Received: by mail-pf1-x443.google.com with SMTP id t9so804164pfq.8 for ; Mon, 31 Aug 2020 09:06:14 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=dhuky+ghTtqZQFSVESX75P/DE+x+rOs7dZeyQCqARaQ=; b=bEVoBbVAkl+sHSH+MTrql94W2ReJRlpU6qjcDiQ/v3zu+fNwFgx5R8CyuZVzolSp5K /HbG1yb2v5hlZ3ttjbzts1FhAUa1cq3QBIhVZP2YLfbRzov3IuO7G9PqFlFRWcwz8mWv iQrre32tSKSQopSkvHYhwK41wlgARRf6qjD1JhqfEsRGaajxEeodYQF8U0VND00cOhvm CcvJUDdVK230JR4SvNx8yUefyU2F2QBG6RB5QzfrXFxCS8dkzfxU6LMiBdPSFGfmweHX t3i7oM80J9g8IlrzT4cwnkRkBWHHs0Y1OBv0YH0Ln/WIxdaNOYleBuRSCcOrosAVT13d jyMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=dhuky+ghTtqZQFSVESX75P/DE+x+rOs7dZeyQCqARaQ=; b=G+fP6UbDkSP043/tXcudZo/WKTD3kpX/nKDEEmKRZFyCjGJa41E8jTvS/wTo7E4Q1+ BQg/guVU8DnqNtD+WvjwJt2KBnbQ9T7NZHEF7IoxvNHi/Wpwz72EvPT2KrjyQXnz9IXf Sk9tqtizqucgzPfalPXaVWqovdcZQxTiDH7mkIVjJMfuI698eRlTl5982OOSRhPTmH0G UYiRltoXXJHj/O+oxOwNmGRCaFzaxnfiQkE3HG2bk20z0R/OWFD8DbEeFiQG/aaIrIgE N5HRnM5Tf7YuA9GPQ8Y8p/AOI0VdfEbVUK/f8hY3lYWLY81ebFgL1YAZmJVeWcQ0zbwh dKnA== X-Gm-Message-State: AOAM531EPqLfav3mhfoWK1brY3EQBCp0h5w/U3XNVYYFE7u2UOr4B4e7 q5Fsxu9h9/+cFI1CxgJ4tdT+vB6RF9HK4Q== X-Google-Smtp-Source: ABdhPJzylxZwg2JqgaYOJW0xmkRXVVa5Tkl3ZUbKyP7hZ9fQdS4AlyWag1EH47NmACJvx60wJorIzQ== X-Received: by 2002:a63:ec54:: with SMTP id r20mr1724168pgj.430.1598889972785; Mon, 31 Aug 2020 09:06:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 06/76] target/microblaze: Split out MSR from env->sregs Date: Mon, 31 Aug 2020 09:04:51 -0700 Message-Id: <20200831160601.833692-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::443; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x443.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Continue eliminating the sregs array in favor of individual members. Does not correct the width of MSR, yet. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/cpu.h | 7 ++--- target/microblaze/cpu.c | 4 +-- target/microblaze/gdbstub.c | 4 +-- target/microblaze/helper.c | 49 +++++++++++++++++------------------ target/microblaze/op_helper.c | 22 ++++++++-------- target/microblaze/translate.c | 14 +++++----- 6 files changed, 51 insertions(+), 49 deletions(-) diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index d1f91bb318..36de61d9f9 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -237,6 +237,7 @@ struct CPUMBState { uint32_t imm; uint32_t regs[32]; uint64_t pc; + uint64_t msr; uint64_t sregs[14]; float_status fp_status; /* Stack protectors. Yes, it's a hw feature. */ @@ -355,7 +356,7 @@ static inline void cpu_get_tb_cpu_state(CPUMBState *env= , target_ulong *pc, *pc =3D env->pc; *cs_base =3D 0; *flags =3D (env->iflags & IFLAGS_TB_MASK) | - (env->sregs[SR_MSR] & (MSR_UM | MSR_VM | MSR_EE)); + (env->msr & (MSR_UM | MSR_VM | MSR_EE)); } =20 #if !defined(CONFIG_USER_ONLY) @@ -370,11 +371,11 @@ static inline int cpu_mmu_index(CPUMBState *env, bool= ifetch) MicroBlazeCPU *cpu =3D env_archcpu(env); =20 /* Are we in nommu mode?. */ - if (!(env->sregs[SR_MSR] & MSR_VM) || !cpu->cfg.use_mmu) { + if (!(env->msr & MSR_VM) || !cpu->cfg.use_mmu) { return MMU_NOMMU_IDX; } =20 - if (env->sregs[SR_MSR] & MSR_UM) { + if (env->msr & MSR_UM) { return MMU_USER_IDX; } return MMU_KERNEL_IDX; diff --git a/target/microblaze/cpu.c b/target/microblaze/cpu.c index bde9992535..0eac068570 100644 --- a/target/microblaze/cpu.c +++ b/target/microblaze/cpu.c @@ -121,9 +121,9 @@ static void mb_cpu_reset(DeviceState *dev) =20 #if defined(CONFIG_USER_ONLY) /* start in user mode with interrupts enabled. */ - env->sregs[SR_MSR] =3D MSR_EE | MSR_IE | MSR_VM | MSR_UM; + env->msr =3D MSR_EE | MSR_IE | MSR_VM | MSR_UM; #else - env->sregs[SR_MSR] =3D 0; + env->msr =3D 0; mmu_init(&env->mmu); env->mmu.c_mmu =3D 3; env->mmu.c_mmu_tlb_access =3D 3; diff --git a/target/microblaze/gdbstub.c b/target/microblaze/gdbstub.c index 9ea31f8d2f..e4c4936a7a 100644 --- a/target/microblaze/gdbstub.c +++ b/target/microblaze/gdbstub.c @@ -62,7 +62,7 @@ int mb_cpu_gdb_read_register(CPUState *cs, GByteArray *me= m_buf, int n) val =3D env->pc; break; case GDB_MSR: - val =3D env->sregs[SR_MSR]; + val =3D env->msr; break; case GDB_EAR: val =3D env->sregs[SR_EAR]; @@ -118,7 +118,7 @@ int mb_cpu_gdb_write_register(CPUState *cs, uint8_t *me= m_buf, int n) env->pc =3D tmp; break; case GDB_MSR: - env->sregs[SR_MSR] =3D tmp; + env->msr =3D tmp; break; case GDB_EAR: env->sregs[SR_EAR] =3D tmp; diff --git a/target/microblaze/helper.c b/target/microblaze/helper.c index 5c392deea4..a18314540f 100644 --- a/target/microblaze/helper.c +++ b/target/microblaze/helper.c @@ -117,7 +117,7 @@ void mb_cpu_do_interrupt(CPUState *cs) /* IMM flag cannot propagate across a branch and into the dslot. */ assert(!((env->iflags & D_FLAG) && (env->iflags & IMM_FLAG))); assert(!(env->iflags & (DRTI_FLAG | DRTE_FLAG | DRTB_FLAG))); -/* assert(env->sregs[SR_MSR] & (MSR_EE)); Only for HW exceptions. */ +/* assert(env->msr & (MSR_EE)); Only for HW exceptions. */ env->res_addr =3D RES_ADDR_NONE; switch (cs->exception_index) { case EXCP_HW_EXCP: @@ -136,11 +136,11 @@ void mb_cpu_do_interrupt(CPUState *cs) } =20 /* Disable the MMU. */ - t =3D (env->sregs[SR_MSR] & (MSR_VM | MSR_UM)) << 1; - env->sregs[SR_MSR] &=3D ~(MSR_VMS | MSR_UMS | MSR_VM | MSR_UM); - env->sregs[SR_MSR] |=3D t; + t =3D (env->msr & (MSR_VM | MSR_UM)) << 1; + env->msr &=3D ~(MSR_VMS | MSR_UMS | MSR_VM | MSR_UM); + env->msr |=3D t; /* Exception in progress. */ - env->sregs[SR_MSR] |=3D MSR_EIP; + env->msr |=3D MSR_EIP; =20 qemu_log_mask(CPU_LOG_INT, "hw exception at pc=3D%" PRIx64 " ear=3D%" PRIx6= 4 " " @@ -179,11 +179,11 @@ void mb_cpu_do_interrupt(CPUState *cs) } =20 /* Disable the MMU. */ - t =3D (env->sregs[SR_MSR] & (MSR_VM | MSR_UM)) << 1; - env->sregs[SR_MSR] &=3D ~(MSR_VMS | MSR_UMS | MSR_VM | MSR_UM); - env->sregs[SR_MSR] |=3D t; + t =3D (env->msr & (MSR_VM | MSR_UM)) << 1; + env->msr &=3D ~(MSR_VMS | MSR_UMS | MSR_VM | MSR_UM); + env->msr |=3D t; /* Exception in progress. */ - env->sregs[SR_MSR] |=3D MSR_EIP; + env->msr |=3D MSR_EIP; =20 qemu_log_mask(CPU_LOG_INT, "exception at pc=3D%" PRIx64 " ear=3D%" PRIx64 "= " @@ -195,11 +195,11 @@ void mb_cpu_do_interrupt(CPUState *cs) break; =20 case EXCP_IRQ: - assert(!(env->sregs[SR_MSR] & (MSR_EIP | MSR_BIP))); - assert(env->sregs[SR_MSR] & MSR_IE); + assert(!(env->msr & (MSR_EIP | MSR_BIP))); + assert(env->msr & MSR_IE); assert(!(env->iflags & D_FLAG)); =20 - t =3D (env->sregs[SR_MSR] & (MSR_VM | MSR_UM)) << 1; + t =3D (env->msr & (MSR_VM | MSR_UM)) << 1; =20 #if 0 #include "disas/disas.h" @@ -216,7 +216,7 @@ void mb_cpu_do_interrupt(CPUState *cs) =20 qemu_log( "interrupt at pc=3D%x msr=3D%x %x iflags=3D%x sym= =3D%s\n", - env->pc, env->sregs[SR_MSR], t, env->iflags, + env->pc, env->msr, t, env->iflags, sym); =20 log_cpu_state(cs, 0); @@ -226,11 +226,10 @@ void mb_cpu_do_interrupt(CPUState *cs) qemu_log_mask(CPU_LOG_INT, "interrupt at pc=3D%" PRIx64 " msr=3D%" PRIx64 " = %x " "iflags=3D%x\n", - env->pc, env->sregs[SR_MSR], t, env->iflags); + env->pc, env->msr, t, env->iflags); =20 - env->sregs[SR_MSR] &=3D ~(MSR_VMS | MSR_UMS | MSR_VM \ - | MSR_UM | MSR_IE); - env->sregs[SR_MSR] |=3D t; + env->msr &=3D ~(MSR_VMS | MSR_UMS | MSR_VM | MSR_UM | MSR_IE); + env->msr |=3D t; =20 env->regs[14] =3D env->pc; env->pc =3D cpu->cfg.base_vectors + 0x10; @@ -241,18 +240,18 @@ void mb_cpu_do_interrupt(CPUState *cs) case EXCP_HW_BREAK: assert(!(env->iflags & IMM_FLAG)); assert(!(env->iflags & D_FLAG)); - t =3D (env->sregs[SR_MSR] & (MSR_VM | MSR_UM)) << 1; + t =3D (env->msr & (MSR_VM | MSR_UM)) << 1; qemu_log_mask(CPU_LOG_INT, "break at pc=3D%" PRIx64 " msr=3D%" PRIx64 " %x " "iflags=3D%x\n", - env->pc, env->sregs[SR_MSR], t, env->iflags); + env->pc, env->msr, t, env->iflags); log_cpu_state_mask(CPU_LOG_INT, cs, 0); - env->sregs[SR_MSR] &=3D ~(MSR_VMS | MSR_UMS | MSR_VM | MSR_UM); - env->sregs[SR_MSR] |=3D t; - env->sregs[SR_MSR] |=3D MSR_BIP; + env->msr &=3D ~(MSR_VMS | MSR_UMS | MSR_VM | MSR_UM); + env->msr |=3D t; + env->msr |=3D MSR_BIP; if (cs->exception_index =3D=3D EXCP_HW_BREAK) { env->regs[16] =3D env->pc; - env->sregs[SR_MSR] |=3D MSR_BIP; + env->msr |=3D MSR_BIP; env->pc =3D cpu->cfg.base_vectors + 0x18; } else env->pc =3D env->btarget; @@ -293,8 +292,8 @@ bool mb_cpu_exec_interrupt(CPUState *cs, int interrupt_= request) CPUMBState *env =3D &cpu->env; =20 if ((interrupt_request & CPU_INTERRUPT_HARD) - && (env->sregs[SR_MSR] & MSR_IE) - && !(env->sregs[SR_MSR] & (MSR_EIP | MSR_BIP)) + && (env->msr & MSR_IE) + && !(env->msr & (MSR_EIP | MSR_BIP)) && !(env->iflags & (D_FLAG | IMM_FLAG))) { cs->exception_index =3D EXCP_IRQ; mb_cpu_do_interrupt(cs); diff --git a/target/microblaze/op_helper.c b/target/microblaze/op_helper.c index 2deef32740..3668382d36 100644 --- a/target/microblaze/op_helper.c +++ b/target/microblaze/op_helper.c @@ -78,14 +78,14 @@ void helper_debug(CPUMBState *env) qemu_log("PC=3D%" PRIx64 "\n", env->pc); qemu_log("rmsr=3D%" PRIx64 " resr=3D%" PRIx64 " rear=3D%" PRIx64 " " "debug[%x] imm=3D%x iflags=3D%x\n", - env->sregs[SR_MSR], env->sregs[SR_ESR], env->sregs[SR_EAR], + env->msr, env->sregs[SR_ESR], env->sregs[SR_EAR], env->debug, env->imm, env->iflags); qemu_log("btaken=3D%d btarget=3D%" PRIx64 " mode=3D%s(saved=3D%s) eip= =3D%d ie=3D%d\n", env->btaken, env->btarget, - (env->sregs[SR_MSR] & MSR_UM) ? "user" : "kernel", - (env->sregs[SR_MSR] & MSR_UMS) ? "user" : "kernel", - (bool)(env->sregs[SR_MSR] & MSR_EIP), - (bool)(env->sregs[SR_MSR] & MSR_IE)); + (env->msr & MSR_UM) ? "user" : "kernel", + (env->msr & MSR_UMS) ? "user" : "kernel", + (bool)(env->msr & MSR_EIP), + (bool)(env->msr & MSR_IE)); for (i =3D 0; i < 32; i++) { qemu_log("r%2.2d=3D%8.8x ", i, env->regs[i]); if ((i + 1) % 4 =3D=3D 0) @@ -135,15 +135,15 @@ static inline int div_prepare(CPUMBState *env, uint32= _t a, uint32_t b) MicroBlazeCPU *cpu =3D env_archcpu(env); =20 if (b =3D=3D 0) { - env->sregs[SR_MSR] |=3D MSR_DZ; + env->msr |=3D MSR_DZ; =20 - if ((env->sregs[SR_MSR] & MSR_EE) && cpu->cfg.div_zero_exception) { + if ((env->msr & MSR_EE) && cpu->cfg.div_zero_exception) { env->sregs[SR_ESR] =3D ESR_EC_DIVZERO; helper_raise_exception(env, EXCP_HW_EXCP); } return 0; } - env->sregs[SR_MSR] &=3D ~MSR_DZ; + env->msr &=3D ~MSR_DZ; return 1; } =20 @@ -192,7 +192,7 @@ static void update_fpu_flags(CPUMBState *env, int flags) } if (raise && (env->pvr.regs[2] & PVR2_FPU_EXC_MASK) - && (env->sregs[SR_MSR] & MSR_EE)) { + && (env->msr & MSR_EE)) { raise_fpu_exception(env); } } @@ -437,7 +437,7 @@ void helper_memalign(CPUMBState *env, target_ulong addr, if (mask =3D=3D 3) { env->sregs[SR_ESR] |=3D 1 << 11; } - if (!(env->sregs[SR_MSR] & MSR_EE)) { + if (!(env->msr & MSR_EE)) { return; } helper_raise_exception(env, EXCP_HW_EXCP); @@ -484,7 +484,7 @@ void mb_cpu_transaction_failed(CPUState *cs, hwaddr phy= saddr, vaddr addr, env =3D &cpu->env; =20 cpu_restore_state(cs, retaddr, true); - if (!(env->sregs[SR_MSR] & MSR_EE)) { + if (!(env->msr & MSR_EE)) { return; } =20 diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 9f6815cc1f..9f2dcd82cd 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -1809,16 +1809,16 @@ void mb_cpu_dump_state(CPUState *cs, FILE *f, int f= lags) qemu_fprintf(f, "rmsr=3D%" PRIx64 " resr=3D%" PRIx64 " rear=3D%" PRIx6= 4 " " "debug=3D%x imm=3D%x iflags=3D%x fsr=3D%" PRIx64 " " "rbtr=3D%" PRIx64 "\n", - env->sregs[SR_MSR], env->sregs[SR_ESR], env->sregs[SR_EAR= ], + env->msr, env->sregs[SR_ESR], env->sregs[SR_EAR], env->debug, env->imm, env->iflags, env->sregs[SR_FSR], env->sregs[SR_BTR]); qemu_fprintf(f, "btaken=3D%d btarget=3D%" PRIx64 " mode=3D%s(saved=3D%= s) " "eip=3D%d ie=3D%d\n", env->btaken, env->btarget, - (env->sregs[SR_MSR] & MSR_UM) ? "user" : "kernel", - (env->sregs[SR_MSR] & MSR_UMS) ? "user" : "kernel", - (bool)(env->sregs[SR_MSR] & MSR_EIP), - (bool)(env->sregs[SR_MSR] & MSR_IE)); + (env->msr & MSR_UM) ? "user" : "kernel", + (env->msr & MSR_UMS) ? "user" : "kernel", + (bool)(env->msr & MSR_EIP), + (bool)(env->msr & MSR_IE)); for (i =3D 0; i < 12; i++) { qemu_fprintf(f, "rpvr%2.2d=3D%8.8x ", i, env->pvr.regs[i]); if ((i + 1) % 4 =3D=3D 0) { @@ -1871,8 +1871,10 @@ void mb_tcg_init(void) =20 cpu_SR[SR_PC] =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, pc), "rpc"); + cpu_SR[SR_MSR] =3D + tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, msr), "rmsr"); =20 - for (i =3D 1; i < ARRAY_SIZE(cpu_SR); i++) { + for (i =3D SR_MSR + 1; i < ARRAY_SIZE(cpu_SR); i++) { cpu_SR[i] =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, sregs[i]), special_regnames[i]); --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890238; cv=none; d=zohomail.com; s=zohoarc; b=asDyghhDo3jrlBnyluIZQmo8cFk+xblOpXYVl5whHePh9/1mVu6X08DogLhSjdy7+v9VD5aCzjqlkC6ro6RL7f9nsJ9QljXyRxadVwFNWNOecYnBKIPgN13aZ+imxXg3d9Uls0NMHb0+bZwHSLRNe1YKyuJHAwYzi40GE0c3w1Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890238; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Y/1nd0STg2fwgw26kyAhRI4aPsi6vfmi/pGgkxdn03M=; b=MwV5BSGaRIthGvs1QkpqekqM0g6oZjlZotENDxGT5Sq7/WqFKpHsTwLQ9F7BJLLXooIzWzrKSI584mT2WRarQbla/LUFcaJPrypNeioU1UzoQzOcwtCSk5/tdA6my3p3NlP3A0FlvUOE0bSGB356xJxkTgBL4nhOIpwsGzbYqCA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890238780225.1141152784295; Mon, 31 Aug 2020 09:10:38 -0700 (PDT) Received: from localhost ([::1]:42562 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmOD-0003Lq-5o for importer@patchew.org; Mon, 31 Aug 2020 12:10:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33466) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmK1-0003ZK-Ue for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:17 -0400 Received: from mail-pg1-x52b.google.com ([2607:f8b0:4864:20::52b]:36769) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmK0-0005v8-4w for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:17 -0400 Received: by mail-pg1-x52b.google.com with SMTP id p37so838928pgl.3 for ; Mon, 31 Aug 2020 09:06:15 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Y/1nd0STg2fwgw26kyAhRI4aPsi6vfmi/pGgkxdn03M=; b=n1vuf/U5ni04Q+LoL1Hy2Wn5aaLaSkl0Xhvn/5vGuCQydpiG9ZYV3ddHpEG/b6g5Pg pKcmX7X3Lp9KTrT3Sva5GDXPxIQGgwebYwe+qMqORprUa1iNdZ/PdZjmtREFx6PJaIo0 hfrP52U8N6+M5VVgu2bLFF/Xu/6bFV60raMk3Xq+LkCGpGD2IDFJrrik6T7brsWIPk4u r6S+ETykmKC3fWfWsjbSj9dRQiR3iOcRxqTJGs7Jd/foy8OpJtUPOiEImPleLJXEttxO 9T/XX+bDOBG+f5yiltbxtHFWABHeGJfa8smZ+BQM6pimRdMc08Z3bA2zIiybx6jaYnGl MT3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Y/1nd0STg2fwgw26kyAhRI4aPsi6vfmi/pGgkxdn03M=; b=Nm3MjMqgOlF67NG27Lb0Fv0mHFhMzndptwuNUS9eCWxMb3D0tZ12hn9MTLc97Ibog2 MP0iq1u18A6fOv3qk0P6G5dCH5hiYLhkYTa/3/ySS3qdIbK6vlXgPH8nOEqg6pqkK2mU WfqR+QcysGpz0SwZvp2GFVDvgXOXLZjhJRYVC0KznbunphJ8tJi5K9DCKrMcTzSR9GT5 HklYJZe9ICZljq3QzvC0UXF8RYNyskCPh8fT7J0TTZmwkiHWdgFMkM5tj/5hBhrJeT5e prDQloGra9zlPlsZWSf4oahWBwUuKEr7D0OlvJQFN7p+W5CYM1227xpeya2i/0hwI/B+ uMdQ== X-Gm-Message-State: AOAM530avmMLeXjXqYgwEtjA5sZHU5GpPVoLXcbwoHIUXHJvyfJrSA+Y Tj3BbWhNSOR4m0ak+XzDexQ/E/CLsz6WKA== X-Google-Smtp-Source: ABdhPJzWJlfmnepN315d70ORP76t5oWrrWc2Ti57U1jhkaRuZBOr9PkuCUMseXTXkNrWfv3OiHU6CQ== X-Received: by 2002:a62:8309:: with SMTP id h9mr1695633pfe.104.1598889974376; Mon, 31 Aug 2020 09:06:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 07/76] target/microblaze: Split out EAR from env->sregs Date: Mon, 31 Aug 2020 09:04:52 -0700 Message-Id: <20200831160601.833692-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52b; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52b.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Continue eliminating the sregs array in favor of individual members. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/cpu.h | 1 + target/microblaze/gdbstub.c | 4 ++-- target/microblaze/helper.c | 6 +++--- target/microblaze/op_helper.c | 8 ++++---- target/microblaze/translate.c | 6 ++++-- 5 files changed, 14 insertions(+), 11 deletions(-) diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index 36de61d9f9..c9035b410e 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -238,6 +238,7 @@ struct CPUMBState { uint32_t regs[32]; uint64_t pc; uint64_t msr; + uint64_t ear; uint64_t sregs[14]; float_status fp_status; /* Stack protectors. Yes, it's a hw feature. */ diff --git a/target/microblaze/gdbstub.c b/target/microblaze/gdbstub.c index e4c4936a7a..e33a613efe 100644 --- a/target/microblaze/gdbstub.c +++ b/target/microblaze/gdbstub.c @@ -65,7 +65,7 @@ int mb_cpu_gdb_read_register(CPUState *cs, GByteArray *me= m_buf, int n) val =3D env->msr; break; case GDB_EAR: - val =3D env->sregs[SR_EAR]; + val =3D env->ear; break; case GDB_ESR: val =3D env->sregs[SR_ESR]; @@ -121,7 +121,7 @@ int mb_cpu_gdb_write_register(CPUState *cs, uint8_t *me= m_buf, int n) env->msr =3D tmp; break; case GDB_EAR: - env->sregs[SR_EAR] =3D tmp; + env->ear =3D tmp; break; case GDB_ESR: env->sregs[SR_ESR] =3D tmp; diff --git a/target/microblaze/helper.c b/target/microblaze/helper.c index a18314540f..afe9634781 100644 --- a/target/microblaze/helper.c +++ b/target/microblaze/helper.c @@ -85,7 +85,7 @@ bool mb_cpu_tlb_fill(CPUState *cs, vaddr address, int siz= e, qemu_log_mask(CPU_LOG_MMU, "mmu=3D%d miss v=3D%" VADDR_PRIx "\n", mmu_idx, address); =20 - env->sregs[SR_EAR] =3D address; + env->ear =3D address; switch (lu.err) { case ERR_PROT: env->sregs[SR_ESR] =3D access_type =3D=3D MMU_INST_FETCH ? 17 : 16; @@ -145,7 +145,7 @@ void mb_cpu_do_interrupt(CPUState *cs) qemu_log_mask(CPU_LOG_INT, "hw exception at pc=3D%" PRIx64 " ear=3D%" PRIx6= 4 " " "esr=3D%" PRIx64 " iflags=3D%x\n", - env->pc, env->sregs[SR_EAR], + env->pc, env->ear, env->sregs[SR_ESR], env->iflags); log_cpu_state_mask(CPU_LOG_INT, cs, 0); env->iflags &=3D ~(IMM_FLAG | D_FLAG); @@ -188,7 +188,7 @@ void mb_cpu_do_interrupt(CPUState *cs) qemu_log_mask(CPU_LOG_INT, "exception at pc=3D%" PRIx64 " ear=3D%" PRIx64 "= " "iflags=3D%x\n", - env->pc, env->sregs[SR_EAR], env->iflags); + env->pc, env->ear, env->iflags); log_cpu_state_mask(CPU_LOG_INT, cs, 0); env->iflags &=3D ~(IMM_FLAG | D_FLAG); env->pc =3D cpu->cfg.base_vectors + 0x20; diff --git a/target/microblaze/op_helper.c b/target/microblaze/op_helper.c index 3668382d36..5bacd29663 100644 --- a/target/microblaze/op_helper.c +++ b/target/microblaze/op_helper.c @@ -78,7 +78,7 @@ void helper_debug(CPUMBState *env) qemu_log("PC=3D%" PRIx64 "\n", env->pc); qemu_log("rmsr=3D%" PRIx64 " resr=3D%" PRIx64 " rear=3D%" PRIx64 " " "debug[%x] imm=3D%x iflags=3D%x\n", - env->msr, env->sregs[SR_ESR], env->sregs[SR_EAR], + env->msr, env->sregs[SR_ESR], env->ear, env->debug, env->imm, env->iflags); qemu_log("btaken=3D%d btarget=3D%" PRIx64 " mode=3D%s(saved=3D%s) eip= =3D%d ie=3D%d\n", env->btaken, env->btarget, @@ -431,7 +431,7 @@ void helper_memalign(CPUMBState *env, target_ulong addr, "unaligned access addr=3D" TARGET_FMT_lx " mask=3D%x, wr=3D%d dr=3Dr%d\n", addr, mask, wr, dr); - env->sregs[SR_EAR] =3D addr; + env->ear =3D addr; env->sregs[SR_ESR] =3D ESR_EC_UNALIGNED_DATA | (wr << 10) \ | (dr & 31) << 5; if (mask =3D=3D 3) { @@ -450,7 +450,7 @@ void helper_stackprot(CPUMBState *env, target_ulong add= r) qemu_log_mask(CPU_LOG_INT, "Stack protector violation at " TARGET_FMT_lx " %x %x\n", addr, env->slr, env->shr); - env->sregs[SR_EAR] =3D addr; + env->ear =3D addr; env->sregs[SR_ESR] =3D ESR_EC_STACKPROT; helper_raise_exception(env, EXCP_HW_EXCP); } @@ -488,7 +488,7 @@ void mb_cpu_transaction_failed(CPUState *cs, hwaddr phy= saddr, vaddr addr, return; } =20 - env->sregs[SR_EAR] =3D addr; + env->ear =3D addr; if (access_type =3D=3D MMU_INST_FETCH) { if ((env->pvr.regs[2] & PVR2_IOPB_BUS_EXC_MASK)) { env->sregs[SR_ESR] =3D ESR_EC_INSN_BUS; diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 9f2dcd82cd..62747b02f3 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -1809,7 +1809,7 @@ void mb_cpu_dump_state(CPUState *cs, FILE *f, int fla= gs) qemu_fprintf(f, "rmsr=3D%" PRIx64 " resr=3D%" PRIx64 " rear=3D%" PRIx6= 4 " " "debug=3D%x imm=3D%x iflags=3D%x fsr=3D%" PRIx64 " " "rbtr=3D%" PRIx64 "\n", - env->msr, env->sregs[SR_ESR], env->sregs[SR_EAR], + env->msr, env->sregs[SR_ESR], env->ear, env->debug, env->imm, env->iflags, env->sregs[SR_FSR], env->sregs[SR_BTR]); qemu_fprintf(f, "btaken=3D%d btarget=3D%" PRIx64 " mode=3D%s(saved=3D%= s) " @@ -1873,8 +1873,10 @@ void mb_tcg_init(void) tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, pc), "rpc"); cpu_SR[SR_MSR] =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, msr), "rmsr"); + cpu_SR[SR_EAR] =3D + tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, ear), "rear"); =20 - for (i =3D SR_MSR + 1; i < ARRAY_SIZE(cpu_SR); i++) { + for (i =3D SR_EAR + 1; i < ARRAY_SIZE(cpu_SR); i++) { cpu_SR[i] =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, sregs[i]), special_regnames[i]); --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890248; cv=none; d=zohomail.com; s=zohoarc; b=E797ZjUPoj3Ya6ItcHTStg+KRU/N1ykx0Wu6MakkXK9n+lupOr3JoTQlnezqLDoC6uw2jq+HGhhVd47on0qIw4x1R0lihbPlsQCvFgIXs/VLyfTZwfsVpVBLjFJc2Uj3ne2l2p16qWgfQGos54jk1CNKvV4JZPALWFE0I1aLesY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890248; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Weq9YpHwtyK58zZYalofj3qIT6H+XBoANr3BDMAdOKQ=; b=k1shzMYiOFsuXXIuToFrl0R07K+CxbAM460dGeMYPjjHnrHqc/5JbEiHoVIbGNoj2Y7obZ6vEhLVhInxCKOFkDgTW8OeKVLIiH7dYh27EZO0zd1pOw2VscRkZYfN5GWnGrhS3ma0/yKxEYDvvo/M84xVDBrXLJvgJNw0l7x9mqI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890248471575.8775059524098; Mon, 31 Aug 2020 09:10:48 -0700 (PDT) Received: from localhost ([::1]:43576 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmON-0003lb-MR for importer@patchew.org; Mon, 31 Aug 2020 12:10:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33496) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmK4-0003eE-3o for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:20 -0400 Received: from mail-pg1-x542.google.com ([2607:f8b0:4864:20::542]:43920) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmK1-0005w9-SG for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:19 -0400 Received: by mail-pg1-x542.google.com with SMTP id d19so824590pgl.10 for ; Mon, 31 Aug 2020 09:06:17 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Weq9YpHwtyK58zZYalofj3qIT6H+XBoANr3BDMAdOKQ=; b=BUdGv1XdahFPZv3+srMVstJAZBYKqczczbBwQ6l1UiI+pCxX06FlKPYzfOnIVqNqRY f2udlHrCmtChpe5t/kLzLJqlCV8NQ21F36hOXIRZDp9alYmRu6CV1CzJr9cXzIirp2Yy hb8dU2ZUhXdxZ1vVfLidbKAs4iqHGdIAxKA87ApzZy2pOiMTDjhh5qOp2ohWehiQq0Vs +oCKMqA8un/VyR0jRj98iUQAZoAsQGsamvuNSTaJ3cm5vKhfUEKlAn0g2Fd7lVLJ0Kf2 IHdC5Trhgoas2mhJrHK4U1Bemewg5ZYoDfnk3VH8n2WFKBvvyl1AtFV2Du1ijBGNkoiZ XHOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Weq9YpHwtyK58zZYalofj3qIT6H+XBoANr3BDMAdOKQ=; b=NOsxpLmXsri2Ky2+gLqI7fuW9raMDiS6ZDTkRJHdqvNKu9OFkpNTtvcNnLe0Van3On 3TpFDs/famCAXrnDGHH9q+8ha96TaBd/2tBlEtRzLnSv1nokkUWNuK7BkA671TMkENjC OxAOsefQ+Qs71rpJItP6VMYRchAT7gaTBscbLTMeYUR/rS4bPFWvzGrE3JtqlIVFIIrE 0Nxkn2jxBKFSnPqJo1m4cUe5jAJSQID/kXdpe7z5T4jKKIfM49kMJNFPi1/ABtv96gsz y3MfFEc4Dp0Q8LZ4YgXCb0qlAMO/VkAJZD7lTIAa/omD2c7xuBnQ2UWqn3VK9RYlXJG6 erKw== X-Gm-Message-State: AOAM533sUlo/4zYenyfuaLERcpzhTcg+J+Ro+qlo/wcwWgKydYHdHS3W X8cmXBH0hfyUprtulVyj1jHe3+M6nOs0qg== X-Google-Smtp-Source: ABdhPJxJ4k9o9pywMWUrzYWQXMU/w05Mih6BRkGDNvyxcHHvjpbUYOybYheJl/vCC6ZyQebRjbeiew== X-Received: by 2002:aa7:8c19:: with SMTP id c25mr1724594pfd.17.1598889975760; Mon, 31 Aug 2020 09:06:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 08/76] target/microblaze: Split out ESR from env->sregs Date: Mon, 31 Aug 2020 09:04:53 -0700 Message-Id: <20200831160601.833692-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::542; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x542.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Continue eliminating the sregs array in favor of individual members. Does not correct the width of ESR, yet. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/cpu.h | 1 + linux-user/microblaze/cpu_loop.c | 6 +++--- target/microblaze/gdbstub.c | 4 ++-- target/microblaze/helper.c | 18 +++++++++--------- target/microblaze/op_helper.c | 17 ++++++++--------- target/microblaze/translate.c | 6 ++++-- 6 files changed, 27 insertions(+), 25 deletions(-) diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index c9035b410e..7d94af43ed 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -239,6 +239,7 @@ struct CPUMBState { uint64_t pc; uint64_t msr; uint64_t ear; + uint64_t esr; uint64_t sregs[14]; float_status fp_status; /* Stack protectors. Yes, it's a hw feature. */ diff --git a/linux-user/microblaze/cpu_loop.c b/linux-user/microblaze/cpu_l= oop.c index 3c693086f4..c10e3e0261 100644 --- a/linux-user/microblaze/cpu_loop.c +++ b/linux-user/microblaze/cpu_loop.c @@ -78,14 +78,14 @@ void cpu_loop(CPUMBState *env) case EXCP_HW_EXCP: env->regs[17] =3D env->pc + 4; if (env->iflags & D_FLAG) { - env->sregs[SR_ESR] |=3D 1 << 12; + env->esr |=3D 1 << 12; env->pc -=3D 4; /* FIXME: if branch was immed, replay the imm as well. */ } =20 env->iflags &=3D ~(IMM_FLAG | D_FLAG); =20 - switch (env->sregs[SR_ESR] & 31) { + switch (env->esr & 31) { case ESR_EC_DIVZERO: info.si_signo =3D TARGET_SIGFPE; info.si_errno =3D 0; @@ -107,7 +107,7 @@ void cpu_loop(CPUMBState *env) break; default: fprintf(stderr, "Unhandled hw-exception: 0x%" PRIx64 "= \n", - env->sregs[SR_ESR] & ESR_EC_MASK); + env->esr & ESR_EC_MASK); cpu_dump_state(cs, stderr, 0); exit(EXIT_FAILURE); break; diff --git a/target/microblaze/gdbstub.c b/target/microblaze/gdbstub.c index e33a613efe..05e22f233d 100644 --- a/target/microblaze/gdbstub.c +++ b/target/microblaze/gdbstub.c @@ -68,7 +68,7 @@ int mb_cpu_gdb_read_register(CPUState *cs, GByteArray *me= m_buf, int n) val =3D env->ear; break; case GDB_ESR: - val =3D env->sregs[SR_ESR]; + val =3D env->esr; break; case GDB_FSR: val =3D env->sregs[SR_FSR]; @@ -124,7 +124,7 @@ int mb_cpu_gdb_write_register(CPUState *cs, uint8_t *me= m_buf, int n) env->ear =3D tmp; break; case GDB_ESR: - env->sregs[SR_ESR] =3D tmp; + env->esr =3D tmp; break; case GDB_FSR: env->sregs[SR_FSR] =3D tmp; diff --git a/target/microblaze/helper.c b/target/microblaze/helper.c index afe9634781..ea290be780 100644 --- a/target/microblaze/helper.c +++ b/target/microblaze/helper.c @@ -88,12 +88,12 @@ bool mb_cpu_tlb_fill(CPUState *cs, vaddr address, int s= ize, env->ear =3D address; switch (lu.err) { case ERR_PROT: - env->sregs[SR_ESR] =3D access_type =3D=3D MMU_INST_FETCH ? 17 : 16; - env->sregs[SR_ESR] |=3D (access_type =3D=3D MMU_DATA_STORE) << 10; + env->esr =3D access_type =3D=3D MMU_INST_FETCH ? 17 : 16; + env->esr |=3D (access_type =3D=3D MMU_DATA_STORE) << 10; break; case ERR_MISS: - env->sregs[SR_ESR] =3D access_type =3D=3D MMU_INST_FETCH ? 19 : 18; - env->sregs[SR_ESR] |=3D (access_type =3D=3D MMU_DATA_STORE) << 10; + env->esr =3D access_type =3D=3D MMU_INST_FETCH ? 19 : 18; + env->esr |=3D (access_type =3D=3D MMU_DATA_STORE) << 10; break; default: abort(); @@ -127,11 +127,11 @@ void mb_cpu_do_interrupt(CPUState *cs) } =20 env->regs[17] =3D env->pc + 4; - env->sregs[SR_ESR] &=3D ~(1 << 12); + env->esr &=3D ~(1 << 12); =20 /* Exception breaks branch + dslot sequence? */ if (env->iflags & D_FLAG) { - env->sregs[SR_ESR] |=3D 1 << 12 ; + env->esr |=3D 1 << 12 ; env->sregs[SR_BTR] =3D env->btarget; } =20 @@ -146,7 +146,7 @@ void mb_cpu_do_interrupt(CPUState *cs) "hw exception at pc=3D%" PRIx64 " ear=3D%" PRIx6= 4 " " "esr=3D%" PRIx64 " iflags=3D%x\n", env->pc, env->ear, - env->sregs[SR_ESR], env->iflags); + env->esr, env->iflags); log_cpu_state_mask(CPU_LOG_INT, cs, 0); env->iflags &=3D ~(IMM_FLAG | D_FLAG); env->pc =3D cpu->cfg.base_vectors + 0x20; @@ -155,11 +155,11 @@ void mb_cpu_do_interrupt(CPUState *cs) case EXCP_MMU: env->regs[17] =3D env->pc; =20 - env->sregs[SR_ESR] &=3D ~(1 << 12); + env->esr &=3D ~(1 << 12); /* Exception breaks branch + dslot sequence? */ if (env->iflags & D_FLAG) { D(qemu_log("D_FLAG set at exception bimm=3D%d\n", env->bim= m)); - env->sregs[SR_ESR] |=3D 1 << 12 ; + env->esr |=3D 1 << 12 ; env->sregs[SR_BTR] =3D env->btarget; =20 /* Reexecute the branch. */ diff --git a/target/microblaze/op_helper.c b/target/microblaze/op_helper.c index 5bacd29663..f01cf9be64 100644 --- a/target/microblaze/op_helper.c +++ b/target/microblaze/op_helper.c @@ -78,7 +78,7 @@ void helper_debug(CPUMBState *env) qemu_log("PC=3D%" PRIx64 "\n", env->pc); qemu_log("rmsr=3D%" PRIx64 " resr=3D%" PRIx64 " rear=3D%" PRIx64 " " "debug[%x] imm=3D%x iflags=3D%x\n", - env->msr, env->sregs[SR_ESR], env->ear, + env->msr, env->esr, env->ear, env->debug, env->imm, env->iflags); qemu_log("btaken=3D%d btarget=3D%" PRIx64 " mode=3D%s(saved=3D%s) eip= =3D%d ie=3D%d\n", env->btaken, env->btarget, @@ -138,7 +138,7 @@ static inline int div_prepare(CPUMBState *env, uint32_t= a, uint32_t b) env->msr |=3D MSR_DZ; =20 if ((env->msr & MSR_EE) && cpu->cfg.div_zero_exception) { - env->sregs[SR_ESR] =3D ESR_EC_DIVZERO; + env->esr =3D ESR_EC_DIVZERO; helper_raise_exception(env, EXCP_HW_EXCP); } return 0; @@ -166,7 +166,7 @@ uint32_t helper_divu(CPUMBState *env, uint32_t a, uint3= 2_t b) /* raise FPU exception. */ static void raise_fpu_exception(CPUMBState *env) { - env->sregs[SR_ESR] =3D ESR_EC_FPU; + env->esr =3D ESR_EC_FPU; helper_raise_exception(env, EXCP_HW_EXCP); } =20 @@ -432,10 +432,9 @@ void helper_memalign(CPUMBState *env, target_ulong add= r, " mask=3D%x, wr=3D%d dr=3Dr%d\n", addr, mask, wr, dr); env->ear =3D addr; - env->sregs[SR_ESR] =3D ESR_EC_UNALIGNED_DATA | (wr << 10) \ - | (dr & 31) << 5; + env->esr =3D ESR_EC_UNALIGNED_DATA | (wr << 10) | (dr & 31) <<= 5; if (mask =3D=3D 3) { - env->sregs[SR_ESR] |=3D 1 << 11; + env->esr |=3D 1 << 11; } if (!(env->msr & MSR_EE)) { return; @@ -451,7 +450,7 @@ void helper_stackprot(CPUMBState *env, target_ulong add= r) TARGET_FMT_lx " %x %x\n", addr, env->slr, env->shr); env->ear =3D addr; - env->sregs[SR_ESR] =3D ESR_EC_STACKPROT; + env->esr =3D ESR_EC_STACKPROT; helper_raise_exception(env, EXCP_HW_EXCP); } } @@ -491,12 +490,12 @@ void mb_cpu_transaction_failed(CPUState *cs, hwaddr p= hysaddr, vaddr addr, env->ear =3D addr; if (access_type =3D=3D MMU_INST_FETCH) { if ((env->pvr.regs[2] & PVR2_IOPB_BUS_EXC_MASK)) { - env->sregs[SR_ESR] =3D ESR_EC_INSN_BUS; + env->esr =3D ESR_EC_INSN_BUS; helper_raise_exception(env, EXCP_HW_EXCP); } } else { if ((env->pvr.regs[2] & PVR2_DOPB_BUS_EXC_MASK)) { - env->sregs[SR_ESR] =3D ESR_EC_DATA_BUS; + env->esr =3D ESR_EC_DATA_BUS; helper_raise_exception(env, EXCP_HW_EXCP); } } diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 62747b02f3..411c7b6e49 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -1809,7 +1809,7 @@ void mb_cpu_dump_state(CPUState *cs, FILE *f, int fla= gs) qemu_fprintf(f, "rmsr=3D%" PRIx64 " resr=3D%" PRIx64 " rear=3D%" PRIx6= 4 " " "debug=3D%x imm=3D%x iflags=3D%x fsr=3D%" PRIx64 " " "rbtr=3D%" PRIx64 "\n", - env->msr, env->sregs[SR_ESR], env->ear, + env->msr, env->esr, env->ear, env->debug, env->imm, env->iflags, env->sregs[SR_FSR], env->sregs[SR_BTR]); qemu_fprintf(f, "btaken=3D%d btarget=3D%" PRIx64 " mode=3D%s(saved=3D%= s) " @@ -1875,8 +1875,10 @@ void mb_tcg_init(void) tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, msr), "rmsr"); cpu_SR[SR_EAR] =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, ear), "rear"); + cpu_SR[SR_ESR] =3D + tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, esr), "resr"); =20 - for (i =3D SR_EAR + 1; i < ARRAY_SIZE(cpu_SR); i++) { + for (i =3D SR_ESR + 1; i < ARRAY_SIZE(cpu_SR); i++) { cpu_SR[i] =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, sregs[i]), special_regnames[i]); --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890346; cv=none; d=zohomail.com; s=zohoarc; b=cXyenr4Z4v5VbkFYus2rPeU+Mwz12v/hkSSNLyByvC7xQQNK2KPjNUxUszPlHwO451pUxS14hBU9ZQ7dhG8gjWp+z4dFq2kdHHeTSlghdYTJk+L86p9akDKTjZKHofiPk/+O60A5DnSfPV0fDd28ihuabztiuvcM5Hu7IBuOxSY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890346; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=oEZ6XwzSLdLUNcv14pMjAGwsjuyjSPVjObcH4wzuZHk=; b=ZuuyYOvZB+81d1yWDNKriSUBBsHnkf39MVVE1VH90Xc3a39FIKOPKANOKzPELVana2tNjy3nVnBnvoU2kfk7r77CU8Yv0wGMviwLVxYd3HFu8wL5uQJD/0l2nah/qOw8ujAKmpsE7B6hI52GQeOPw/VQeJqp/E44wln8Ch5zUkM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890346171512.7906098131098; Mon, 31 Aug 2020 09:12:26 -0700 (PDT) Received: from localhost ([::1]:52024 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmPx-0007D6-Cl for importer@patchew.org; Mon, 31 Aug 2020 12:12:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33500) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmK4-0003fX-Iq for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:20 -0400 Received: from mail-pg1-x543.google.com ([2607:f8b0:4864:20::543]:40489) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmK2-0005wE-Ko for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:20 -0400 Received: by mail-pg1-x543.google.com with SMTP id h12so830150pgm.7 for ; Mon, 31 Aug 2020 09:06:18 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=oEZ6XwzSLdLUNcv14pMjAGwsjuyjSPVjObcH4wzuZHk=; b=kQzf0Iuna43q+d+LgkVHUuwDJJoVx3AVSb+1q/vrSq/aUnyz3XQd2BZqBirOHABM63 3DndIeKkLh6wkiA2hIEaNv4X+jb1YuNMljPm1DzG5kzlEG12RsevQvlTq2+EJXNRx4vR ITwgp0pX3Gt5cP+dSqNp/Z0WTahyeUdxvuyGjAKxPEaknXVELwaRJQIpZ6Qhi7cYEAgB 6HriZjTaHdhpo8oJC6UzXoThbbND3bMT9KPmKv93popwMAaVR9eGoCRJPYaitN4sFLRB o9myfDB9iVtgflyIJhyCfKPL1bdGxpOgeqvaF7jQ4VFa98128/tUGev7PHGjqRmmdOWN ttaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=oEZ6XwzSLdLUNcv14pMjAGwsjuyjSPVjObcH4wzuZHk=; b=p0iPFGHU+zAa2YGb/9Jn7XUWKE91kqR3f7mRoTzt3v3eEkLpKfRSB3n4FOYtK/6geB GVQHKt2eZzhPFQrbPTOhVTETP9SDhakVjQHAkQpgpPLjrHyuTMSysTBWSZKoWrjpiGig zBl9IqexLqpNszppgpVV/pDyv23A9KOyvaJE9HtQetxsYarfg0TWTik25xhLTy6HrchV 317fdUmGICrWhct83lKCTnYarUE7qIwbQujm415okCLU4kKjRSw3plOkkcv1TM1EH7Fa xgLc0c7vsAvO0+N2jEVlPgUttdICWzUvzMr9YrCB+rcm6MU/slTfrZKVdTEoSPqmQs+l hV7w== X-Gm-Message-State: AOAM533RreIKy+ZwkV6Idrldx+hB8bCplxe/ruSIf46VmfLnSjDUxpNx YbWMsAOQUr5vCuS9N+BML/b4t68gOYyIpw== X-Google-Smtp-Source: ABdhPJyLPVxzGyyxO4JE/Yu7YZHOK5Z0ctpKvC7nTb3BXTNy4+kckgeNWc3VLyGCwvBPte62/nc3Vw== X-Received: by 2002:a63:2809:: with SMTP id o9mr1816144pgo.410.1598889976777; Mon, 31 Aug 2020 09:06:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 09/76] target/microblaze: Split out FSR from env->sregs Date: Mon, 31 Aug 2020 09:04:54 -0700 Message-Id: <20200831160601.833692-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::543; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x543.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Continue eliminating the sregs array in favor of individual members. Does not correct the width of FSR, yet. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/cpu.h | 1 + linux-user/microblaze/cpu_loop.c | 4 ++-- target/microblaze/gdbstub.c | 4 ++-- target/microblaze/op_helper.c | 8 ++++---- target/microblaze/translate.c | 6 ++++-- 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index 7d94af43ed..bcafef99b0 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -240,6 +240,7 @@ struct CPUMBState { uint64_t msr; uint64_t ear; uint64_t esr; + uint64_t fsr; uint64_t sregs[14]; float_status fp_status; /* Stack protectors. Yes, it's a hw feature. */ diff --git a/linux-user/microblaze/cpu_loop.c b/linux-user/microblaze/cpu_l= oop.c index c10e3e0261..da5e98b784 100644 --- a/linux-user/microblaze/cpu_loop.c +++ b/linux-user/microblaze/cpu_loop.c @@ -96,10 +96,10 @@ void cpu_loop(CPUMBState *env) case ESR_EC_FPU: info.si_signo =3D TARGET_SIGFPE; info.si_errno =3D 0; - if (env->sregs[SR_FSR] & FSR_IO) { + if (env->fsr & FSR_IO) { info.si_code =3D TARGET_FPE_FLTINV; } - if (env->sregs[SR_FSR] & FSR_DZ) { + if (env->fsr & FSR_DZ) { info.si_code =3D TARGET_FPE_FLTDIV; } info._sifields._sigfault._addr =3D 0; diff --git a/target/microblaze/gdbstub.c b/target/microblaze/gdbstub.c index 05e22f233d..2634ce49fc 100644 --- a/target/microblaze/gdbstub.c +++ b/target/microblaze/gdbstub.c @@ -71,7 +71,7 @@ int mb_cpu_gdb_read_register(CPUState *cs, GByteArray *me= m_buf, int n) val =3D env->esr; break; case GDB_FSR: - val =3D env->sregs[SR_FSR]; + val =3D env->fsr; break; case GDB_BTR: val =3D env->sregs[SR_BTR]; @@ -127,7 +127,7 @@ int mb_cpu_gdb_write_register(CPUState *cs, uint8_t *me= m_buf, int n) env->esr =3D tmp; break; case GDB_FSR: - env->sregs[SR_FSR] =3D tmp; + env->fsr =3D tmp; break; case GDB_BTR: env->sregs[SR_BTR] =3D tmp; diff --git a/target/microblaze/op_helper.c b/target/microblaze/op_helper.c index f01cf9be64..ae57d45536 100644 --- a/target/microblaze/op_helper.c +++ b/target/microblaze/op_helper.c @@ -175,19 +175,19 @@ static void update_fpu_flags(CPUMBState *env, int fla= gs) int raise =3D 0; =20 if (flags & float_flag_invalid) { - env->sregs[SR_FSR] |=3D FSR_IO; + env->fsr |=3D FSR_IO; raise =3D 1; } if (flags & float_flag_divbyzero) { - env->sregs[SR_FSR] |=3D FSR_DZ; + env->fsr |=3D FSR_DZ; raise =3D 1; } if (flags & float_flag_overflow) { - env->sregs[SR_FSR] |=3D FSR_OF; + env->fsr |=3D FSR_OF; raise =3D 1; } if (flags & float_flag_underflow) { - env->sregs[SR_FSR] |=3D FSR_UF; + env->fsr |=3D FSR_UF; raise =3D 1; } if (raise diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 411c7b6e49..c58c49ea8f 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -1810,7 +1810,7 @@ void mb_cpu_dump_state(CPUState *cs, FILE *f, int fla= gs) "debug=3D%x imm=3D%x iflags=3D%x fsr=3D%" PRIx64 " " "rbtr=3D%" PRIx64 "\n", env->msr, env->esr, env->ear, - env->debug, env->imm, env->iflags, env->sregs[SR_FSR], + env->debug, env->imm, env->iflags, env->fsr, env->sregs[SR_BTR]); qemu_fprintf(f, "btaken=3D%d btarget=3D%" PRIx64 " mode=3D%s(saved=3D%= s) " "eip=3D%d ie=3D%d\n", @@ -1877,8 +1877,10 @@ void mb_tcg_init(void) tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, ear), "rear"); cpu_SR[SR_ESR] =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, esr), "resr"); + cpu_SR[SR_FSR] =3D + tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, fsr), "rfsr"); =20 - for (i =3D SR_ESR + 1; i < ARRAY_SIZE(cpu_SR); i++) { + for (i =3D SR_FSR + 1; i < ARRAY_SIZE(cpu_SR); i++) { cpu_SR[i] =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, sregs[i]), special_regnames[i]); --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890422; cv=none; d=zohomail.com; s=zohoarc; b=ZUJZ/wb+Iw8iMuoy7nfR7T60tLlxyOc17JLFf7itTl5F8tHOVfoGP1EQqlOYepXa9E35IPnscAEEjvd+UkLQxPKzsiKO9JxxGNSJPnDlZNu6UuZY08gkPSSPJVMnoVJUkMXyUBLe2EfGeL12dyCvgnfZuWU8WSQ1xdMg1oaqhFs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890422; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=2lk+ZBWQv/ZXsPrb8oTjpivGovxY9zx2pXrc7J4dxPM=; b=oFTniCCbtxvAprbMd3NFak7Ihcpaq4t0v34oVYoCw4YBFiSAslVKbFVxCR5O72QR2cLiwirqI992GwtzIn+FxFc5wpvLG4gmmT0Phqp+7TPnqEA8s41y6JFjmVjeA8tJQgwWxVtDFsoxdUzmPGAsda368WoEALSmhCahs5AgsDk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890422189356.75645685316783; Mon, 31 Aug 2020 09:13:42 -0700 (PDT) Received: from localhost ([::1]:60418 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmRB-00026c-Ci for importer@patchew.org; Mon, 31 Aug 2020 12:13:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33514) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmK5-0003ih-Sm for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:21 -0400 Received: from mail-pl1-x643.google.com ([2607:f8b0:4864:20::643]:38483) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmK3-0005wO-V1 for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:21 -0400 Received: by mail-pl1-x643.google.com with SMTP id t11so3245408plr.5 for ; Mon, 31 Aug 2020 09:06:19 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=2lk+ZBWQv/ZXsPrb8oTjpivGovxY9zx2pXrc7J4dxPM=; b=X2lRUWSfLxP75aJVqWsUnA87fqiUroI4bDp2dCk9ctGSgd7fwNJ0nrQSXDDQhicmLM DN8qq9+nAZmNOlHOBNQROdqwUnyVGfD9P8IHPk2aacLpZ3AmnBVbfKCDV8wmnnmFIXeG mW9GcR35z6BmQnrEX7VAJn1hNn/Y3nR/hS4YjkxmcR35npPmJuCI6wi0AnJW9qzBS0AK /jcHlQTNeffUf7tBFz0++7f5F53D7jb+VTLNk1vwsUUJOelXX6ZUxCgXBXSmw7hc5qii M7Em6nvUAnQkhEYA8EadPs6TntAJ7J8kWTs4ANubbw3Dn9seG9/+efRmw4No8yxSrDIB 4xOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=2lk+ZBWQv/ZXsPrb8oTjpivGovxY9zx2pXrc7J4dxPM=; b=hBiRE3w4t4ERTNFqiEMaOyMPnTXvNFPbZhavTmbrJ9ve/bkQIrSo20WIiHSNfmPJGB d6YaE/XsV9tuBDm9lRTbTKKIaP0fNcDDdBtWYxKd3T/vuK1+b6lBNhRbs249J4W3jcwk DpdaxiC8IamUEbneAbT5gVACgetTK8+HRgXmG76yaB7JX8TpAsKdCCYpGIlOh/2kmpEV ZJYLUpNKXDYqcIWxdQhLz5qNbXfNSMpK+bz3MdMIxE8aX1jr7IKDXkA6AfgJENnfr9Bs T2vqDB3dqluzeCngIp3BMhbujHoU1pCrhV9yiFt/L//N6QyZuF1ggDDxI6bMJEUWVeLG plkw== X-Gm-Message-State: AOAM530s2W2Hzrbes+Zx4tVhiY8uj7DMpi0ymHs50N66v6UDo5387cI3 JPX3llMF07P/ec59uKzAtaPjP3VIumvUZQ== X-Google-Smtp-Source: ABdhPJwBKVnswPYj4NMtd55sGUZzce2fHd5YUjdo/JvDPeBVP/GXgi4iHIWspH7RsbbPhpYmnrxKTQ== X-Received: by 2002:a17:902:708b:: with SMTP id z11mr1577952plk.326.1598889978061; Mon, 31 Aug 2020 09:06:18 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 10/76] target/microblaze: Split out BTR from env->sregs Date: Mon, 31 Aug 2020 09:04:55 -0700 Message-Id: <20200831160601.833692-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::643; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x643.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Continue eliminating the sregs array in favor of individual members. Does not correct the width of BTR, yet. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/cpu.h | 1 + target/microblaze/gdbstub.c | 4 ++-- target/microblaze/helper.c | 4 ++-- target/microblaze/translate.c | 6 ++++-- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index bcafef99b0..deddb47abb 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -241,6 +241,7 @@ struct CPUMBState { uint64_t ear; uint64_t esr; uint64_t fsr; + uint64_t btr; uint64_t sregs[14]; float_status fp_status; /* Stack protectors. Yes, it's a hw feature. */ diff --git a/target/microblaze/gdbstub.c b/target/microblaze/gdbstub.c index 2634ce49fc..cde8c169bf 100644 --- a/target/microblaze/gdbstub.c +++ b/target/microblaze/gdbstub.c @@ -74,7 +74,7 @@ int mb_cpu_gdb_read_register(CPUState *cs, GByteArray *me= m_buf, int n) val =3D env->fsr; break; case GDB_BTR: - val =3D env->sregs[SR_BTR]; + val =3D env->btr; break; case GDB_PVR0 ... GDB_PVR11: /* PVR12 is intentionally skipped */ @@ -130,7 +130,7 @@ int mb_cpu_gdb_write_register(CPUState *cs, uint8_t *me= m_buf, int n) env->fsr =3D tmp; break; case GDB_BTR: - env->sregs[SR_BTR] =3D tmp; + env->btr =3D tmp; break; case GDB_PVR0 ... GDB_PVR11: /* PVR12 is intentionally skipped */ diff --git a/target/microblaze/helper.c b/target/microblaze/helper.c index ea290be780..b240dc76f6 100644 --- a/target/microblaze/helper.c +++ b/target/microblaze/helper.c @@ -132,7 +132,7 @@ void mb_cpu_do_interrupt(CPUState *cs) /* Exception breaks branch + dslot sequence? */ if (env->iflags & D_FLAG) { env->esr |=3D 1 << 12 ; - env->sregs[SR_BTR] =3D env->btarget; + env->btr =3D env->btarget; } =20 /* Disable the MMU. */ @@ -160,7 +160,7 @@ void mb_cpu_do_interrupt(CPUState *cs) if (env->iflags & D_FLAG) { D(qemu_log("D_FLAG set at exception bimm=3D%d\n", env->bim= m)); env->esr |=3D 1 << 12 ; - env->sregs[SR_BTR] =3D env->btarget; + env->btr =3D env->btarget; =20 /* Reexecute the branch. */ env->regs[17] -=3D 4; diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index c58c49ea8f..469e1f103a 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -1811,7 +1811,7 @@ void mb_cpu_dump_state(CPUState *cs, FILE *f, int fla= gs) "rbtr=3D%" PRIx64 "\n", env->msr, env->esr, env->ear, env->debug, env->imm, env->iflags, env->fsr, - env->sregs[SR_BTR]); + env->btr); qemu_fprintf(f, "btaken=3D%d btarget=3D%" PRIx64 " mode=3D%s(saved=3D%= s) " "eip=3D%d ie=3D%d\n", env->btaken, env->btarget, @@ -1879,8 +1879,10 @@ void mb_tcg_init(void) tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, esr), "resr"); cpu_SR[SR_FSR] =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, fsr), "rfsr"); + cpu_SR[SR_BTR] =3D + tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, btr), "rbtr"); =20 - for (i =3D SR_FSR + 1; i < ARRAY_SIZE(cpu_SR); i++) { + for (i =3D SR_BTR + 1; i < ARRAY_SIZE(cpu_SR); i++) { cpu_SR[i] =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, sregs[i]), special_regnames[i]); --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890335; cv=none; d=zohomail.com; s=zohoarc; b=Y3ohkVeooGj+kqvhgdRo6kDdUXqaaiKUZ6k0QGdCEcM9UMuw4rIE/noYHDdoJuq0BQn26gAPgnKRZZT7wPalJQDFOCi3SCxvWl9wu121lbAIRSZjb2rMFf3mA9OXSeBtVVCsgDYLQl6iFFqPr142LyBBE44wXS2mlSG+Vp0Hngk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890335; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=guRLfyQ5/XhJ1Mgq6/AuaC/qOXaXu2B07mw+FlYgWKE=; b=TmhSSNOuDL9WPncmv5+qWFNFwkT2ahWUhGNBtDreuEP1FXmoZ5XKGOgPqFhNFAMeY89YzPlhRJhv7AsIJvHCQfYl5LM6STBfHMgbcTfND7txhnkqv14gDqlfOco1mRMGIvZ5+EFP8FfIZbC0sVWvGMSghHveM1MWFN+s6t+dR+s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890335910403.35193757149693; Mon, 31 Aug 2020 09:12:15 -0700 (PDT) Received: from localhost ([::1]:50958 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmPm-0006mn-Vq for importer@patchew.org; Mon, 31 Aug 2020 12:12:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33536) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmK7-0003ma-El for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:23 -0400 Received: from mail-pf1-x441.google.com ([2607:f8b0:4864:20::441]:43668) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmK5-0005wX-1S for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:23 -0400 Received: by mail-pf1-x441.google.com with SMTP id f18so799863pfa.10 for ; Mon, 31 Aug 2020 09:06:20 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=guRLfyQ5/XhJ1Mgq6/AuaC/qOXaXu2B07mw+FlYgWKE=; b=YbKVajacXZxfM+N+dpIX8kTeTD0OYrBlbNah7oVUM5TN75Hh4Kw5EYVhH4ABaKFkx1 AD3DbLwvY+hcOle4Kx4OYqn+UKljoiaRO9hauoK92ONj2gw1WfAnZ0doni4joGurSLdI zA3DEFVOBEYQ+O7MXhH6uf0u2aKh/h/S3NqbsHRDD4B/t3QNvzmm2sTvE51FYQA9qX2+ FSxqHnU6fLUAoc9M6QlU2+o6FKZvJunlq17cobXrnBUCIbeKfa3163KheyZcta2yj7w3 3/Cnh1eNjeqsYYIJF3qdZ0IwHRW9vUn03qCua6jGa2Q9t3viielo47g4KW2KSIjU0oFI 1zTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=guRLfyQ5/XhJ1Mgq6/AuaC/qOXaXu2B07mw+FlYgWKE=; b=RL3usONe1+zHnAaypGlaEW8On+FY7gGQ48AFCuTO+6KE/fEu3A4IDS6DCVU+nShfU4 IDkWUzasZiIomzOTriEamF4JinzLzZfQ6d/05/XY/Oqy5FqCdO3myHRrIzlnbpEQViwi l0hdaOL/C9PtWzskp454F7WWH823VD4SzIzGqWodJUyR6VtSMQ76z8jE25F5ZRZzT0tQ oSJ6ZfMVLHKUxYovEXyWk14Hkg7PDRELLimS5509RFH0piembCGzAMuIweT24dnOn7RN UZvhcgoZR3UC1XHnuuU+K2Rvs6ngfdWD9on2capow0DRCx7CxJN50WT6CmZNrAWIvxLu EVHA== X-Gm-Message-State: AOAM533x1JDIFNZNapNQFEDvKq8OF54adBzt0xq/22kMD/HXUjlvKgan 9JgICs71E1RAYEjsCJe8h8W4TpYaB/YVFA== X-Google-Smtp-Source: ABdhPJyc9B9XgqZc+WoL28pMEMzMubENJlx8IFH1pJZ01f2+Qz/BFihgoOHZ5LVhMiyyJ6Uk55tEyw== X-Received: by 2002:a63:d003:: with SMTP id z3mr1810994pgf.424.1598889979266; Mon, 31 Aug 2020 09:06:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 11/76] target/microblaze: Split out EDR from env->sregs Date: Mon, 31 Aug 2020 09:04:56 -0700 Message-Id: <20200831160601.833692-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::441; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x441.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Finish eliminating the sregs array in favor of individual members. Does not correct the width of EDR, yet. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/cpu.h | 2 +- linux-user/elfload.c | 9 ++++++--- target/microblaze/gdbstub.c | 4 ++-- target/microblaze/translate.c | 16 +++------------- 4 files changed, 12 insertions(+), 19 deletions(-) diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index deddb47abb..610ddfb719 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -242,7 +242,7 @@ struct CPUMBState { uint64_t esr; uint64_t fsr; uint64_t btr; - uint64_t sregs[14]; + uint64_t edr; float_status fp_status; /* Stack protectors. Yes, it's a hw feature. */ uint32_t slr, shr; diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 69936dcd45..58b3f4ef4d 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -1038,9 +1038,12 @@ static void elf_core_copy_regs(target_elf_gregset_t = *regs, const CPUMBState *env (*regs)[pos++] =3D tswapreg(env->regs[i]); } =20 - for (i =3D 0; i < 6; i++) { - (*regs)[pos++] =3D tswapreg(env->sregs[i]); - } + (*regs)[pos++] =3D tswapreg(env->pc); + (*regs)[pos++] =3D tswapreg(env->msr); + (*regs)[pos++] =3D 0; + (*regs)[pos++] =3D tswapreg(env->ear); + (*regs)[pos++] =3D 0; + (*regs)[pos++] =3D tswapreg(env->esr); } =20 #endif /* TARGET_MICROBLAZE */ diff --git a/target/microblaze/gdbstub.c b/target/microblaze/gdbstub.c index cde8c169bf..9cba9d2215 100644 --- a/target/microblaze/gdbstub.c +++ b/target/microblaze/gdbstub.c @@ -81,7 +81,7 @@ int mb_cpu_gdb_read_register(CPUState *cs, GByteArray *me= m_buf, int n) val =3D env->pvr.regs[n - GDB_PVR0]; break; case GDB_EDR: - val =3D env->sregs[SR_EDR]; + val =3D env->edr; break; case GDB_SLR: val =3D env->slr; @@ -137,7 +137,7 @@ int mb_cpu_gdb_write_register(CPUState *cs, uint8_t *me= m_buf, int n) env->pvr.regs[n - GDB_PVR0] =3D tmp; break; case GDB_EDR: - env->sregs[SR_EDR] =3D tmp; + env->edr =3D tmp; break; case GDB_SLR: env->slr =3D tmp; diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 469e1f103a..7d307e6b48 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -103,12 +103,6 @@ static const char *regnames[] =3D "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31", }; =20 -static const char *special_regnames[] =3D -{ - "rpc", "rmsr", "sr2", "rear", "sr4", "resr", "sr6", "rfsr", - "sr8", "sr9", "sr10", "rbtr", "sr12", "redr" -}; - static inline void t_sync_flags(DisasContext *dc) { /* Synch the tb dependent flags between translator and runtime. */ @@ -1828,7 +1822,7 @@ void mb_cpu_dump_state(CPUState *cs, FILE *f, int fla= gs) =20 /* Registers that aren't modeled are reported as 0 */ qemu_fprintf(f, "redr=3D%" PRIx64 " rpid=3D0 rzpr=3D0 rtlbx=3D0 rtlbsx= =3D0 " - "rtlblo=3D0 rtlbhi=3D0\n", env->sregs[SR_EDR]); + "rtlblo=3D0 rtlbhi=3D0\n", env->edr); qemu_fprintf(f, "slr=3D%x shr=3D%x\n", env->slr, env->shr); for (i =3D 0; i < 32; i++) { qemu_fprintf(f, "r%2.2d=3D%8.8x ", i, env->regs[i]); @@ -1881,12 +1875,8 @@ void mb_tcg_init(void) tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, fsr), "rfsr"); cpu_SR[SR_BTR] =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, btr), "rbtr"); - - for (i =3D SR_BTR + 1; i < ARRAY_SIZE(cpu_SR); i++) { - cpu_SR[i] =3D tcg_global_mem_new_i64(cpu_env, - offsetof(CPUMBState, sregs[i]), - special_regnames[i]); - } + cpu_SR[SR_EDR] =3D + tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, edr), "redr"); } =20 void restore_state_to_opc(CPUMBState *env, TranslationBlock *tb, --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890057; cv=none; d=zohomail.com; s=zohoarc; b=Qz7ju7YLinadWfdvNTdB+fZBJHh8HLZwMs7isDSe5DBMHIgbhFNNUWEJRCRVACnNfM1dMhy9EkdFEq3MbYTW2O7lO2DAjU52s6ZNGKUmnNSLMjRNBvslfhAYEGmTlKaNZxx9ODK3QvVtyN0cEFAeGPoswrnVrT3IEOEsYOxcDC8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890057; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=rviE8ITGPbpKSnQ4cqqSurUDqrYfoOOIiBP/tQ1BJEU=; b=SZho66sJAhZ2sF+cUO93Lwuj22wmVPfvI+tCJ4TaOu8ZYsnojcLTf5SCCkXtZoT6cXmCe3idYyaLXgWR4xGDOfNol2wRq8w9B5BTAp4zENGVd/Azn95ZnnLusjgxHv6IAgrXoMyMQmAmRoB1X1Sx9fwxsVlcNftMocGTnXYqin4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890057938885.6492769579837; Mon, 31 Aug 2020 09:07:37 -0700 (PDT) Received: from localhost ([::1]:55902 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmLI-0005gN-WE for importer@patchew.org; Mon, 31 Aug 2020 12:07:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33566) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmK9-0003qw-94 for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:25 -0400 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]:52130) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmK6-0005wm-Hu for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:24 -0400 Received: by mail-pj1-x1031.google.com with SMTP id ds1so30603pjb.1 for ; Mon, 31 Aug 2020 09:06:22 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rviE8ITGPbpKSnQ4cqqSurUDqrYfoOOIiBP/tQ1BJEU=; b=CAyq3DFyTdlJ0GaleDf5zFklWdv75o7m5jdURwqWOAtFp1wT+jz84czGcPnX/EZkA9 s1PqfzGpBXWajpNxANOI3s9xZ0P0dTPdgkMMrTFmdIYlEK+EEbOmhP2r4flns6n0rcTG qsldw7GlkleIRT7Fa2ZCylmZdT4KvCPdfJJzdEpLWXZD/RZPM3WxqKclcdDicx0raC6c QrvF5ALRD/Ap96KWst/m1fVYj14ehDux3vsVADk9nYFfXAEKSwdQILPpaONQe+dFV3uW ES5Pm6dI9mMR1/raQUNBUAm+Eex2/A6egxn0yC00AsN1YdJKHo7qgEvL1llW5LTbcg+V r2gQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rviE8ITGPbpKSnQ4cqqSurUDqrYfoOOIiBP/tQ1BJEU=; b=M5f9rZURUhhCaMgZkTh/HORkuYkC4tRxYq7Fp18+ETclOuzXnOgowrW+Zsc+uWvQNI I1xIfzTyjqXt4fnWDBNUnxtmRphYedaEkJOBe0KBQ/8FDR8MCA/Gjgi8Bwl7hhbYdBHD y2dU8TfuY459AD82oOARsF52Wun8q5PdXY/KrmJiUQdMeqzQ9X0EXZIWZ/oUiTOSZvlN 5IiDy9HraTlFmUbLoJuhYte7gVRtj9Bdwvj8A2jZz9Lgjr/dq+gLGzpj9+TJuLygtKaV SqP/jIAxlVxx4g1BJinZdYagic7w5EUHmdiHCJz8NANIFUMyC9fUTH0wfOVxBOWPzjdD +lZg== X-Gm-Message-State: AOAM530ZvrrJ2oShKt1e7+t09J2UEkgSW3Znx/gAYikEL9m8sDHfuA4p ATcKMssJRIFL+PswaCXGym9DAMOE+SKKNg== X-Google-Smtp-Source: ABdhPJyvidyNb4jnhXCdHLORzGYyHYg2bXJ3T1Vd0T4JQu2MCh0HzjHJu5xVmJV4c6M4RxRi62bX/g== X-Received: by 2002:a17:902:6901:: with SMTP id j1mr1587497plk.324.1598889980609; Mon, 31 Aug 2020 09:06:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 12/76] target/microblaze: Split the cpu_SR array Date: Mon, 31 Aug 2020 09:04:57 -0700 Message-Id: <20200831160601.833692-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1031.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Similar to splitting the sregs array, this will allow further fixes and cleanups. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/translate.c | 106 +++++++++++++++++++++------------- 1 file changed, 65 insertions(+), 41 deletions(-) diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 7d307e6b48..19d7b8abfd 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -55,7 +55,13 @@ =20 static TCGv_i32 env_debug; static TCGv_i32 cpu_R[32]; -static TCGv_i64 cpu_SR[14]; +static TCGv_i64 cpu_pc; +static TCGv_i64 cpu_msr; +static TCGv_i64 cpu_ear; +static TCGv_i64 cpu_esr; +static TCGv_i64 cpu_fsr; +static TCGv_i64 cpu_btr; +static TCGv_i64 cpu_edr; static TCGv_i32 env_imm; static TCGv_i32 env_btaken; static TCGv_i64 env_btarget; @@ -117,7 +123,7 @@ static inline void t_gen_raise_exception(DisasContext *= dc, uint32_t index) TCGv_i32 tmp =3D tcg_const_i32(index); =20 t_sync_flags(dc); - tcg_gen_movi_i64(cpu_SR[SR_PC], dc->pc); + tcg_gen_movi_i64(cpu_pc, dc->pc); gen_helper_raise_exception(cpu_env, tmp); tcg_temp_free_i32(tmp); dc->is_jmp =3D DISAS_UPDATE; @@ -136,17 +142,17 @@ static void gen_goto_tb(DisasContext *dc, int n, targ= et_ulong dest) { if (use_goto_tb(dc, dest)) { tcg_gen_goto_tb(n); - tcg_gen_movi_i64(cpu_SR[SR_PC], dest); + tcg_gen_movi_i64(cpu_pc, dest); tcg_gen_exit_tb(dc->tb, n); } else { - tcg_gen_movi_i64(cpu_SR[SR_PC], dest); + tcg_gen_movi_i64(cpu_pc, dest); tcg_gen_exit_tb(NULL, 0); } } =20 static void read_carry(DisasContext *dc, TCGv_i32 d) { - tcg_gen_extrl_i64_i32(d, cpu_SR[SR_MSR]); + tcg_gen_extrl_i64_i32(d, cpu_msr); tcg_gen_shri_i32(d, d, 31); } =20 @@ -159,8 +165,8 @@ static void write_carry(DisasContext *dc, TCGv_i32 v) TCGv_i64 t0 =3D tcg_temp_new_i64(); tcg_gen_extu_i32_i64(t0, v); /* Deposit bit 0 into MSR_C and the alias MSR_CC. */ - tcg_gen_deposit_i64(cpu_SR[SR_MSR], cpu_SR[SR_MSR], t0, 2, 1); - tcg_gen_deposit_i64(cpu_SR[SR_MSR], cpu_SR[SR_MSR], t0, 31, 1); + tcg_gen_deposit_i64(cpu_msr, cpu_msr, t0, 2, 1); + tcg_gen_deposit_i64(cpu_msr, cpu_msr, t0, 31, 1); tcg_temp_free_i64(t0); } =20 @@ -180,7 +186,7 @@ static bool trap_illegal(DisasContext *dc, bool cond) { if (cond && (dc->tb_flags & MSR_EE_FLAG) && dc->cpu->cfg.illegal_opcode_exception) { - tcg_gen_movi_i64(cpu_SR[SR_ESR], ESR_EC_ILLEGAL_OP); + tcg_gen_movi_i64(cpu_esr, ESR_EC_ILLEGAL_OP); t_gen_raise_exception(dc, EXCP_HW_EXCP); } return cond; @@ -196,7 +202,7 @@ static bool trap_userspace(DisasContext *dc, bool cond) bool cond_user =3D cond && mem_index =3D=3D MMU_USER_IDX; =20 if (cond_user && (dc->tb_flags & MSR_EE_FLAG)) { - tcg_gen_movi_i64(cpu_SR[SR_ESR], ESR_EC_PRIVINSN); + tcg_gen_movi_i64(cpu_esr, ESR_EC_PRIVINSN); t_gen_raise_exception(dc, EXCP_HW_EXCP); } return cond_user; @@ -431,7 +437,7 @@ static void dec_xor(DisasContext *dc) =20 static inline void msr_read(DisasContext *dc, TCGv_i32 d) { - tcg_gen_extrl_i64_i32(d, cpu_SR[SR_MSR]); + tcg_gen_extrl_i64_i32(d, cpu_msr); } =20 static inline void msr_write(DisasContext *dc, TCGv_i32 v) @@ -443,8 +449,8 @@ static inline void msr_write(DisasContext *dc, TCGv_i32= v) /* PVR bit is not writable. */ tcg_gen_extu_i32_i64(t, v); tcg_gen_andi_i64(t, t, ~MSR_PVR); - tcg_gen_andi_i64(cpu_SR[SR_MSR], cpu_SR[SR_MSR], MSR_PVR); - tcg_gen_or_i64(cpu_SR[SR_MSR], cpu_SR[SR_MSR], t); + tcg_gen_andi_i64(cpu_msr, cpu_msr, MSR_PVR); + tcg_gen_or_i64(cpu_msr, cpu_msr, t); tcg_temp_free_i64(t); } =20 @@ -503,7 +509,7 @@ static void dec_msr(DisasContext *dc) msr_write(dc, t0); tcg_temp_free_i32(t0); tcg_temp_free_i32(t1); - tcg_gen_movi_i64(cpu_SR[SR_PC], dc->pc + 4); + tcg_gen_movi_i64(cpu_pc, dc->pc + 4); dc->is_jmp =3D DISAS_UPDATE; return; } @@ -535,15 +541,25 @@ static void dec_msr(DisasContext *dc) if (to) { LOG_DIS("m%ss sr%x r%d imm=3D%x\n", to ? "t" : "f", sr, dc->ra, dc= ->imm); switch (sr) { - case 0: + case SR_PC: break; - case 1: + case SR_MSR: msr_write(dc, cpu_R[dc->ra]); break; case SR_EAR: + tcg_gen_extu_i32_i64(cpu_ear, cpu_R[dc->ra]); + break; case SR_ESR: + tcg_gen_extu_i32_i64(cpu_esr, cpu_R[dc->ra]); + break; case SR_FSR: - tcg_gen_extu_i32_i64(cpu_SR[sr], cpu_R[dc->ra]); + tcg_gen_extu_i32_i64(cpu_fsr, cpu_R[dc->ra]); + break; + case SR_BTR: + tcg_gen_extu_i32_i64(cpu_btr, cpu_R[dc->ra]); + break; + case SR_EDR: + tcg_gen_extu_i32_i64(cpu_edr, cpu_R[dc->ra]); break; case 0x800: tcg_gen_st_i32(cpu_R[dc->ra], @@ -561,22 +577,30 @@ static void dec_msr(DisasContext *dc) LOG_DIS("m%ss r%d sr%x imm=3D%x\n", to ? "t" : "f", dc->rd, sr, dc= ->imm); =20 switch (sr) { - case 0: + case SR_PC: tcg_gen_movi_i32(cpu_R[dc->rd], dc->pc); break; - case 1: + case SR_MSR: msr_read(dc, cpu_R[dc->rd]); break; case SR_EAR: if (extended) { - tcg_gen_extrh_i64_i32(cpu_R[dc->rd], cpu_SR[sr]); - break; + tcg_gen_extrh_i64_i32(cpu_R[dc->rd], cpu_ear); + } else { + tcg_gen_extrl_i64_i32(cpu_R[dc->rd], cpu_ear); } + break; case SR_ESR: + tcg_gen_extrl_i64_i32(cpu_R[dc->rd], cpu_esr); + break; case SR_FSR: + tcg_gen_extrl_i64_i32(cpu_R[dc->rd], cpu_fsr); + break; case SR_BTR: + tcg_gen_extrl_i64_i32(cpu_R[dc->rd], cpu_btr); + break; case SR_EDR: - tcg_gen_extrl_i64_i32(cpu_R[dc->rd], cpu_SR[sr]); + tcg_gen_extrl_i64_i32(cpu_R[dc->rd], cpu_edr); break; case 0x800: tcg_gen_ld_i32(cpu_R[dc->rd], @@ -749,7 +773,7 @@ static void dec_bit(DisasContext *dc) t0 =3D tcg_temp_new_i32(); =20 LOG_DIS("src r%d r%d\n", dc->rd, dc->ra); - tcg_gen_extrl_i64_i32(t0, cpu_SR[SR_MSR]); + tcg_gen_extrl_i64_i32(t0, cpu_msr); tcg_gen_andi_i32(t0, t0, MSR_CC); write_carry(dc, cpu_R[dc->ra]); if (dc->rd) { @@ -995,7 +1019,7 @@ static void dec_load(DisasContext *dc) TCGv_i32 treg =3D tcg_const_i32(dc->rd); TCGv_i32 tsize =3D tcg_const_i32(size - 1); =20 - tcg_gen_movi_i64(cpu_SR[SR_PC], dc->pc); + tcg_gen_movi_i64(cpu_pc, dc->pc); gen_helper_memalign(cpu_env, addr, treg, t0, tsize); =20 tcg_temp_free_i32(t0); @@ -1115,7 +1139,7 @@ static void dec_store(DisasContext *dc) TCGv_i32 treg =3D tcg_const_i32(dc->rd); TCGv_i32 tsize =3D tcg_const_i32(size - 1); =20 - tcg_gen_movi_i64(cpu_SR[SR_PC], dc->pc); + tcg_gen_movi_i64(cpu_pc, dc->pc); /* FIXME: if the alignment is wrong, we should restore the value * in memory. One possible way to achieve this is to probe * the MMU prior to the memaccess, thay way we could put @@ -1169,7 +1193,7 @@ static void eval_cond_jmp(DisasContext *dc, TCGv_i64 = pc_true, TCGv_i64 pc_false) TCGv_i64 tmp_zero =3D tcg_const_i64(0); =20 tcg_gen_extu_i32_i64(tmp_btaken, env_btaken); - tcg_gen_movcond_i64(TCG_COND_NE, cpu_SR[SR_PC], + tcg_gen_movcond_i64(TCG_COND_NE, cpu_pc, tmp_btaken, tmp_zero, pc_true, pc_false); =20 @@ -1253,7 +1277,7 @@ static void dec_br(DisasContext *dc) tcg_gen_st_i32(tmp_1, cpu_env, -offsetof(MicroBlazeCPU, env) +offsetof(CPUState, halted)); - tcg_gen_movi_i64(cpu_SR[SR_PC], dc->pc + 4); + tcg_gen_movi_i64(cpu_pc, dc->pc + 4); gen_helper_raise_exception(cpu_env, tmp_hlt); tcg_temp_free_i32(tmp_hlt); tcg_temp_free_i32(tmp_1); @@ -1309,7 +1333,7 @@ static inline void do_rti(DisasContext *dc) TCGv_i32 t0, t1; t0 =3D tcg_temp_new_i32(); t1 =3D tcg_temp_new_i32(); - tcg_gen_extrl_i64_i32(t1, cpu_SR[SR_MSR]); + tcg_gen_extrl_i64_i32(t1, cpu_msr); tcg_gen_shri_i32(t0, t1, 1); tcg_gen_ori_i32(t1, t1, MSR_IE); tcg_gen_andi_i32(t0, t0, (MSR_VM | MSR_UM)); @@ -1327,7 +1351,7 @@ static inline void do_rtb(DisasContext *dc) TCGv_i32 t0, t1; t0 =3D tcg_temp_new_i32(); t1 =3D tcg_temp_new_i32(); - tcg_gen_extrl_i64_i32(t1, cpu_SR[SR_MSR]); + tcg_gen_extrl_i64_i32(t1, cpu_msr); tcg_gen_andi_i32(t1, t1, ~MSR_BIP); tcg_gen_shri_i32(t0, t1, 1); tcg_gen_andi_i32(t0, t0, (MSR_VM | MSR_UM)); @@ -1346,7 +1370,7 @@ static inline void do_rte(DisasContext *dc) t0 =3D tcg_temp_new_i32(); t1 =3D tcg_temp_new_i32(); =20 - tcg_gen_extrl_i64_i32(t1, cpu_SR[SR_MSR]); + tcg_gen_extrl_i64_i32(t1, cpu_msr); tcg_gen_ori_i32(t1, t1, MSR_EE); tcg_gen_andi_i32(t1, t1, ~MSR_EIP); tcg_gen_shri_i32(t0, t1, 1); @@ -1401,7 +1425,7 @@ static void dec_rts(DisasContext *dc) static int dec_check_fpuv2(DisasContext *dc) { if ((dc->cpu->cfg.use_fpu !=3D 2) && (dc->tb_flags & MSR_EE_FLAG)) { - tcg_gen_movi_i64(cpu_SR[SR_ESR], ESR_EC_FPU); + tcg_gen_movi_i64(cpu_esr, ESR_EC_FPU); t_gen_raise_exception(dc, EXCP_HW_EXCP); } return (dc->cpu->cfg.use_fpu =3D=3D 2) ? PVR2_USE_FPU2_MASK : 0; @@ -1652,7 +1676,7 @@ void gen_intermediate_code(CPUState *cs, TranslationB= lock *tb, int max_insns) =20 #if SIM_COMPAT if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) { - tcg_gen_movi_i64(cpu_SR[SR_PC], dc->pc); + tcg_gen_movi_i64(cpu_pc, dc->pc); gen_helper_debug(); } #endif @@ -1730,7 +1754,7 @@ void gen_intermediate_code(CPUState *cs, TranslationB= lock *tb, int max_insns) if (dc->jmp =3D=3D JMP_DIRECT || dc->jmp =3D=3D JMP_DIRECT_CC) { if (dc->tb_flags & D_FLAG) { dc->is_jmp =3D DISAS_UPDATE; - tcg_gen_movi_i64(cpu_SR[SR_PC], npc); + tcg_gen_movi_i64(cpu_pc, npc); sync_jmpstate(dc); } else npc =3D dc->jmp_pc; @@ -1740,7 +1764,7 @@ void gen_intermediate_code(CPUState *cs, TranslationB= lock *tb, int max_insns) if (dc->is_jmp =3D=3D DISAS_NEXT && (dc->cpustate_changed || org_flags !=3D dc->tb_flags)) { dc->is_jmp =3D DISAS_UPDATE; - tcg_gen_movi_i64(cpu_SR[SR_PC], npc); + tcg_gen_movi_i64(cpu_pc, npc); } t_sync_flags(dc); =20 @@ -1748,7 +1772,7 @@ void gen_intermediate_code(CPUState *cs, TranslationB= lock *tb, int max_insns) TCGv_i32 tmp =3D tcg_const_i32(EXCP_DEBUG); =20 if (dc->is_jmp !=3D DISAS_JUMP) { - tcg_gen_movi_i64(cpu_SR[SR_PC], npc); + tcg_gen_movi_i64(cpu_pc, npc); } gen_helper_raise_exception(cpu_env, tmp); tcg_temp_free_i32(tmp); @@ -1863,19 +1887,19 @@ void mb_tcg_init(void) regnames[i]); } =20 - cpu_SR[SR_PC] =3D + cpu_pc =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, pc), "rpc"); - cpu_SR[SR_MSR] =3D + cpu_msr =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, msr), "rmsr"); - cpu_SR[SR_EAR] =3D + cpu_ear =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, ear), "rear"); - cpu_SR[SR_ESR] =3D + cpu_esr =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, esr), "resr"); - cpu_SR[SR_FSR] =3D + cpu_fsr =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, fsr), "rfsr"); - cpu_SR[SR_BTR] =3D + cpu_btr =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, btr), "rbtr"); - cpu_SR[SR_EDR] =3D + cpu_edr =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, edr), "redr"); } =20 --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890412; cv=none; d=zohomail.com; s=zohoarc; b=CVaEAbV5XXC8unQUJusClnA5VLYzMRxtw4vPHRnquStoxNIQpmm1wY/qCSlmlMAGMGmY6QbtOdPD3RhTh8mnflWeo9M7e6nSbN3i2D76lRV/PTMYS6iC/U5+CcUHGPxdNY3dBOJtaMVFWwOnNjTKxLjgVF44b+/320WCosPgyjU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890412; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=7wpRkYrXRxnWUCPbRdAvlCNGmdZ4UaHFTCGkl7XSQEo=; b=V1j9fCtSvglrpYhxn1sOuxO8tGkEaXVlviGPsbogVEqwLEdn815AaeBi8fueg5D7E1gHoQXRujBBrZbn+vmjHvAxpDWOcZTxuAL+DPBetCs8/pQKV8pNeZiHsV2G/FNmKViJQoWoUOS8tr0CQr4w4priLRNpEi1FaIvbnnFrzqo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890412885262.6300012816496; Mon, 31 Aug 2020 09:13:32 -0700 (PDT) Received: from localhost ([::1]:59356 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmR1-0001gw-RA for importer@patchew.org; Mon, 31 Aug 2020 12:13:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33584) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKA-0003tr-GM for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:26 -0400 Received: from mail-pj1-x1032.google.com ([2607:f8b0:4864:20::1032]:35952) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmK7-0005wx-Rd for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:26 -0400 Received: by mail-pj1-x1032.google.com with SMTP id q1so29421pjd.1 for ; Mon, 31 Aug 2020 09:06:23 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7wpRkYrXRxnWUCPbRdAvlCNGmdZ4UaHFTCGkl7XSQEo=; b=vzfFOdR7SGbuG/80wYag22MTpet40FxAVDMxleh+PvGqtvc40pWheLKTXSGh2PGKXU MqZA8N/aZ6m+SrOwq/tnQVjpKfpuU9WhaouwJ/+qzb3oMRVbEOvS/pgQpbPTeJM+pzyJ vH8AbKqQb1tBiaWQxEckzF/rPBjbQIhinkVIKZtRH+GPO+u51UMfjv8pCj+BL38rBE3V +VOZsf+/gh2FjWbGxctlzFFE3L76ZaqRGAu4T/1Wt4bmSYWa0ZCt4jUksWBxJ+FDQJ1T ujpIgUgELtee3fHsv3Ic+gyPLYD0eUL3/2sRYbQQe0vp4Gs1rZx6SbKu8LzNv6kgq+zt YkUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7wpRkYrXRxnWUCPbRdAvlCNGmdZ4UaHFTCGkl7XSQEo=; b=pPGY9TxJeR4cfxVfV4Zxcssnv3x/HUJvnJvRA8G/xGuVJ5/iWlE2F/5JTcZ1Zhzekn VuYSpb0IMw6tCatnTiHejVMRJ4Rda2/FrjMrKtImJSZUFrRQI/fY6ImhVznW+Obb4UV6 it62g7jLK78JkWSq60DLJzwxUWZ++qrt8BqXGT2hMC6+HPxU7qFNpbjVoSqY/l3bo2GE 6QYXlVwPkTqzP0vqUG2vLmFeFZwehzUKaxjj3NK1dkhg9Q6gh68hfyhlzsU97zvhi5Ps dTDgDNB1s323NtuULxqRlr8BWkMukjb4Lr+lYoR6WBzP3C2QzoLAxtE0uSWLbPFeg3iV 70SQ== X-Gm-Message-State: AOAM532f5b0JB/p8uYGBD5jefINh1bPgZOE4r4ud1f6Q5Pm+LjG/sD1x hU3hzhm7PMAvo5IK4YyrM+oPd/FNkk+vig== X-Google-Smtp-Source: ABdhPJzEfBQ0Skq1BvsH88uaL632/EIWwhk2yQKI0RXOxOnLsjEEq0o6GcZC4IJQXZ/WShpb+k0OJA== X-Received: by 2002:a17:902:121:: with SMTP id 30mr1529317plb.205.1598889981934; Mon, 31 Aug 2020 09:06:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 13/76] target/microblaze: Fix width of PC and BTARGET Date: Mon, 31 Aug 2020 09:04:58 -0700 Message-Id: <20200831160601.833692-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1032; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1032.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The program counter is only 32-bits wide. Do not use a 64-bit type to represent it. Since they are so closely related, fix btarget at the same time. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/cpu.h | 4 +- target/microblaze/helper.c | 16 +++---- target/microblaze/mmu.c | 4 +- target/microblaze/op_helper.c | 4 +- target/microblaze/translate.c | 78 ++++++++++++++--------------------- 5 files changed, 43 insertions(+), 63 deletions(-) diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index 610ddfb719..f4c3c09b09 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -231,12 +231,12 @@ typedef struct CPUMBState CPUMBState; struct CPUMBState { uint32_t debug; uint32_t btaken; - uint64_t btarget; + uint32_t btarget; uint32_t bimm; =20 uint32_t imm; uint32_t regs[32]; - uint64_t pc; + uint32_t pc; uint64_t msr; uint64_t ear; uint64_t esr; diff --git a/target/microblaze/helper.c b/target/microblaze/helper.c index b240dc76f6..b95617a81a 100644 --- a/target/microblaze/helper.c +++ b/target/microblaze/helper.c @@ -143,7 +143,7 @@ void mb_cpu_do_interrupt(CPUState *cs) env->msr |=3D MSR_EIP; =20 qemu_log_mask(CPU_LOG_INT, - "hw exception at pc=3D%" PRIx64 " ear=3D%" PRIx6= 4 " " + "hw exception at pc=3D%x ear=3D%" PRIx64 " " "esr=3D%" PRIx64 " iflags=3D%x\n", env->pc, env->ear, env->esr, env->iflags); @@ -167,8 +167,7 @@ void mb_cpu_do_interrupt(CPUState *cs) /* was the branch immprefixed?. */ if (env->bimm) { qemu_log_mask(CPU_LOG_INT, - "bimm exception at pc=3D%" PRIx64 " " - "iflags=3D%x\n", + "bimm exception at pc=3D%x iflags=3D%x\n= ", env->pc, env->iflags); env->regs[17] -=3D 4; log_cpu_state_mask(CPU_LOG_INT, cs, 0); @@ -186,8 +185,7 @@ void mb_cpu_do_interrupt(CPUState *cs) env->msr |=3D MSR_EIP; =20 qemu_log_mask(CPU_LOG_INT, - "exception at pc=3D%" PRIx64 " ear=3D%" PRIx64 "= " - "iflags=3D%x\n", + "exception at pc=3D%x ear=3D%" PRIx64 " iflags= =3D%x\n", env->pc, env->ear, env->iflags); log_cpu_state_mask(CPU_LOG_INT, cs, 0); env->iflags &=3D ~(IMM_FLAG | D_FLAG); @@ -224,8 +222,7 @@ void mb_cpu_do_interrupt(CPUState *cs) } #endif qemu_log_mask(CPU_LOG_INT, - "interrupt at pc=3D%" PRIx64 " msr=3D%" PRIx64 " = %x " - "iflags=3D%x\n", + "interrupt at pc=3D%x msr=3D%" PRIx64 " %x iflags= =3D%x\n", env->pc, env->msr, t, env->iflags); =20 env->msr &=3D ~(MSR_VMS | MSR_UMS | MSR_VM | MSR_UM | MSR_IE); @@ -242,9 +239,8 @@ void mb_cpu_do_interrupt(CPUState *cs) assert(!(env->iflags & D_FLAG)); t =3D (env->msr & (MSR_VM | MSR_UM)) << 1; qemu_log_mask(CPU_LOG_INT, - "break at pc=3D%" PRIx64 " msr=3D%" PRIx64 " %x " - "iflags=3D%x\n", - env->pc, env->msr, t, env->iflags); + "break at pc=3D%x msr=3D%" PRIx64 " %x iflags=3D= %x\n", + env->pc, env->msr, t, env->iflags); log_cpu_state_mask(CPU_LOG_INT, cs, 0); env->msr &=3D ~(MSR_VMS | MSR_UMS | MSR_VM | MSR_UM); env->msr |=3D t; diff --git a/target/microblaze/mmu.c b/target/microblaze/mmu.c index 3f403b567b..6e583d78d9 100644 --- a/target/microblaze/mmu.c +++ b/target/microblaze/mmu.c @@ -250,8 +250,8 @@ void mmu_write(CPUMBState *env, bool ext, uint32_t rn, = uint32_t v) if (rn =3D=3D MMU_R_TLBHI) { if (i < 3 && !(v & TLB_VALID) && qemu_loglevel_mask(~0)) qemu_log_mask(LOG_GUEST_ERROR, - "invalidating index %x at pc=3D%" PRIx64 "\n", - i, env->pc); + "invalidating index %x at pc=3D%x\n", + i, env->pc); env->mmu.tids[i] =3D env->mmu.regs[MMU_R_PID] & 0xff; mmu_flush_idx(env, i); } diff --git a/target/microblaze/op_helper.c b/target/microblaze/op_helper.c index ae57d45536..fdf706a723 100644 --- a/target/microblaze/op_helper.c +++ b/target/microblaze/op_helper.c @@ -75,12 +75,12 @@ void helper_debug(CPUMBState *env) { int i; =20 - qemu_log("PC=3D%" PRIx64 "\n", env->pc); + qemu_log("PC=3D%08x\n", env->pc); qemu_log("rmsr=3D%" PRIx64 " resr=3D%" PRIx64 " rear=3D%" PRIx64 " " "debug[%x] imm=3D%x iflags=3D%x\n", env->msr, env->esr, env->ear, env->debug, env->imm, env->iflags); - qemu_log("btaken=3D%d btarget=3D%" PRIx64 " mode=3D%s(saved=3D%s) eip= =3D%d ie=3D%d\n", + qemu_log("btaken=3D%d btarget=3D%x mode=3D%s(saved=3D%s) eip=3D%d ie= =3D%d\n", env->btaken, env->btarget, (env->msr & MSR_UM) ? "user" : "kernel", (env->msr & MSR_UMS) ? "user" : "kernel", diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 19d7b8abfd..72783c1d8a 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -55,7 +55,7 @@ =20 static TCGv_i32 env_debug; static TCGv_i32 cpu_R[32]; -static TCGv_i64 cpu_pc; +static TCGv_i32 cpu_pc; static TCGv_i64 cpu_msr; static TCGv_i64 cpu_ear; static TCGv_i64 cpu_esr; @@ -64,7 +64,7 @@ static TCGv_i64 cpu_btr; static TCGv_i64 cpu_edr; static TCGv_i32 env_imm; static TCGv_i32 env_btaken; -static TCGv_i64 env_btarget; +static TCGv_i32 cpu_btarget; static TCGv_i32 env_iflags; static TCGv env_res_addr; static TCGv_i32 env_res_val; @@ -123,7 +123,7 @@ static inline void t_gen_raise_exception(DisasContext *= dc, uint32_t index) TCGv_i32 tmp =3D tcg_const_i32(index); =20 t_sync_flags(dc); - tcg_gen_movi_i64(cpu_pc, dc->pc); + tcg_gen_movi_i32(cpu_pc, dc->pc); gen_helper_raise_exception(cpu_env, tmp); tcg_temp_free_i32(tmp); dc->is_jmp =3D DISAS_UPDATE; @@ -142,10 +142,10 @@ static void gen_goto_tb(DisasContext *dc, int n, targ= et_ulong dest) { if (use_goto_tb(dc, dest)) { tcg_gen_goto_tb(n); - tcg_gen_movi_i64(cpu_pc, dest); + tcg_gen_movi_i32(cpu_pc, dest); tcg_gen_exit_tb(dc->tb, n); } else { - tcg_gen_movi_i64(cpu_pc, dest); + tcg_gen_movi_i32(cpu_pc, dest); tcg_gen_exit_tb(NULL, 0); } } @@ -509,7 +509,7 @@ static void dec_msr(DisasContext *dc) msr_write(dc, t0); tcg_temp_free_i32(t0); tcg_temp_free_i32(t1); - tcg_gen_movi_i64(cpu_pc, dc->pc + 4); + tcg_gen_movi_i32(cpu_pc, dc->pc + 4); dc->is_jmp =3D DISAS_UPDATE; return; } @@ -850,7 +850,7 @@ static inline void sync_jmpstate(DisasContext *dc) tcg_gen_movi_i32(env_btaken, 1); } dc->jmp =3D JMP_INDIRECT; - tcg_gen_movi_i64(env_btarget, dc->jmp_pc); + tcg_gen_movi_i32(cpu_btarget, dc->jmp_pc); } } =20 @@ -1019,7 +1019,7 @@ static void dec_load(DisasContext *dc) TCGv_i32 treg =3D tcg_const_i32(dc->rd); TCGv_i32 tsize =3D tcg_const_i32(size - 1); =20 - tcg_gen_movi_i64(cpu_pc, dc->pc); + tcg_gen_movi_i32(cpu_pc, dc->pc); gen_helper_memalign(cpu_env, addr, treg, t0, tsize); =20 tcg_temp_free_i32(t0); @@ -1139,7 +1139,7 @@ static void dec_store(DisasContext *dc) TCGv_i32 treg =3D tcg_const_i32(dc->rd); TCGv_i32 tsize =3D tcg_const_i32(size - 1); =20 - tcg_gen_movi_i64(cpu_pc, dc->pc); + tcg_gen_movi_i32(cpu_pc, dc->pc); /* FIXME: if the alignment is wrong, we should restore the value * in memory. One possible way to achieve this is to probe * the MMU prior to the memaccess, thay way we could put @@ -1187,18 +1187,15 @@ static inline void eval_cc(DisasContext *dc, unsign= ed int cc, } } =20 -static void eval_cond_jmp(DisasContext *dc, TCGv_i64 pc_true, TCGv_i64 pc_= false) +static void eval_cond_jmp(DisasContext *dc, TCGv_i32 pc_true, TCGv_i32 pc_= false) { - TCGv_i64 tmp_btaken =3D tcg_temp_new_i64(); - TCGv_i64 tmp_zero =3D tcg_const_i64(0); + TCGv_i32 zero =3D tcg_const_i32(0); =20 - tcg_gen_extu_i32_i64(tmp_btaken, env_btaken); - tcg_gen_movcond_i64(TCG_COND_NE, cpu_pc, - tmp_btaken, tmp_zero, + tcg_gen_movcond_i32(TCG_COND_NE, cpu_pc, + env_btaken, zero, pc_true, pc_false); =20 - tcg_temp_free_i64(tmp_btaken); - tcg_temp_free_i64(tmp_zero); + tcg_temp_free_i32(zero); } =20 static void dec_setup_dslot(DisasContext *dc) @@ -1229,14 +1226,12 @@ static void dec_bcc(DisasContext *dc) if (dec_alu_op_b_is_small_imm(dc)) { int32_t offset =3D (int32_t)((int16_t)dc->imm); /* sign-extend. */ =20 - tcg_gen_movi_i64(env_btarget, dc->pc + offset); + tcg_gen_movi_i32(cpu_btarget, dc->pc + offset); dc->jmp =3D JMP_DIRECT_CC; dc->jmp_pc =3D dc->pc + offset; } else { dc->jmp =3D JMP_INDIRECT; - tcg_gen_extu_i32_i64(env_btarget, *(dec_alu_op_b(dc))); - tcg_gen_addi_i64(env_btarget, env_btarget, dc->pc); - tcg_gen_andi_i64(env_btarget, env_btarget, UINT32_MAX); + tcg_gen_addi_i32(cpu_btarget, *dec_alu_op_b(dc), dc->pc); } eval_cc(dc, cc, env_btaken, cpu_R[dc->ra]); } @@ -1277,7 +1272,7 @@ static void dec_br(DisasContext *dc) tcg_gen_st_i32(tmp_1, cpu_env, -offsetof(MicroBlazeCPU, env) +offsetof(CPUState, halted)); - tcg_gen_movi_i64(cpu_pc, dc->pc + 4); + tcg_gen_movi_i32(cpu_pc, dc->pc + 4); gen_helper_raise_exception(cpu_env, tmp_hlt); tcg_temp_free_i32(tmp_hlt); tcg_temp_free_i32(tmp_1); @@ -1303,7 +1298,7 @@ static void dec_br(DisasContext *dc) dc->jmp =3D JMP_INDIRECT; if (abs) { tcg_gen_movi_i32(env_btaken, 1); - tcg_gen_extu_i32_i64(env_btarget, *(dec_alu_op_b(dc))); + tcg_gen_mov_i32(cpu_btarget, *(dec_alu_op_b(dc))); if (link && !dslot) { if (!(dc->tb_flags & IMM_FLAG) && (dc->imm =3D=3D 8 || dc->imm= =3D=3D 0x18)) t_gen_raise_exception(dc, EXCP_BREAK); @@ -1321,9 +1316,7 @@ static void dec_br(DisasContext *dc) dc->jmp_pc =3D dc->pc + (int32_t)((int16_t)dc->imm); } else { tcg_gen_movi_i32(env_btaken, 1); - tcg_gen_extu_i32_i64(env_btarget, *(dec_alu_op_b(dc))); - tcg_gen_addi_i64(env_btarget, env_btarget, dc->pc); - tcg_gen_andi_i64(env_btarget, env_btarget, UINT32_MAX); + tcg_gen_addi_i32(cpu_btarget, *dec_alu_op_b(dc), dc->pc); } } } @@ -1387,7 +1380,6 @@ static inline void do_rte(DisasContext *dc) static void dec_rts(DisasContext *dc) { unsigned int b_bit, i_bit, e_bit; - TCGv_i64 tmp64; =20 i_bit =3D dc->ir & (1 << 21); b_bit =3D dc->ir & (1 << 22); @@ -1413,13 +1405,7 @@ static void dec_rts(DisasContext *dc) =20 dc->jmp =3D JMP_INDIRECT; tcg_gen_movi_i32(env_btaken, 1); - - tmp64 =3D tcg_temp_new_i64(); - tcg_gen_extu_i32_i64(env_btarget, *(dec_alu_op_b(dc))); - tcg_gen_extu_i32_i64(tmp64, cpu_R[dc->ra]); - tcg_gen_add_i64(env_btarget, env_btarget, tmp64); - tcg_gen_andi_i64(env_btarget, env_btarget, UINT32_MAX); - tcg_temp_free_i64(tmp64); + tcg_gen_add_i32(cpu_btarget, cpu_R[dc->ra], *dec_alu_op_b(dc)); } =20 static int dec_check_fpuv2(DisasContext *dc) @@ -1676,7 +1662,7 @@ void gen_intermediate_code(CPUState *cs, TranslationB= lock *tb, int max_insns) =20 #if SIM_COMPAT if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) { - tcg_gen_movi_i64(cpu_pc, dc->pc); + tcg_gen_movi_i32(cpu_pc, dc->pc); gen_helper_debug(); } #endif @@ -1718,10 +1704,9 @@ void gen_intermediate_code(CPUState *cs, Translation= Block *tb, int max_insns) dc->tb_flags &=3D ~D_FLAG; /* If it is a direct jump, try direct chaining. */ if (dc->jmp =3D=3D JMP_INDIRECT) { - TCGv_i64 tmp_pc =3D tcg_const_i64(dc->pc); - eval_cond_jmp(dc, env_btarget, tmp_pc); - tcg_temp_free_i64(tmp_pc); - + TCGv_i32 tmp_pc =3D tcg_const_i32(dc->pc); + eval_cond_jmp(dc, cpu_btarget, tmp_pc); + tcg_temp_free_i32(tmp_pc); dc->is_jmp =3D DISAS_JUMP; } else if (dc->jmp =3D=3D JMP_DIRECT) { t_sync_flags(dc); @@ -1754,7 +1739,7 @@ void gen_intermediate_code(CPUState *cs, TranslationB= lock *tb, int max_insns) if (dc->jmp =3D=3D JMP_DIRECT || dc->jmp =3D=3D JMP_DIRECT_CC) { if (dc->tb_flags & D_FLAG) { dc->is_jmp =3D DISAS_UPDATE; - tcg_gen_movi_i64(cpu_pc, npc); + tcg_gen_movi_i32(cpu_pc, npc); sync_jmpstate(dc); } else npc =3D dc->jmp_pc; @@ -1764,7 +1749,7 @@ void gen_intermediate_code(CPUState *cs, TranslationB= lock *tb, int max_insns) if (dc->is_jmp =3D=3D DISAS_NEXT && (dc->cpustate_changed || org_flags !=3D dc->tb_flags)) { dc->is_jmp =3D DISAS_UPDATE; - tcg_gen_movi_i64(cpu_pc, npc); + tcg_gen_movi_i32(cpu_pc, npc); } t_sync_flags(dc); =20 @@ -1772,7 +1757,7 @@ void gen_intermediate_code(CPUState *cs, TranslationB= lock *tb, int max_insns) TCGv_i32 tmp =3D tcg_const_i32(EXCP_DEBUG); =20 if (dc->is_jmp !=3D DISAS_JUMP) { - tcg_gen_movi_i64(cpu_pc, npc); + tcg_gen_movi_i32(cpu_pc, npc); } gen_helper_raise_exception(cpu_env, tmp); tcg_temp_free_i32(tmp); @@ -1822,7 +1807,7 @@ void mb_cpu_dump_state(CPUState *cs, FILE *f, int fla= gs) return; } =20 - qemu_fprintf(f, "IN: PC=3D%" PRIx64 " %s\n", + qemu_fprintf(f, "IN: PC=3D%x %s\n", env->pc, lookup_symbol(env->pc)); qemu_fprintf(f, "rmsr=3D%" PRIx64 " resr=3D%" PRIx64 " rear=3D%" PRIx6= 4 " " "debug=3D%x imm=3D%x iflags=3D%x fsr=3D%" PRIx64 " " @@ -1830,8 +1815,7 @@ void mb_cpu_dump_state(CPUState *cs, FILE *f, int fla= gs) env->msr, env->esr, env->ear, env->debug, env->imm, env->iflags, env->fsr, env->btr); - qemu_fprintf(f, "btaken=3D%d btarget=3D%" PRIx64 " mode=3D%s(saved=3D%= s) " - "eip=3D%d ie=3D%d\n", + qemu_fprintf(f, "btaken=3D%d btarget=3D%x mode=3D%s(saved=3D%s) eip=3D= %d ie=3D%d\n", env->btaken, env->btarget, (env->msr & MSR_UM) ? "user" : "kernel", (env->msr & MSR_UMS) ? "user" : "kernel", @@ -1869,7 +1853,7 @@ void mb_tcg_init(void) env_imm =3D tcg_global_mem_new_i32(cpu_env, offsetof(CPUMBState, imm), "imm"); - env_btarget =3D tcg_global_mem_new_i64(cpu_env, + cpu_btarget =3D tcg_global_mem_new_i32(cpu_env, offsetof(CPUMBState, btarget), "btarget"); env_btaken =3D tcg_global_mem_new_i32(cpu_env, @@ -1888,7 +1872,7 @@ void mb_tcg_init(void) } =20 cpu_pc =3D - tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, pc), "rpc"); + tcg_global_mem_new_i32(cpu_env, offsetof(CPUMBState, pc), "rpc"); cpu_msr =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, msr), "rmsr"); cpu_ear =3D --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890339; cv=none; d=zohomail.com; s=zohoarc; b=cjuj7D7AwDFDtW3kYPzWxYIvyrSnqz03V3GhwewcxDS+EbB8iEBKN3KgfggCrNMZ3WxQueElqWs6uap6vIdF5q0a3ye+EmMNv2h4jLoZ6HBFc+8ANblCurcU//EdKYkFfq5ZeM1dUfzFPWOThXBJyKooeFCtsbUchEY6x89XY2E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890339; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=M4lPpeA/HUa0K6dYkBR9tjNHwEHg5QIOBuo5I8jj/mI=; b=X2IMtSW44J8EXPQZBTq8uTevqtUpT8HjjtSsykeDMnShKTtM7iYLKomA+c2CnG1SeYxKOBqhEeA1dl5Y3TOOFF2N+ksXo7wGzIpiktJyS+LaeHvSjQKW/pTK13YtERZ1jnR58FZDN8aNtyomPuXEG0NC0thGkoHgIUwELFSTJqY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890339521888.6557550693356; Mon, 31 Aug 2020 09:12:19 -0700 (PDT) Received: from localhost ([::1]:51344 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmPq-0006w8-Mu for importer@patchew.org; Mon, 31 Aug 2020 12:12:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33590) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKB-0003vG-46 for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:27 -0400 Received: from mail-pl1-x643.google.com ([2607:f8b0:4864:20::643]:33628) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmK9-0005x7-2N for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:26 -0400 Received: by mail-pl1-x643.google.com with SMTP id h2so3256455plr.0 for ; Mon, 31 Aug 2020 09:06:24 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=M4lPpeA/HUa0K6dYkBR9tjNHwEHg5QIOBuo5I8jj/mI=; b=zPVVq9AuyPucbq3wRxfr3pZbqXctgPSWxcdaAN7zgYbo8DlCaaavKQxjjTBYQ9Cged oEKLr5XYh0tl+4qHkRdHnon79rYPhH5ayIFLYgiidka4OPgRgv883VNNYOHKeOPRE9Ok Yn463gb3i3v0YVhGX/crJjhxAOTw+uYmcq2uIMTLP3ysyeOHDRup6MNnGQe1PQRP9vIJ amHw+AM9yHKPH/jIJsehHRosJUJE0aTsN8q8E6GHuqEaSQds4e3XRh6dnLdEJNYUrsbN hLUejHevWWQij+wiFejfL6KlqM1Pr2SW2zS+OOapupGnrFXqGKhOyTzlozQTRQXTvB+6 kGiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=M4lPpeA/HUa0K6dYkBR9tjNHwEHg5QIOBuo5I8jj/mI=; b=hKDn2rJZeHn6GyBr0xhGTTeenz6zdt0sMAtD+BNSZjeD46MVC9EuTOGug8laoGYct1 +CN9hkTMm3BlW3OCqtRTNgImzggxUlPt10taMvZ6BAA4dHw88XFKTK48gQCBIq7HLjw2 FZt3NtJrxC57pkO7ccMCWAw0xwQcjZCTQPB8xt6dd4cyMJdWc5tWvQ7fUksfsRX6DLWb ShOE17L1lJYzjUSTKfbLaNRzbmnlHwrGFbc5EGRBhomH9OIscPdL+NEpQvBC/92+Tajs ojyzqIvAQsaS9CXBxlFWYfO2GSKOykY49QVJLrYcjwhwivuOqQC94kXwb8KbBQAktVN9 b7Fw== X-Gm-Message-State: AOAM533Hfkzgv55mh6+brtI0mCmGDPN7s9kGnxFN1cs+NpIqnvwlK7+F df1+tMzgBDz6Uc2d0XB+SBOA8NK/l5IlPA== X-Google-Smtp-Source: ABdhPJyMPk8zbSQjf5slItwNDrIiHuKNzlpaUsCA1Lds0tFj44UKqV6qUn5aZunkKYWnKxDiz49+Zg== X-Received: by 2002:a17:90a:f117:: with SMTP id cc23mr57930pjb.155.1598889983274; Mon, 31 Aug 2020 09:06:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 14/76] target/microblaze: Fix width of MSR Date: Mon, 31 Aug 2020 09:04:59 -0700 Message-Id: <20200831160601.833692-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::643; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x643.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The machine status register is only 32-bits wide. Do not use a 64-bit type to represent it. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/cpu.h | 2 +- target/microblaze/helper.c | 4 ++-- target/microblaze/op_helper.c | 2 +- target/microblaze/translate.c | 38 ++++++++++++----------------------- 4 files changed, 17 insertions(+), 29 deletions(-) diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index f4c3c09b09..019e5dfa26 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -237,7 +237,7 @@ struct CPUMBState { uint32_t imm; uint32_t regs[32]; uint32_t pc; - uint64_t msr; + uint32_t msr; uint64_t ear; uint64_t esr; uint64_t fsr; diff --git a/target/microblaze/helper.c b/target/microblaze/helper.c index b95617a81a..af79091fd2 100644 --- a/target/microblaze/helper.c +++ b/target/microblaze/helper.c @@ -222,7 +222,7 @@ void mb_cpu_do_interrupt(CPUState *cs) } #endif qemu_log_mask(CPU_LOG_INT, - "interrupt at pc=3D%x msr=3D%" PRIx64 " %x iflags= =3D%x\n", + "interrupt at pc=3D%x msr=3D%x %x iflags=3D%x\n", env->pc, env->msr, t, env->iflags); =20 env->msr &=3D ~(MSR_VMS | MSR_UMS | MSR_VM | MSR_UM | MSR_IE); @@ -239,7 +239,7 @@ void mb_cpu_do_interrupt(CPUState *cs) assert(!(env->iflags & D_FLAG)); t =3D (env->msr & (MSR_VM | MSR_UM)) << 1; qemu_log_mask(CPU_LOG_INT, - "break at pc=3D%x msr=3D%" PRIx64 " %x iflags=3D= %x\n", + "break at pc=3D%x msr=3D%x %x iflags=3D%x\n", env->pc, env->msr, t, env->iflags); log_cpu_state_mask(CPU_LOG_INT, cs, 0); env->msr &=3D ~(MSR_VMS | MSR_UMS | MSR_VM | MSR_UM); diff --git a/target/microblaze/op_helper.c b/target/microblaze/op_helper.c index fdf706a723..a7f6cb71f1 100644 --- a/target/microblaze/op_helper.c +++ b/target/microblaze/op_helper.c @@ -76,7 +76,7 @@ void helper_debug(CPUMBState *env) int i; =20 qemu_log("PC=3D%08x\n", env->pc); - qemu_log("rmsr=3D%" PRIx64 " resr=3D%" PRIx64 " rear=3D%" PRIx64 " " + qemu_log("rmsr=3D%x resr=3D%" PRIx64 " rear=3D%" PRIx64 " " "debug[%x] imm=3D%x iflags=3D%x\n", env->msr, env->esr, env->ear, env->debug, env->imm, env->iflags); diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 72783c1d8a..0e71e7ed01 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -56,7 +56,7 @@ static TCGv_i32 env_debug; static TCGv_i32 cpu_R[32]; static TCGv_i32 cpu_pc; -static TCGv_i64 cpu_msr; +static TCGv_i32 cpu_msr; static TCGv_i64 cpu_ear; static TCGv_i64 cpu_esr; static TCGv_i64 cpu_fsr; @@ -152,8 +152,7 @@ static void gen_goto_tb(DisasContext *dc, int n, target= _ulong dest) =20 static void read_carry(DisasContext *dc, TCGv_i32 d) { - tcg_gen_extrl_i64_i32(d, cpu_msr); - tcg_gen_shri_i32(d, d, 31); + tcg_gen_shri_i32(d, cpu_msr, 31); } =20 /* @@ -162,12 +161,9 @@ static void read_carry(DisasContext *dc, TCGv_i32 d) */ static void write_carry(DisasContext *dc, TCGv_i32 v) { - TCGv_i64 t0 =3D tcg_temp_new_i64(); - tcg_gen_extu_i32_i64(t0, v); /* Deposit bit 0 into MSR_C and the alias MSR_CC. */ - tcg_gen_deposit_i64(cpu_msr, cpu_msr, t0, 2, 1); - tcg_gen_deposit_i64(cpu_msr, cpu_msr, t0, 31, 1); - tcg_temp_free_i64(t0); + tcg_gen_deposit_i32(cpu_msr, cpu_msr, v, 2, 1); + tcg_gen_deposit_i32(cpu_msr, cpu_msr, v, 31, 1); } =20 static void write_carryi(DisasContext *dc, bool carry) @@ -437,21 +433,14 @@ static void dec_xor(DisasContext *dc) =20 static inline void msr_read(DisasContext *dc, TCGv_i32 d) { - tcg_gen_extrl_i64_i32(d, cpu_msr); + tcg_gen_mov_i32(d, cpu_msr); } =20 static inline void msr_write(DisasContext *dc, TCGv_i32 v) { - TCGv_i64 t; - - t =3D tcg_temp_new_i64(); dc->cpustate_changed =3D 1; - /* PVR bit is not writable. */ - tcg_gen_extu_i32_i64(t, v); - tcg_gen_andi_i64(t, t, ~MSR_PVR); - tcg_gen_andi_i64(cpu_msr, cpu_msr, MSR_PVR); - tcg_gen_or_i64(cpu_msr, cpu_msr, t); - tcg_temp_free_i64(t); + /* PVR bit is not writable, and is never set. */ + tcg_gen_andi_i32(cpu_msr, v, ~MSR_PVR); } =20 static void dec_msr(DisasContext *dc) @@ -773,8 +762,7 @@ static void dec_bit(DisasContext *dc) t0 =3D tcg_temp_new_i32(); =20 LOG_DIS("src r%d r%d\n", dc->rd, dc->ra); - tcg_gen_extrl_i64_i32(t0, cpu_msr); - tcg_gen_andi_i32(t0, t0, MSR_CC); + tcg_gen_andi_i32(t0, cpu_msr, MSR_CC); write_carry(dc, cpu_R[dc->ra]); if (dc->rd) { tcg_gen_shri_i32(cpu_R[dc->rd], cpu_R[dc->ra], 1); @@ -1326,7 +1314,7 @@ static inline void do_rti(DisasContext *dc) TCGv_i32 t0, t1; t0 =3D tcg_temp_new_i32(); t1 =3D tcg_temp_new_i32(); - tcg_gen_extrl_i64_i32(t1, cpu_msr); + tcg_gen_mov_i32(t1, cpu_msr); tcg_gen_shri_i32(t0, t1, 1); tcg_gen_ori_i32(t1, t1, MSR_IE); tcg_gen_andi_i32(t0, t0, (MSR_VM | MSR_UM)); @@ -1344,7 +1332,7 @@ static inline void do_rtb(DisasContext *dc) TCGv_i32 t0, t1; t0 =3D tcg_temp_new_i32(); t1 =3D tcg_temp_new_i32(); - tcg_gen_extrl_i64_i32(t1, cpu_msr); + tcg_gen_mov_i32(t1, cpu_msr); tcg_gen_andi_i32(t1, t1, ~MSR_BIP); tcg_gen_shri_i32(t0, t1, 1); tcg_gen_andi_i32(t0, t0, (MSR_VM | MSR_UM)); @@ -1363,7 +1351,7 @@ static inline void do_rte(DisasContext *dc) t0 =3D tcg_temp_new_i32(); t1 =3D tcg_temp_new_i32(); =20 - tcg_gen_extrl_i64_i32(t1, cpu_msr); + tcg_gen_mov_i32(t1, cpu_msr); tcg_gen_ori_i32(t1, t1, MSR_EE); tcg_gen_andi_i32(t1, t1, ~MSR_EIP); tcg_gen_shri_i32(t0, t1, 1); @@ -1809,7 +1797,7 @@ void mb_cpu_dump_state(CPUState *cs, FILE *f, int fla= gs) =20 qemu_fprintf(f, "IN: PC=3D%x %s\n", env->pc, lookup_symbol(env->pc)); - qemu_fprintf(f, "rmsr=3D%" PRIx64 " resr=3D%" PRIx64 " rear=3D%" PRIx6= 4 " " + qemu_fprintf(f, "rmsr=3D%x resr=3D%" PRIx64 " rear=3D%" PRIx64 " " "debug=3D%x imm=3D%x iflags=3D%x fsr=3D%" PRIx64 " " "rbtr=3D%" PRIx64 "\n", env->msr, env->esr, env->ear, @@ -1874,7 +1862,7 @@ void mb_tcg_init(void) cpu_pc =3D tcg_global_mem_new_i32(cpu_env, offsetof(CPUMBState, pc), "rpc"); cpu_msr =3D - tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, msr), "rmsr"); + tcg_global_mem_new_i32(cpu_env, offsetof(CPUMBState, msr), "rmsr"); cpu_ear =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, ear), "rear"); cpu_esr =3D --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890487; cv=none; d=zohomail.com; s=zohoarc; b=k0GooQccavthjnjQrGs/StLtmo80Ar9wzsbrE3kib32gMX1N5O8mwcLA9enT7H4YoFslhSQOD+0WFIg88LyXQbQ5ImNI6c6NdAWDtb4zxo3Uj6yLJsy0DAZvqGR/HYIv+pqqgOMDcj5dTvkiqEfVj5If5CzdXbRSPNE44neDmrY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890487; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=L9xfsBjzirj6XKVdMLPG8wUDAQP5YXeed0MwjLYymYM=; b=OXLkS4VPFg1kzYUq7OGooWDAvKq+ZZFSrBW4RcgbNHFOvHjzTNxVAT4LbPa0ALEoG7gP948DShYmqt8LK972BLj7RcuDguYZVQC0u+AlLxz8MTjXCFsVwcye7k7+G1dypEsIbcHtWwCIm8f/ZZU3ak1JKKdWvoAdJOe4o40pUtc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890487344756.3550334646266; Mon, 31 Aug 2020 09:14:47 -0700 (PDT) Received: from localhost ([::1]:39480 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmSE-0004z4-EQ for importer@patchew.org; Mon, 31 Aug 2020 12:14:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33620) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKC-0003yq-Gf for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:28 -0400 Received: from mail-pl1-x644.google.com ([2607:f8b0:4864:20::644]:45575) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKA-0005xO-Df for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:28 -0400 Received: by mail-pl1-x644.google.com with SMTP id bh1so3226485plb.12 for ; Mon, 31 Aug 2020 09:06:26 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=L9xfsBjzirj6XKVdMLPG8wUDAQP5YXeed0MwjLYymYM=; b=ZVWIK+fJFijSS8zFQtk50sLCYQrStpVuJGsVnmZ7WtHESnSGHX8bOgkk4nQxFf7RCC w9bf0+MG07hn1GpH6yKrAZw8fzdZf36rExmpqvZBHmrRF6Q24OP2ceUwFVUgNg3KOMxF RhEhFBr9w02GVzBkVTmVwZBteZlsHRvtoF3snRDDnf1DdsnyLVwJEAPQEpcorSubQKhl Kw/96u6NBRyUHd5KzTJgss6QUbKPVoWzRoCUKuKYQPhjTFarxrbRdeGMhhIst4jc/dCp 8MDh1aJgOxDf2PIIwwDc9d7yq8uhYDocGjh9G6kTQ7UbqwwuV8dFZ1ZFKTRoR/UVjv7f yHwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=L9xfsBjzirj6XKVdMLPG8wUDAQP5YXeed0MwjLYymYM=; b=nxrV4btx2vi/r0W8FyliBnTSlZbL7XNnvNPH8Byw4/FXF8EV6ib0ZxItSJ8Z5hfvav trdp10+x9C/yaHI7uA7YPb633SDSHhr5DD3aH440oGz0BIitGNbo8WNLZuJZqXDeFA5a DNqpn7RxXYnYrrBJXe7WrQX/XIansTgABqJ+VYK7bwKHwkEdHiDUtvpPEzZ+Juv3P2ZR M8GjfIrgB55sgdeNjuLjxeWEoR9WoRle1TEFra+WHpcJG4ezo04Uv4BNP60ZODN2j+sU IhkA7ZCajt4nhK656rNvrEFjZBckaGN6ckttJ9mkfaFKjWzOdg1uaLDnvmSZgXwcTjHy 5vXw== X-Gm-Message-State: AOAM531ods1Pa4nrLfy/cnTAorJs8OHimdfWfQ9HK0KbM0h2ciMZZ3Iu jRrGoSty0Td8yZW/W6k/lNLmHw0fp5Z0qg== X-Google-Smtp-Source: ABdhPJx0/5WNk4ru/d1WJXHe5w5K+EN96SMg34hXJTH/NCM4bhzJIH2VeRbfGfY0j/NqEr/NzqZZhw== X-Received: by 2002:a17:902:720a:: with SMTP id ba10mr1548099plb.41.1598889984647; Mon, 31 Aug 2020 09:06:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 15/76] target/microblaze: Fix width of ESR Date: Mon, 31 Aug 2020 09:05:00 -0700 Message-Id: <20200831160601.833692-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::644; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x644.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The exception status register is only 32-bits wide. Do not use a 64-bit type to represent it. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/cpu.h | 2 +- linux-user/microblaze/cpu_loop.c | 2 +- target/microblaze/helper.c | 2 +- target/microblaze/op_helper.c | 2 +- target/microblaze/translate.c | 16 ++++++++-------- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index 019e5dfa26..aaac0c9a6c 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -239,7 +239,7 @@ struct CPUMBState { uint32_t pc; uint32_t msr; uint64_t ear; - uint64_t esr; + uint32_t esr; uint64_t fsr; uint64_t btr; uint64_t edr; diff --git a/linux-user/microblaze/cpu_loop.c b/linux-user/microblaze/cpu_l= oop.c index da5e98b784..3de99ea311 100644 --- a/linux-user/microblaze/cpu_loop.c +++ b/linux-user/microblaze/cpu_loop.c @@ -106,7 +106,7 @@ void cpu_loop(CPUMBState *env) queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); break; default: - fprintf(stderr, "Unhandled hw-exception: 0x%" PRIx64 "= \n", + fprintf(stderr, "Unhandled hw-exception: 0x%x\n", env->esr & ESR_EC_MASK); cpu_dump_state(cs, stderr, 0); exit(EXIT_FAILURE); diff --git a/target/microblaze/helper.c b/target/microblaze/helper.c index af79091fd2..b2373f6a23 100644 --- a/target/microblaze/helper.c +++ b/target/microblaze/helper.c @@ -144,7 +144,7 @@ void mb_cpu_do_interrupt(CPUState *cs) =20 qemu_log_mask(CPU_LOG_INT, "hw exception at pc=3D%x ear=3D%" PRIx64 " " - "esr=3D%" PRIx64 " iflags=3D%x\n", + "esr=3D%x iflags=3D%x\n", env->pc, env->ear, env->esr, env->iflags); log_cpu_state_mask(CPU_LOG_INT, cs, 0); diff --git a/target/microblaze/op_helper.c b/target/microblaze/op_helper.c index a7f6cb71f1..dc2bec0c99 100644 --- a/target/microblaze/op_helper.c +++ b/target/microblaze/op_helper.c @@ -76,7 +76,7 @@ void helper_debug(CPUMBState *env) int i; =20 qemu_log("PC=3D%08x\n", env->pc); - qemu_log("rmsr=3D%x resr=3D%" PRIx64 " rear=3D%" PRIx64 " " + qemu_log("rmsr=3D%x resr=3D%x rear=3D%" PRIx64 " " "debug[%x] imm=3D%x iflags=3D%x\n", env->msr, env->esr, env->ear, env->debug, env->imm, env->iflags); diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 0e71e7ed01..f63aae6de9 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -58,7 +58,7 @@ static TCGv_i32 cpu_R[32]; static TCGv_i32 cpu_pc; static TCGv_i32 cpu_msr; static TCGv_i64 cpu_ear; -static TCGv_i64 cpu_esr; +static TCGv_i32 cpu_esr; static TCGv_i64 cpu_fsr; static TCGv_i64 cpu_btr; static TCGv_i64 cpu_edr; @@ -182,7 +182,7 @@ static bool trap_illegal(DisasContext *dc, bool cond) { if (cond && (dc->tb_flags & MSR_EE_FLAG) && dc->cpu->cfg.illegal_opcode_exception) { - tcg_gen_movi_i64(cpu_esr, ESR_EC_ILLEGAL_OP); + tcg_gen_movi_i32(cpu_esr, ESR_EC_ILLEGAL_OP); t_gen_raise_exception(dc, EXCP_HW_EXCP); } return cond; @@ -198,7 +198,7 @@ static bool trap_userspace(DisasContext *dc, bool cond) bool cond_user =3D cond && mem_index =3D=3D MMU_USER_IDX; =20 if (cond_user && (dc->tb_flags & MSR_EE_FLAG)) { - tcg_gen_movi_i64(cpu_esr, ESR_EC_PRIVINSN); + tcg_gen_movi_i32(cpu_esr, ESR_EC_PRIVINSN); t_gen_raise_exception(dc, EXCP_HW_EXCP); } return cond_user; @@ -539,7 +539,7 @@ static void dec_msr(DisasContext *dc) tcg_gen_extu_i32_i64(cpu_ear, cpu_R[dc->ra]); break; case SR_ESR: - tcg_gen_extu_i32_i64(cpu_esr, cpu_R[dc->ra]); + tcg_gen_mov_i32(cpu_esr, cpu_R[dc->ra]); break; case SR_FSR: tcg_gen_extu_i32_i64(cpu_fsr, cpu_R[dc->ra]); @@ -580,7 +580,7 @@ static void dec_msr(DisasContext *dc) } break; case SR_ESR: - tcg_gen_extrl_i64_i32(cpu_R[dc->rd], cpu_esr); + tcg_gen_mov_i32(cpu_R[dc->rd], cpu_esr); break; case SR_FSR: tcg_gen_extrl_i64_i32(cpu_R[dc->rd], cpu_fsr); @@ -1399,7 +1399,7 @@ static void dec_rts(DisasContext *dc) static int dec_check_fpuv2(DisasContext *dc) { if ((dc->cpu->cfg.use_fpu !=3D 2) && (dc->tb_flags & MSR_EE_FLAG)) { - tcg_gen_movi_i64(cpu_esr, ESR_EC_FPU); + tcg_gen_movi_i32(cpu_esr, ESR_EC_FPU); t_gen_raise_exception(dc, EXCP_HW_EXCP); } return (dc->cpu->cfg.use_fpu =3D=3D 2) ? PVR2_USE_FPU2_MASK : 0; @@ -1797,7 +1797,7 @@ void mb_cpu_dump_state(CPUState *cs, FILE *f, int fla= gs) =20 qemu_fprintf(f, "IN: PC=3D%x %s\n", env->pc, lookup_symbol(env->pc)); - qemu_fprintf(f, "rmsr=3D%x resr=3D%" PRIx64 " rear=3D%" PRIx64 " " + qemu_fprintf(f, "rmsr=3D%x resr=3D%x rear=3D%" PRIx64 " " "debug=3D%x imm=3D%x iflags=3D%x fsr=3D%" PRIx64 " " "rbtr=3D%" PRIx64 "\n", env->msr, env->esr, env->ear, @@ -1866,7 +1866,7 @@ void mb_tcg_init(void) cpu_ear =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, ear), "rear"); cpu_esr =3D - tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, esr), "resr"); + tcg_global_mem_new_i32(cpu_env, offsetof(CPUMBState, esr), "resr"); cpu_fsr =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, fsr), "rfsr"); cpu_btr =3D --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890618; cv=none; d=zohomail.com; s=zohoarc; b=CLs33FBNt21p+DiFwMGn+I0KVovTf+jdhCOG09aPVQvTD5LxicApzYkQ+/fIxIYuyYg+wV/H2kMf1VG1+khwLF1g2DVlDdsHMoC8P9Nh4GTp588eHNWADD+hSS0oQLdfsXAalnaZqlsHaEvDxRnwSxq9BaXMP1xmvL9LJ2zgFCk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890618; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=haB+kLrfuYUnX1QRhCRrExdmXpWhe0msojEhc/6IfBE=; b=eoHC6gzMDA+yNT+KkmcAlKmcT5Mt6CuongVpOJwyj0/xwSVxItx62wQzLDVLfqwQLT7j4mFG1HeeBRQnSHsmIc43rVTiZd3qR2kotrwRYvSl8xnphodYfuCBjJtQXEYtiFBGllPCFiZsRWFaVWABZAmD0s6qen/vrRAxCEdJqk4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890618302800.1681897653257; Mon, 31 Aug 2020 09:16:58 -0700 (PDT) Received: from localhost ([::1]:47858 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmUL-0008PU-F0 for importer@patchew.org; Mon, 31 Aug 2020 12:16:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33658) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKD-00042l-Tc for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:29 -0400 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]:35329) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKC-0005xr-3V for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:29 -0400 Received: by mail-pj1-x1030.google.com with SMTP id g6so31883pjl.0 for ; Mon, 31 Aug 2020 09:06:27 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=haB+kLrfuYUnX1QRhCRrExdmXpWhe0msojEhc/6IfBE=; b=Q+k2ihijyVPVWPtuvJ/wbicUttguv37ghqruVnOwXXEtxnNXmRf5wXaDKsvQHxvGBe ggBi+2QAJo05a+m08rnNA+52jv0W9eFZHop8Z16zVPyM0v+SEcMmbtEMqALrnIFkF4X6 G22xvi7F7ZxL7+3EeHaKS3VDF1klgkSZraNYkoLS5217Vped4dtCT8u8aHXa03aDaXTg EJ8nMng8b2KapHZEejCo3oOpDI1e7ePje6fY2nU6r5j7bg9q/vF9NQse3Uniw8EkYVZP itl9Nh5/tJtX4vY9FccPck8TeRhv8YklCCESEmGNfqhfeaQ0vqo3XpspcSr15H7HOmk0 1eBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=haB+kLrfuYUnX1QRhCRrExdmXpWhe0msojEhc/6IfBE=; b=AMZ8XWnSFxx9peKn4OzBpbpOowoi3MRnq54+HAXZrU22es73nK60JjuZGyOwsNfiGw GQsjoR4M68d9erc9+1MzEK58KZUoxbsHVgg3FSa686bgqPol3RgkQ5krbAxjwYQkHCl8 G5gcWfCjPw12K0uSYp0JB9zJtd4Ft3F22rGuAR+MJqRqDrPYn2YhVrEed12hijpQO4Ov jpkyPH23s80LVGpfyDaz023JQ+n2rv+cko3ZzFfx7kd6qRlt+RknkkeNH1VCCi3VJAJZ ehOFTYY1cjT34ODEalfOt5mvBZtlOwil7VaI112r58eW1nrIT9wnE/qY2pEiPNC9xv+i CXcQ== X-Gm-Message-State: AOAM530R8jCdFCLz1/KL7LLJt3uFOd5iYpaWkvo4OwK1cR0hJbuHnEiU A7XXmH7rwL6e48jAEE2s5TCiHzt8Fxu3bg== X-Google-Smtp-Source: ABdhPJwhlinzqDCn05V6qfoBPN4IjdnoDHzGGPipwmfLWfR70chETlQOHTweapVJDpW3R0tX6V6gkg== X-Received: by 2002:a17:90a:7e15:: with SMTP id i21mr57021pjl.175.1598889986167; Mon, 31 Aug 2020 09:06:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 16/76] target/microblaze: Fix width of FSR Date: Mon, 31 Aug 2020 09:05:01 -0700 Message-Id: <20200831160601.833692-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1030; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1030.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The exception status register is only 32-bits wide. Do not use a 64-bit type to represent it. Since cpu_fsr is only used during MSR and MTR instructions, we can just as easily use an explicit load and store, so eliminate the variable. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/cpu.h | 2 +- target/microblaze/translate.c | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index aaac0c9a6c..34177f9b28 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -240,7 +240,7 @@ struct CPUMBState { uint32_t msr; uint64_t ear; uint32_t esr; - uint64_t fsr; + uint32_t fsr; uint64_t btr; uint64_t edr; float_status fp_status; diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index f63aae6de9..3fc2feda3d 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -59,7 +59,6 @@ static TCGv_i32 cpu_pc; static TCGv_i32 cpu_msr; static TCGv_i64 cpu_ear; static TCGv_i32 cpu_esr; -static TCGv_i64 cpu_fsr; static TCGv_i64 cpu_btr; static TCGv_i64 cpu_edr; static TCGv_i32 env_imm; @@ -542,7 +541,8 @@ static void dec_msr(DisasContext *dc) tcg_gen_mov_i32(cpu_esr, cpu_R[dc->ra]); break; case SR_FSR: - tcg_gen_extu_i32_i64(cpu_fsr, cpu_R[dc->ra]); + tcg_gen_st_i32(cpu_R[dc->ra], + cpu_env, offsetof(CPUMBState, fsr)); break; case SR_BTR: tcg_gen_extu_i32_i64(cpu_btr, cpu_R[dc->ra]); @@ -583,7 +583,8 @@ static void dec_msr(DisasContext *dc) tcg_gen_mov_i32(cpu_R[dc->rd], cpu_esr); break; case SR_FSR: - tcg_gen_extrl_i64_i32(cpu_R[dc->rd], cpu_fsr); + tcg_gen_ld_i32(cpu_R[dc->rd], + cpu_env, offsetof(CPUMBState, fsr)); break; case SR_BTR: tcg_gen_extrl_i64_i32(cpu_R[dc->rd], cpu_btr); @@ -1798,7 +1799,7 @@ void mb_cpu_dump_state(CPUState *cs, FILE *f, int fla= gs) qemu_fprintf(f, "IN: PC=3D%x %s\n", env->pc, lookup_symbol(env->pc)); qemu_fprintf(f, "rmsr=3D%x resr=3D%x rear=3D%" PRIx64 " " - "debug=3D%x imm=3D%x iflags=3D%x fsr=3D%" PRIx64 " " + "debug=3D%x imm=3D%x iflags=3D%x fsr=3D%x " "rbtr=3D%" PRIx64 "\n", env->msr, env->esr, env->ear, env->debug, env->imm, env->iflags, env->fsr, @@ -1867,8 +1868,6 @@ void mb_tcg_init(void) tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, ear), "rear"); cpu_esr =3D tcg_global_mem_new_i32(cpu_env, offsetof(CPUMBState, esr), "resr"); - cpu_fsr =3D - tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, fsr), "rfsr"); cpu_btr =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, btr), "rbtr"); cpu_edr =3D --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890556; cv=none; d=zohomail.com; s=zohoarc; b=VFIbXvOB5T2vRn8b4EhTe255Hf2BdjQEvyztZu+CWTXR6zCMabpId8jHycfdmrJXjUjalpaP3vWY/P0TsWgnj2KimLgDIUjHA8ZDTGMQ/U9Nmd16lbEyjTE/LJ/3i6GN105zH/gFBUfmnAXs3RlW9VU5s90zmQMj6hSAfBg6S3U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890556; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=5ShF+BY48IwWmImvy13quKmLT6LR29ss78JGb2qClWk=; b=CZYvhN4ZPGltu+nMlyDuPMtott6PrVQZUKCnCRMViNPUzaxN+pbMZj4uxX3RJhHNNsBE0ocAUlGaMrCfbZatJAhcNwjPnGQWk96++uIM63BIQh7KTrW4fa3GF/0iNNEgzhN0WvvPkUZvyRu81yl8fnJ47fvG1ha5kN42nrIi5cg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890556252252.95596445296178; Mon, 31 Aug 2020 09:15:56 -0700 (PDT) Received: from localhost ([::1]:43762 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmTD-0006fn-Qz for importer@patchew.org; Mon, 31 Aug 2020 12:15:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33710) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKF-00047A-JS for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:31 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]:54430) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKD-0005yF-8J for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:31 -0400 Received: by mail-pj1-x1036.google.com with SMTP id mm21so22366pjb.4 for ; Mon, 31 Aug 2020 09:06:28 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5ShF+BY48IwWmImvy13quKmLT6LR29ss78JGb2qClWk=; b=e6H9RCuEKvAL+dLt6N7M3C0TcE2anGkJN9Z91jPzXhZEYoyYmMu+DD394dp6CGlApu 04cwemSEhZ2q1QcrIrjbuCpF6UIYoMB0TiSyRGLGpA18eKJDefax0/LMj3p2E1STxzJl Ea5aPjD8n+Wgf4rrgXORlgUeHQxlwuAdLlqXDk+MPTwPLUzO3mXJJmt5aTijoZGS6UHw oSjpkmCMsA5kUNJKBty02udS1fhu9CVDsgiJnA62EUF/XB5A3Rucgu8MkG2IQhHIb7F3 Qa2KDzaelkVfWP2a7nE/MfMSN5PxO8cq9IeMLHdiqo0bDK4vU/di/xkk5u6XJVj4j2Zp 8cSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5ShF+BY48IwWmImvy13quKmLT6LR29ss78JGb2qClWk=; b=Fd7tInKS2d4TOR5LZQFEOY+e8WZzXah8nQTz7AWQ0W+bvKmbYgV0DIOSs2pP+dV8fn FdDQTGUPNxNYkseXfp0vT2gJ21EV+sB0O21kI83t9wepb4+vXZzvynLMxa0AFKR7mfIi tLSMvfAkYZEvKjVnmcpeDSaMai3xMDoPmF67A2QSj7eNCF2MU4SXyD9BNTJElTQhzP4y sMjaHEIO4/w1rL5Wn/XZudWi+cNL/kbGwmg7CBTib/5FK6QdzstLJao6zbzgi0YzL2OO gYPAiGgX3IoQBqx5FhF2pppzm00MhwmoGr3JKLPOGoxQSsqE/ZuKgYuMl4CMJbzeLd+S rVHA== X-Gm-Message-State: AOAM531xR2KIO2fDfW25A3XbZ6QXaVSOxPAyT2b+uynIGRmXVwwyknBH OQrlN907chO/nufb2yQh23QNSi1YOpbogg== X-Google-Smtp-Source: ABdhPJxCaqwX9QsYEty3dBpZh2Z/R7ki45b2FnDnfSB5RFyz2eyXmeRUoV1C9sE4pXwTbqBU/Ixn+Q== X-Received: by 2002:a17:902:6ac3:: with SMTP id i3mr1591333plt.21.1598889987492; Mon, 31 Aug 2020 09:06:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 17/76] target/microblaze: Fix width of BTR Date: Mon, 31 Aug 2020 09:05:02 -0700 Message-Id: <20200831160601.833692-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The branch target register is only 32-bits wide. Do not use a 64-bit type to represent it. Since cpu_btr is only used during MSR and MTR instructions, we can just as easily use an explicit load and store, so eliminate the variable. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/cpu.h | 2 +- target/microblaze/translate.c | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index 34177f9b28..72f068a5fd 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -241,7 +241,7 @@ struct CPUMBState { uint64_t ear; uint32_t esr; uint32_t fsr; - uint64_t btr; + uint32_t btr; uint64_t edr; float_status fp_status; /* Stack protectors. Yes, it's a hw feature. */ diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 3fc2feda3d..a2bba0fe61 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -59,7 +59,6 @@ static TCGv_i32 cpu_pc; static TCGv_i32 cpu_msr; static TCGv_i64 cpu_ear; static TCGv_i32 cpu_esr; -static TCGv_i64 cpu_btr; static TCGv_i64 cpu_edr; static TCGv_i32 env_imm; static TCGv_i32 env_btaken; @@ -545,7 +544,8 @@ static void dec_msr(DisasContext *dc) cpu_env, offsetof(CPUMBState, fsr)); break; case SR_BTR: - tcg_gen_extu_i32_i64(cpu_btr, cpu_R[dc->ra]); + tcg_gen_st_i32(cpu_R[dc->ra], + cpu_env, offsetof(CPUMBState, btr)); break; case SR_EDR: tcg_gen_extu_i32_i64(cpu_edr, cpu_R[dc->ra]); @@ -587,7 +587,8 @@ static void dec_msr(DisasContext *dc) cpu_env, offsetof(CPUMBState, fsr)); break; case SR_BTR: - tcg_gen_extrl_i64_i32(cpu_R[dc->rd], cpu_btr); + tcg_gen_ld_i32(cpu_R[dc->rd], + cpu_env, offsetof(CPUMBState, btr)); break; case SR_EDR: tcg_gen_extrl_i64_i32(cpu_R[dc->rd], cpu_edr); @@ -1799,8 +1800,7 @@ void mb_cpu_dump_state(CPUState *cs, FILE *f, int fla= gs) qemu_fprintf(f, "IN: PC=3D%x %s\n", env->pc, lookup_symbol(env->pc)); qemu_fprintf(f, "rmsr=3D%x resr=3D%x rear=3D%" PRIx64 " " - "debug=3D%x imm=3D%x iflags=3D%x fsr=3D%x " - "rbtr=3D%" PRIx64 "\n", + "debug=3D%x imm=3D%x iflags=3D%x fsr=3D%x rbtr=3D%x\n", env->msr, env->esr, env->ear, env->debug, env->imm, env->iflags, env->fsr, env->btr); @@ -1868,8 +1868,6 @@ void mb_tcg_init(void) tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, ear), "rear"); cpu_esr =3D tcg_global_mem_new_i32(cpu_env, offsetof(CPUMBState, esr), "resr"); - cpu_btr =3D - tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, btr), "rbtr"); cpu_edr =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, edr), "redr"); } --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890153; cv=none; d=zohomail.com; s=zohoarc; b=NF2a6qoz0Kn7E7a16LTnWmeU0ulvpejEjImLAE9aHKcJvsbCkU8HTevHJntIeMDcOwteSRUxde3SmhbN0gkspPy2DmiC9DsnaFLSWvInMHBN71BrNza7Yavzn4MCx+s2RIRT+FYaPH1dCTFfZxRzhv85/aQPNEnuzXauKB2VKf4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890153; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=a0lsjfSJGV5n3EJZlHS5Bf00XbvDVFjsqHd/6iA5EWQ=; b=P9xQ/n1IuguB3LJo/WnZA1pEUotO7/PDyySbM+Rozpt6mAfey2dA5IlxhoYPKL1qgsm1d2FsfSMLOYHbRGf+YuyzhcmwfW85Xmd3ReaVTbzlsfGg4muhJlEGsyGHEAnVoU753G7AFDUwao9zzne8mucA17CBKRAFWkkGEZ4kOR0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890153088556.8915846273558; Mon, 31 Aug 2020 09:09:13 -0700 (PDT) Received: from localhost ([::1]:36192 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmMq-0000pT-B4 for importer@patchew.org; Mon, 31 Aug 2020 12:09:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33754) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKH-0004B5-14 for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:33 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]:52758) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKE-0005yU-HE for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:32 -0400 Received: by mail-pj1-x1029.google.com with SMTP id o16so28034pjr.2 for ; Mon, 31 Aug 2020 09:06:30 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=a0lsjfSJGV5n3EJZlHS5Bf00XbvDVFjsqHd/6iA5EWQ=; b=cd4Tt9EjTc04eHfBPpNFdFwM2EJFVGUleFLVKLO/1Xn7FKNJXOJQ45ms7tdsgp8drQ mTKbN1+3yAnbzMYmC4YWufv8uTwjl2AVYRqn6F4D/zFDWn2dhxdrGJo+jmYz25C9KLU8 fsUf1hE40hAAn8C5Rg75cjhO08XGmJTr5E+T83LXDD5ZOrrQKeVRshE1BwsIvw2DNiGO 2SHMeXoaO8E7YBTSGZgeZuaGS//iIs5mO41ATcB+kfvsg2hpK8JsuQPlIhmt8JMNsDw2 2XanwJMvtvBU0ebC+Q74Acj1PjY++ZRbcnN2ZiD/Rvoi5fVKd/6PKJgnteEqQ/k6Rdws dPCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=a0lsjfSJGV5n3EJZlHS5Bf00XbvDVFjsqHd/6iA5EWQ=; b=do9AjA8NABMrixZjA414emnwyFbBUuDzmhqlbGiKpZzbsKI6gVCS8f7pAna0WDfDwO X34kLdDvbjuDyjeX5vyOTArERRosoFOhSkYNu+bqxldDHTtamwVmI4nlk3UqW5IpDX6p eY5258Od2Wo2MnDvpdSlCPwSewJWS8T7DEV6f94lPIiRmykfoQMh/Zqm68MPYd/F2mvL 9sOSd/P5ZIOJlyF3IWOPWbzftDEap+jnicfi7WGjgpxN9D+umk4+qpybENu/KI5EObYX j9Vel1zjBuhL6curOPvVSYjUASmam54q+RhsHzqjV0zVmwORDq3KrF985eA7T1SUm8Cz 07JA== X-Gm-Message-State: AOAM532S6BwPxH3x/YGFXQr1ICRuxsCrChbs5q4gJ68XusQO9sgTTaBy SGOMMgzThAe5yAdEP6rxT7YfN5eeW+LJMg== X-Google-Smtp-Source: ABdhPJyNSUFPtm6IqJUHlj9ECtbC3oA/zZHRoIxvo1r615LItH1WI7zErZmrVS5awPZrIrY0CJPAGg== X-Received: by 2002:a17:90a:5a48:: with SMTP id m8mr61640pji.181.1598889988664; Mon, 31 Aug 2020 09:06:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 18/76] target/microblaze: Fix width of EDR Date: Mon, 31 Aug 2020 09:05:03 -0700 Message-Id: <20200831160601.833692-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1029.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The exception data register is only 32-bits wide. Do not use a 64-bit type to represent it. Since cpu_edr is only used during MSR and MTR instructions, we can just as easily use an explicit load and store, so eliminate the variable. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/cpu.h | 2 +- target/microblaze/translate.c | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index 72f068a5fd..b88acba12b 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -242,7 +242,7 @@ struct CPUMBState { uint32_t esr; uint32_t fsr; uint32_t btr; - uint64_t edr; + uint32_t edr; float_status fp_status; /* Stack protectors. Yes, it's a hw feature. */ uint32_t slr, shr; diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index a2bba0fe61..a862ac4055 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -59,7 +59,6 @@ static TCGv_i32 cpu_pc; static TCGv_i32 cpu_msr; static TCGv_i64 cpu_ear; static TCGv_i32 cpu_esr; -static TCGv_i64 cpu_edr; static TCGv_i32 env_imm; static TCGv_i32 env_btaken; static TCGv_i32 cpu_btarget; @@ -548,7 +547,8 @@ static void dec_msr(DisasContext *dc) cpu_env, offsetof(CPUMBState, btr)); break; case SR_EDR: - tcg_gen_extu_i32_i64(cpu_edr, cpu_R[dc->ra]); + tcg_gen_st_i32(cpu_R[dc->ra], + cpu_env, offsetof(CPUMBState, edr)); break; case 0x800: tcg_gen_st_i32(cpu_R[dc->ra], @@ -591,7 +591,8 @@ static void dec_msr(DisasContext *dc) cpu_env, offsetof(CPUMBState, btr)); break; case SR_EDR: - tcg_gen_extrl_i64_i32(cpu_R[dc->rd], cpu_edr); + tcg_gen_ld_i32(cpu_R[dc->rd], + cpu_env, offsetof(CPUMBState, edr)); break; case 0x800: tcg_gen_ld_i32(cpu_R[dc->rd], @@ -1818,7 +1819,7 @@ void mb_cpu_dump_state(CPUState *cs, FILE *f, int fla= gs) } =20 /* Registers that aren't modeled are reported as 0 */ - qemu_fprintf(f, "redr=3D%" PRIx64 " rpid=3D0 rzpr=3D0 rtlbx=3D0 rtlbsx= =3D0 " + qemu_fprintf(f, "redr=3D%x rpid=3D0 rzpr=3D0 rtlbx=3D0 rtlbsx=3D0 " "rtlblo=3D0 rtlbhi=3D0\n", env->edr); qemu_fprintf(f, "slr=3D%x shr=3D%x\n", env->slr, env->shr); for (i =3D 0; i < 32; i++) { @@ -1868,8 +1869,6 @@ void mb_tcg_init(void) tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, ear), "rear"); cpu_esr =3D tcg_global_mem_new_i32(cpu_env, offsetof(CPUMBState, esr), "resr"); - cpu_edr =3D - tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, edr), "redr"); } =20 void restore_state_to_opc(CPUMBState *env, TranslationBlock *tb, --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890258; cv=none; d=zohomail.com; s=zohoarc; b=dpo5Drzp2ijzRREfHEBFTnFz/77St+9Cm7occbD6lAUsHhNCKdjVIWi6sIeHolOK48zgW0Giclg9djB5NvUDVKd2RKpqOnQFEG6MNX0OT+7I0ybIWCYrT34jmTRMsCrsFF59JqMApuDMdafc+it5zGQngqsst9vV66+LsWkknZk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890258; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=hvfzFSYLvytasBwqaxM3erubgzY88RSzpHLi7SaenA4=; b=YuP6lErA9Wn7zeXEZh3er2cxHI25bhy5u6d7BH+Lu8hKh4wCwRgZSZYDp7Gm8JXR5QiqKesWuh5j3XDj5lnzWOqPt8Jr9k42UotA4LJGrD+me14rwRohbdQQrJT6IJ6/7l6/L7otruYMIoYiGDewEu0dV87GIXEK0jEbfPfTBKU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890258652319.04773259902197; Mon, 31 Aug 2020 09:10:58 -0700 (PDT) Received: from localhost ([::1]:44598 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmOX-0004FP-N9 for importer@patchew.org; Mon, 31 Aug 2020 12:10:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33818) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKJ-0004HC-BG for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:35 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]:33295) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKF-0005yl-PB for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:34 -0400 Received: by mail-pl1-x62c.google.com with SMTP id h2so3256632plr.0 for ; Mon, 31 Aug 2020 09:06:31 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=hvfzFSYLvytasBwqaxM3erubgzY88RSzpHLi7SaenA4=; b=GiahcZs/EA5dhKX6PkCcQ5TpPE+2Eu7ybM4w5ghbhLDfSCMmiZeexCwg2FDxZHqDTV elkA1czuTID4/JoYMi3u6tx4DDyJbAbuh3RM0NSDE/nD5/a1Mv4bqWG1jm23LCrHahm6 j3jyWZs2DkMraXX9L/zVH+DTAfrrRCZcPKMKWwYPGlRxtRrBR6GXWBxNXYOIt+25x5QS 0BJGKwjR4n5vgSv9p0Fj046mqhHRawi4vqxEpPIy/QcPaAoVuJr1Lqo5RkN+ezD1sSYg lTYhmXEySptsp2PtyWLtMxURYvlPJ7KRACbfOv8CDy3+TeCbdWcnOuUhUI9RFCCu9u4Y gWzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=hvfzFSYLvytasBwqaxM3erubgzY88RSzpHLi7SaenA4=; b=btdCqJyp5Q5GzKPcG14zbSPDxVI+dJqsKR+esWMTnQi2gk0hKO0zjtGcJR/jaLFG4v MP3lrnS25b2BBACJ/QADFRsCE/WgjesUEUtaJBWemLTSIAy0tO6dIjOrJ1fDBWknsBXq s0x9eXVVMIK2drdiSIACYLTmgEFjOBJE4F2SLhZNnWT3o/m9+zS1g8jspmWqLt9bQOD2 04dWoT99BjrnhmSXwvh5a+88Y8g2NVlCsyUTBjJvFBc/4V8C58l4eLnnWomGnLnEs1QH c7W6NEdCy0hNob4ZbgiSp7I+8OrVYPjv9n4M63a/WlYsGSJIedgrmSQ/HQBeR/XYApws WuWg== X-Gm-Message-State: AOAM533vqd9dpxc/CkbrFuPje53tbdJYWDbuhMs3sSamz6wsWUdJElQ4 YPhBZ1XegKBbbR+69S8aO0kXrob9y/2w5Q== X-Google-Smtp-Source: ABdhPJyBZgwx7KCqmXjbKoBHRDLey6Cjm3WKI+xxH/mz4QvjJm5qne817Vw2p2s0I0W9nLvfFWdtsQ== X-Received: by 2002:a17:90b:4d06:: with SMTP id mw6mr83686pjb.226.1598889989887; Mon, 31 Aug 2020 09:06:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 19/76] target/microblaze: Remove cpu_ear Date: Mon, 31 Aug 2020 09:05:04 -0700 Message-Id: <20200831160601.833692-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Since cpu_ear is only used during MSR and MTR instructions, we can just as easily use an explicit load and store, so eliminate the variable. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/translate.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index a862ac4055..f5ca25cead 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -57,7 +57,6 @@ static TCGv_i32 env_debug; static TCGv_i32 cpu_R[32]; static TCGv_i32 cpu_pc; static TCGv_i32 cpu_msr; -static TCGv_i64 cpu_ear; static TCGv_i32 cpu_esr; static TCGv_i32 env_imm; static TCGv_i32 env_btaken; @@ -533,7 +532,12 @@ static void dec_msr(DisasContext *dc) msr_write(dc, cpu_R[dc->ra]); break; case SR_EAR: - tcg_gen_extu_i32_i64(cpu_ear, cpu_R[dc->ra]); + { + TCGv_i64 t64 =3D tcg_temp_new_i64(); + tcg_gen_extu_i32_i64(t64, cpu_R[dc->ra]); + tcg_gen_st_i64(t64, cpu_env, offsetof(CPUMBState, ear)= ); + tcg_temp_free_i64(t64); + } break; case SR_ESR: tcg_gen_mov_i32(cpu_esr, cpu_R[dc->ra]); @@ -573,10 +577,15 @@ static void dec_msr(DisasContext *dc) msr_read(dc, cpu_R[dc->rd]); break; case SR_EAR: - if (extended) { - tcg_gen_extrh_i64_i32(cpu_R[dc->rd], cpu_ear); - } else { - tcg_gen_extrl_i64_i32(cpu_R[dc->rd], cpu_ear); + { + TCGv_i64 t64 =3D tcg_temp_new_i64(); + tcg_gen_ld_i64(t64, cpu_env, offsetof(CPUMBState, ear)= ); + if (extended) { + tcg_gen_extrh_i64_i32(cpu_R[dc->rd], t64); + } else { + tcg_gen_extrl_i64_i32(cpu_R[dc->rd], t64); + } + tcg_temp_free_i64(t64); } break; case SR_ESR: @@ -1865,8 +1874,6 @@ void mb_tcg_init(void) tcg_global_mem_new_i32(cpu_env, offsetof(CPUMBState, pc), "rpc"); cpu_msr =3D tcg_global_mem_new_i32(cpu_env, offsetof(CPUMBState, msr), "rmsr"); - cpu_ear =3D - tcg_global_mem_new_i64(cpu_env, offsetof(CPUMBState, ear), "rear"); cpu_esr =3D tcg_global_mem_new_i32(cpu_env, offsetof(CPUMBState, esr), "resr"); } --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890354; cv=none; d=zohomail.com; s=zohoarc; b=gM7Mz0CpoeA11mWMTHrj/3LDpVG25KKDa5y8gPM8viuJxJuDJxMHlFC+TtfHkkHRZZRNx7BgOXbnfjZst1xpLxFLWKkhzBOuNGPNR2c4us7OlkV6wLYNk8Zsn5KcKqzIcIpMLdbpeSg4/HRcQ+uHkjsM4XpWuoMk20qLwlctLzk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890354; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=A5jlK0T95NH3JH2keCbWDldYP2nsIY3hCH9MCVLy8Ng=; b=HtnU/OXDnBABqaSk0/VIhoA2eLS4WPH2DqRgWoZwXszipz1410Vju2YfAi+gphN6oWmD3muVpl3ouEBkPSSlNiBpuVDBB7M2FH9Zc4QcJZIE3q6VZJdcZ9dDByatazwpDes5wN2UDnZxgAfHXtMy4UbHbfIVE363xOZ1FYIQh0w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890354931807.5297912648273; Mon, 31 Aug 2020 09:12:34 -0700 (PDT) Received: from localhost ([::1]:52984 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmQ6-0007bW-73 for importer@patchew.org; Mon, 31 Aug 2020 12:12:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33822) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKJ-0004I9-L3 for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:35 -0400 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]:56170) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKG-0005z3-TS for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:35 -0400 Received: by mail-pj1-x102f.google.com with SMTP id 2so19805pjx.5 for ; Mon, 31 Aug 2020 09:06:32 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=A5jlK0T95NH3JH2keCbWDldYP2nsIY3hCH9MCVLy8Ng=; b=npAPzeI394RnB/EKsO+bAly/wiJB/8fRBbn0h5PD7bb0A14uv1yFTTjbaeNiF95w+a KrJTwtYPNlxJwmTUq9B5weX+6Ocd8sX2oN0/2fVxeUe7UF38MAIE29R7aFt8n512kyXR UAVeXnpq9o1XY7zsmDdrQ8QfsWy+t0nYIjAAg+MEXMpdKI8s9y3vslItFEUiw+wC70ru ScjCK2rcsyu+uLAr2AOgm/XrBjVnXWLus4J57Mr8b4qZRUqu9pnP2Sk8MT1lFl91cjtg cdsD3xAjEVrH63vgpEQ0D6mlst8lSDGWtC5rQMrOd9WB0godKN1t0I/YjklAeqsU7k/3 GT6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=A5jlK0T95NH3JH2keCbWDldYP2nsIY3hCH9MCVLy8Ng=; b=np3ymulgTJEQ82lNbGDdQLdpaOLkuthATpRPVjK31SS2duIhJJrd/Gy6hCx/6Qpge/ UwnXRThsfzalRElgnhDsMOoPeEtWphMMTVuDIqKrXaQCKtuDLqnCoKWSMUXaJfX0revP 60YJz5u5I2PHQKWCgMXJPyCuqpkPwaoemuRajYY/aRYUWH59XCUggBT/ePc1HD7E9QTm WdfOcdW6z6CSlIMnexCmWhJpxQPwj6oELChP3hyjTAvN6uSbhum9xxC0DRwmgFaqgjmD uAjdtIqjLg5DhDWk18F3G+OLOrjwHee6k9in559lXbYUVAgH+QUT8SpJnhDQd9KaBM/n 2SMw== X-Gm-Message-State: AOAM530luIQWdbK2+aNqttl3aX55G6CxsRf4AsZovXheKV3H/HNtIxKL Baic74mezSPNPRWW5Q+6h4mZiskf9Mq6yA== X-Google-Smtp-Source: ABdhPJw7tRYqwTLKJ6nEpcH1bHtRvILrTLdCe8SiCh/GF8uILdGUHiy9lN0dZCBbpOl8bJlbGikOEQ== X-Received: by 2002:a17:90b:4a4d:: with SMTP id lb13mr93066pjb.130.1598889991089; Mon, 31 Aug 2020 09:06:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 20/76] target/microblaze: Tidy raising of exceptions Date: Mon, 31 Aug 2020 09:05:05 -0700 Message-Id: <20200831160601.833692-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102f.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Split out gen_raise_exception which does no cpu state sync. Rename t_gen_raise_exception to gen_raise_exception_sync to emphasize that it does a sync. Create gen_raise_hw_excp to simplify code raising EXCP_HW_EXCP. Since there is now only one use of cpu_esr, perform a store instead and remove the TCG variable. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/translate.c | 62 +++++++++++++++++++++-------------- 1 file changed, 37 insertions(+), 25 deletions(-) diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index f5ca25cead..9a00a78b8a 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -57,7 +57,6 @@ static TCGv_i32 env_debug; static TCGv_i32 cpu_R[32]; static TCGv_i32 cpu_pc; static TCGv_i32 cpu_msr; -static TCGv_i32 cpu_esr; static TCGv_i32 env_imm; static TCGv_i32 env_btaken; static TCGv_i32 cpu_btarget; @@ -114,17 +113,31 @@ static inline void t_sync_flags(DisasContext *dc) } } =20 -static inline void t_gen_raise_exception(DisasContext *dc, uint32_t index) +static void gen_raise_exception(DisasContext *dc, uint32_t index) { TCGv_i32 tmp =3D tcg_const_i32(index); =20 - t_sync_flags(dc); - tcg_gen_movi_i32(cpu_pc, dc->pc); gen_helper_raise_exception(cpu_env, tmp); tcg_temp_free_i32(tmp); dc->is_jmp =3D DISAS_UPDATE; } =20 +static void gen_raise_exception_sync(DisasContext *dc, uint32_t index) +{ + t_sync_flags(dc); + tcg_gen_movi_i32(cpu_pc, dc->pc); + gen_raise_exception(dc, index); +} + +static void gen_raise_hw_excp(DisasContext *dc, uint32_t esr_ec) +{ + TCGv_i32 tmp =3D tcg_const_i32(esr_ec); + tcg_gen_st_i32(tmp, cpu_env, offsetof(CPUMBState, esr)); + tcg_temp_free_i32(tmp); + + gen_raise_exception_sync(dc, EXCP_HW_EXCP); +} + static inline bool use_goto_tb(DisasContext *dc, target_ulong dest) { #ifndef CONFIG_USER_ONLY @@ -178,8 +191,7 @@ static bool trap_illegal(DisasContext *dc, bool cond) { if (cond && (dc->tb_flags & MSR_EE_FLAG) && dc->cpu->cfg.illegal_opcode_exception) { - tcg_gen_movi_i32(cpu_esr, ESR_EC_ILLEGAL_OP); - t_gen_raise_exception(dc, EXCP_HW_EXCP); + gen_raise_hw_excp(dc, ESR_EC_ILLEGAL_OP); } return cond; } @@ -194,8 +206,7 @@ static bool trap_userspace(DisasContext *dc, bool cond) bool cond_user =3D cond && mem_index =3D=3D MMU_USER_IDX; =20 if (cond_user && (dc->tb_flags & MSR_EE_FLAG)) { - tcg_gen_movi_i32(cpu_esr, ESR_EC_PRIVINSN); - t_gen_raise_exception(dc, EXCP_HW_EXCP); + gen_raise_hw_excp(dc, ESR_EC_PRIVINSN); } return cond_user; } @@ -540,7 +551,8 @@ static void dec_msr(DisasContext *dc) } break; case SR_ESR: - tcg_gen_mov_i32(cpu_esr, cpu_R[dc->ra]); + tcg_gen_st_i32(cpu_R[dc->ra], + cpu_env, offsetof(CPUMBState, esr)); break; case SR_FSR: tcg_gen_st_i32(cpu_R[dc->ra], @@ -589,7 +601,8 @@ static void dec_msr(DisasContext *dc) } break; case SR_ESR: - tcg_gen_mov_i32(cpu_R[dc->rd], cpu_esr); + tcg_gen_ld_i32(cpu_R[dc->rd], + cpu_env, offsetof(CPUMBState, esr)); break; case SR_FSR: tcg_gen_ld_i32(cpu_R[dc->rd], @@ -1258,8 +1271,7 @@ static void dec_br(DisasContext *dc) =20 /* mbar IMM & 16 decodes to sleep. */ if (mbar_imm & 16) { - TCGv_i32 tmp_hlt =3D tcg_const_i32(EXCP_HLT); - TCGv_i32 tmp_1 =3D tcg_const_i32(1); + TCGv_i32 tmp_1; =20 LOG_DIS("sleep\n"); =20 @@ -1269,13 +1281,16 @@ static void dec_br(DisasContext *dc) } =20 t_sync_flags(dc); + + tmp_1 =3D tcg_const_i32(1); tcg_gen_st_i32(tmp_1, cpu_env, -offsetof(MicroBlazeCPU, env) +offsetof(CPUState, halted)); - tcg_gen_movi_i32(cpu_pc, dc->pc + 4); - gen_helper_raise_exception(cpu_env, tmp_hlt); - tcg_temp_free_i32(tmp_hlt); tcg_temp_free_i32(tmp_1); + + tcg_gen_movi_i32(cpu_pc, dc->pc + 4); + + gen_raise_exception(dc, EXCP_HLT); return; } /* Break the TB. */ @@ -1300,14 +1315,15 @@ static void dec_br(DisasContext *dc) tcg_gen_movi_i32(env_btaken, 1); tcg_gen_mov_i32(cpu_btarget, *(dec_alu_op_b(dc))); if (link && !dslot) { - if (!(dc->tb_flags & IMM_FLAG) && (dc->imm =3D=3D 8 || dc->imm= =3D=3D 0x18)) - t_gen_raise_exception(dc, EXCP_BREAK); + if (!(dc->tb_flags & IMM_FLAG) && + (dc->imm =3D=3D 8 || dc->imm =3D=3D 0x18)) { + gen_raise_exception_sync(dc, EXCP_BREAK); + } if (dc->imm =3D=3D 0) { if (trap_userspace(dc, true)) { return; } - - t_gen_raise_exception(dc, EXCP_DEBUG); + gen_raise_exception_sync(dc, EXCP_DEBUG); } } } else { @@ -1411,8 +1427,7 @@ static void dec_rts(DisasContext *dc) static int dec_check_fpuv2(DisasContext *dc) { if ((dc->cpu->cfg.use_fpu !=3D 2) && (dc->tb_flags & MSR_EE_FLAG)) { - tcg_gen_movi_i32(cpu_esr, ESR_EC_FPU); - t_gen_raise_exception(dc, EXCP_HW_EXCP); + gen_raise_hw_excp(dc, ESR_EC_FPU); } return (dc->cpu->cfg.use_fpu =3D=3D 2) ? PVR2_USE_FPU2_MASK : 0; } @@ -1668,8 +1683,7 @@ void gen_intermediate_code(CPUState *cs, TranslationB= lock *tb, int max_insns) #endif =20 if (unlikely(cpu_breakpoint_test(cs, dc->pc, BP_ANY))) { - t_gen_raise_exception(dc, EXCP_DEBUG); - dc->is_jmp =3D DISAS_UPDATE; + gen_raise_exception_sync(dc, EXCP_DEBUG); /* The address covered by the breakpoint must be included in [tb->pc, tb->pc + tb->size) in order to for it to be properly cleared -- thus we increment the PC here so that @@ -1874,8 +1888,6 @@ void mb_tcg_init(void) tcg_global_mem_new_i32(cpu_env, offsetof(CPUMBState, pc), "rpc"); cpu_msr =3D tcg_global_mem_new_i32(cpu_env, offsetof(CPUMBState, msr), "rmsr"); - cpu_esr =3D - tcg_global_mem_new_i32(cpu_env, offsetof(CPUMBState, esr), "resr"); } =20 void restore_state_to_opc(CPUMBState *env, TranslationBlock *tb, --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890415; cv=none; d=zohomail.com; s=zohoarc; b=IzB34e7fvKKMqYqmLnQAFtY70JqMPTC6FHcuIBjVEQt52EG/8p5rBOVE/Mlj5ma2HM5yF0j/c7pPEY5Xhffi5Ij8SGFZ0vMj/9ZGEX1apl3FDuW0XQlZPZBiL1ZW1tt3neyuctYOKJOaCSiBxsFqeIDnWeyJVux4oqUOmsrWULI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890415; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=m3MYH1ZpDTZxIcPbri13lEz6BY7Q37pNtVKufrg+PL0=; b=Nv2UaAy+yRW/s6w78FU3K1dStQrBKeZw7aV+bOssK3rYWjD5Z23GYhc0VEP2X23MnauP5E6bcb2KlToAVz87IO2yOOdsjfwOyQIsy6/fNWDKHKnXAtp63CoyvonmNQ7Xub3Xz1+YcQEyPhU/JVDw/5PHBLGu4N3PubflOfqnjAU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890415266157.75465196386006; Mon, 31 Aug 2020 09:13:35 -0700 (PDT) Received: from localhost ([::1]:59770 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmR4-0001qx-Gi for importer@patchew.org; Mon, 31 Aug 2020 12:13:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33824) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKJ-0004Ih-T3 for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:35 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]:41753) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKI-0005zF-5L for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:35 -0400 Received: by mail-pl1-x634.google.com with SMTP id l9so1610571plt.8 for ; Mon, 31 Aug 2020 09:06:33 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=m3MYH1ZpDTZxIcPbri13lEz6BY7Q37pNtVKufrg+PL0=; b=iO2f8HVeuM/oIfYyxVyt2Vo5YvVjQ16mVl2in0qFsBq5wHHT1RLRfyPXqxChF5kw4N WsAJp9ZE2mdD9GNuSHDyJTkJhZr/yEryba8nQP/Ug8a7SfcWE6Enad6lJ7BSEm15723O c4xEKiSti9Hy1sF8YqVkA/ufzUHPQnOWOwwGrmT7cqiY6Q/QI3dVBY5wKmqQ79kAC4uw s6B0OWT6onLiN5G9K9Aul+AsHq2gJMnNlHNCKQQwHsMnm6WJRq0ro4BZXlueyvrZXLe7 gGzWOGFDEwBWC7uz/IlElW2ZXZhEYKObQT6Soy1aqjUFsGvd/bNl2cmQ1g0o3s2cs4JB taQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=m3MYH1ZpDTZxIcPbri13lEz6BY7Q37pNtVKufrg+PL0=; b=lWFZb/tVWoJOHXu7KOAUy4lzAXlYC3tGuhpS+bfJjYtZBSIvL77fNFVTrMwdXqdTPw 7Qr0seUwPfTxTfGymYQqgfv8CwhkjBLEMVdxJzWy6eY4bG1q1/qYtvtNlWzp4G15hVqk TIYplKHPn4w/g+nr84e3t10lmOdmWyw2hQrc58qsuxgsnUZBCTx+aqFh+s8+WyypBUSQ QNDd1QOkZS1s8rAfXDXatbKvezYTasfa1RRVnMBGAcwTYnRk1VpO5rDMBetPYx6Z+3fp P6i8j8KblxE/66Izsqi2C3IjXVRR+imnHvQmtX2uaoz5qZT+rIbv1/mODz6gGdQDoEbL KnEw== X-Gm-Message-State: AOAM531iaG1yM/fQZu/3zmZkCJwdXMPxk4uEbcMRW5EyCf0Yye03ccxp NAIar2L2tevcWEDt+1Lrm6IvXx3Ticbz8A== X-Google-Smtp-Source: ABdhPJzYVNkDh76QEFpxW9rTCs4yTIbmM0jRdJyhBG7T/7n9hcbh6awL/Rj0K18MX4l0QZlOILlBkw== X-Received: by 2002:a17:902:a58c:: with SMTP id az12mr1585331plb.109.1598889992311; Mon, 31 Aug 2020 09:06:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 21/76] target/microblaze: Mark raise_exception as noreturn Date: Mon, 31 Aug 2020 09:05:06 -0700 Message-Id: <20200831160601.833692-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This will allow tcg to remove any dead code that might follow an exception. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/helper.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/microblaze/helper.h b/target/microblaze/helper.h index 2f8bdea22b..820711366d 100644 --- a/target/microblaze/helper.h +++ b/target/microblaze/helper.h @@ -1,4 +1,4 @@ -DEF_HELPER_2(raise_exception, void, env, i32) +DEF_HELPER_FLAGS_2(raise_exception, TCG_CALL_NO_WG, noreturn, env, i32) DEF_HELPER_1(debug, void, env) DEF_HELPER_FLAGS_3(carry, TCG_CALL_NO_RWG_SE, i32, i32, i32, i32) DEF_HELPER_2(cmp, i32, i32, i32) --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890488; cv=none; d=zohomail.com; s=zohoarc; b=cIs71eaXq/hoQ+RjpPx1o1DgOGXrLC5xB0DPgk+ZnwgbBxVCht3eR2COh1FVvXgH/Q2MEZDbphWeA7U2L9kcyCkvOqkJOPLrCkqb8RwKSRfEoSWhJc8IluEIU+NHwmPBSea5Ju2IaPKtLDzMsMr/TXMuH/GO654pBB05mGWb72g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890488; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=392OYT6LHbH2eWUoF1akQuoZ1nr82ScpvX4flFh2VTg=; b=P4uJ8abPDu50OOTjiZ4tJ0etKsZjeYa7brT/MmcFaZoJR8IFDMr14H+1Ea6+fIRHpHxIuw4QmC/1ucQJujzKB8bLYyJqE9Lk+7ff4SfnuX2wGy5Xw2vwCQDuwHi5Tw5lSAe/2QPYt3G+duaZYGPOBOphOmh2Naa1Znp2/lI4aAk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890488951167.28257726175036; Mon, 31 Aug 2020 09:14:48 -0700 (PDT) Received: from localhost ([::1]:39712 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmSG-00054a-6a for importer@patchew.org; Mon, 31 Aug 2020 12:14:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33852) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKL-0004NJ-Tu for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:37 -0400 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]:35652) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKJ-0005zZ-Tt for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:37 -0400 Received: by mail-pf1-x429.google.com with SMTP id o68so816367pfg.2 for ; Mon, 31 Aug 2020 09:06:35 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=392OYT6LHbH2eWUoF1akQuoZ1nr82ScpvX4flFh2VTg=; b=QvLWtPYiDmT/JFY+iWf7kBEhWERphk0tnv7rZxz1sh1y8oYKyAMRbmM43MuLX8FZli ejpBvfklhRwz71cdg9LU0UxnxjKF5slDWRhpiS9+no/PdvxMdIsnY99NsQU5z0t2w90g u3wIYMWh7vKSrPL14mKvlj4lA4ngqwM/uCYj73aTls6vCrmmzqEY3/JlsbRv3MDwjXbz RFvQk7tDCvq1+y8GoweUGJqFReF8m4qd3nurI42NcyrCSPDIlh+jjMfGVwPphtsLuAFW ALOpFx4IYQcdpot5v52fS43dNL+9Ur6YaIcN15OIq6v+EfpCiRzQBnvH9QPbNuu/7LHU SUzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=392OYT6LHbH2eWUoF1akQuoZ1nr82ScpvX4flFh2VTg=; b=klzPCJhRfZ56AZWuRSn0tMtgBP3F1Uk7RgOKQmXAH75sRdHq2QBslvm2KCLnerkoFq 6UqVBIcrMG22C1EMLZztjX1VarFozmYm4fUlrUTXSgwzp3aBji+sdn8HsW+DLifV6oMR f31FnCu+mf1pA4W1978inlPolNWXkKtOADmbjfGfMaz9Em7R4O2Q9E8iiPYYLPl4QzJx /YNPwhHpBr87bBBC6v2hsky+sVsWoC6OkRiqO+Wa0PoTKNMAcslGAhEtY8IR5bbRjbld /xEg1/OceYi3SCYCgWLl8nCmTj6t7rcDZ1dQuNX7yrdUNK7aS/tvmQ9BaaeA7w/tPpJQ p4dQ== X-Gm-Message-State: AOAM531solpkcPg3fBz6mBS7txQJN0WuKT5DEhxRuGlnYApvSG0WT0Yb 5ZOWw9SDBntF9YR9EdCgMnMQdxGKD8tM/Q== X-Google-Smtp-Source: ABdhPJzH4uWXzHQpeG7zx9Zzx678DofsA+zYdAYwQ4TkVCtfZHTjcMKpA6m+aFhMqrwAcAtvDVmHAw== X-Received: by 2002:a65:670d:: with SMTP id u13mr1761993pgf.280.1598889993678; Mon, 31 Aug 2020 09:06:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 22/76] target/microblaze: Remove helper_debug and env->debug Date: Mon, 31 Aug 2020 09:05:07 -0700 Message-Id: <20200831160601.833692-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This is not used, and seems redundant with -d cpu. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/cpu.h | 1 - target/microblaze/helper.h | 1 - target/microblaze/op_helper.c | 23 ----------------------- target/microblaze/translate.c | 16 ++-------------- 4 files changed, 2 insertions(+), 39 deletions(-) diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index b88acba12b..7708c9a3d3 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -229,7 +229,6 @@ typedef struct CPUMBState CPUMBState; #define STREAM_NONBLOCK (1 << 4) =20 struct CPUMBState { - uint32_t debug; uint32_t btaken; uint32_t btarget; uint32_t bimm; diff --git a/target/microblaze/helper.h b/target/microblaze/helper.h index 820711366d..9309142f8d 100644 --- a/target/microblaze/helper.h +++ b/target/microblaze/helper.h @@ -1,5 +1,4 @@ DEF_HELPER_FLAGS_2(raise_exception, TCG_CALL_NO_WG, noreturn, env, i32) -DEF_HELPER_1(debug, void, env) DEF_HELPER_FLAGS_3(carry, TCG_CALL_NO_RWG_SE, i32, i32, i32, i32) DEF_HELPER_2(cmp, i32, i32, i32) DEF_HELPER_2(cmpu, i32, i32, i32) diff --git a/target/microblaze/op_helper.c b/target/microblaze/op_helper.c index dc2bec0c99..d79202c3f8 100644 --- a/target/microblaze/op_helper.c +++ b/target/microblaze/op_helper.c @@ -71,29 +71,6 @@ void helper_raise_exception(CPUMBState *env, uint32_t in= dex) cpu_loop_exit(cs); } =20 -void helper_debug(CPUMBState *env) -{ - int i; - - qemu_log("PC=3D%08x\n", env->pc); - qemu_log("rmsr=3D%x resr=3D%x rear=3D%" PRIx64 " " - "debug[%x] imm=3D%x iflags=3D%x\n", - env->msr, env->esr, env->ear, - env->debug, env->imm, env->iflags); - qemu_log("btaken=3D%d btarget=3D%x mode=3D%s(saved=3D%s) eip=3D%d ie= =3D%d\n", - env->btaken, env->btarget, - (env->msr & MSR_UM) ? "user" : "kernel", - (env->msr & MSR_UMS) ? "user" : "kernel", - (bool)(env->msr & MSR_EIP), - (bool)(env->msr & MSR_IE)); - for (i =3D 0; i < 32; i++) { - qemu_log("r%2.2d=3D%8.8x ", i, env->regs[i]); - if ((i + 1) % 4 =3D=3D 0) - qemu_log("\n"); - } - qemu_log("\n\n"); -} - static inline uint32_t compute_carry(uint32_t a, uint32_t b, uint32_t cin) { uint32_t cout =3D 0; diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 9a00a78b8a..ecfa6b86a4 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -53,7 +53,6 @@ #define DISAS_UPDATE DISAS_TARGET_1 /* cpu state was modified dynamically= */ #define DISAS_TB_JUMP DISAS_TARGET_2 /* only pc was modified statically */ =20 -static TCGv_i32 env_debug; static TCGv_i32 cpu_R[32]; static TCGv_i32 cpu_pc; static TCGv_i32 cpu_msr; @@ -1675,13 +1674,6 @@ void gen_intermediate_code(CPUState *cs, Translation= Block *tb, int max_insns) tcg_gen_insn_start(dc->pc); num_insns++; =20 -#if SIM_COMPAT - if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) { - tcg_gen_movi_i32(cpu_pc, dc->pc); - gen_helper_debug(); - } -#endif - if (unlikely(cpu_breakpoint_test(cs, dc->pc, BP_ANY))) { gen_raise_exception_sync(dc, EXCP_DEBUG); /* The address covered by the breakpoint must be included in @@ -1824,10 +1816,9 @@ void mb_cpu_dump_state(CPUState *cs, FILE *f, int fl= ags) qemu_fprintf(f, "IN: PC=3D%x %s\n", env->pc, lookup_symbol(env->pc)); qemu_fprintf(f, "rmsr=3D%x resr=3D%x rear=3D%" PRIx64 " " - "debug=3D%x imm=3D%x iflags=3D%x fsr=3D%x rbtr=3D%x\n", + "imm=3D%x iflags=3D%x fsr=3D%x rbtr=3D%x\n", env->msr, env->esr, env->ear, - env->debug, env->imm, env->iflags, env->fsr, - env->btr); + env->imm, env->iflags, env->fsr, env->btr); qemu_fprintf(f, "btaken=3D%d btarget=3D%x mode=3D%s(saved=3D%s) eip=3D= %d ie=3D%d\n", env->btaken, env->btarget, (env->msr & MSR_UM) ? "user" : "kernel", @@ -1857,9 +1848,6 @@ void mb_tcg_init(void) { int i; =20 - env_debug =3D tcg_global_mem_new_i32(cpu_env, - offsetof(CPUMBState, debug), - "debug0"); env_iflags =3D tcg_global_mem_new_i32(cpu_env, offsetof(CPUMBState, iflags), "iflags"); --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890625; cv=none; d=zohomail.com; s=zohoarc; b=B7t/D6BTDfB4n/8fdtrjmmhY65mwBXNpmlm6HnTon5aD+Y3ZdFJ4EArB4noLIPbaAQVQzddDaq9e/P2y3M78DWJIaHAbzNL+chHRPfqVb/FXzpHblOYRUYSFHl+4r1pbnz9eAzT5nemjMXWrwHcTdBCdB0ofLmFV7GQt97TQq60= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890625; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=FX8jCFtFLdRyMWFPeEfLBpL1wb+Y9mzpfQMTMdMGMF0=; b=CfYMDgop58ylXLjS5Imcvi//Tcp3FTjmevnGrkb7mBbXjZAl1b/faMA6UM2vlNb1Y++m2E2yLMfkjD8vJ5mE5efM/ZqHSwUiAyVxBLujcuMzNGEDKz9KYBT95XKWS14ovP2pjoEJXdgfLYLyxUHNQA75wsBOPXBWS+5H0JnQGtM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890625312404.6646953717401; Mon, 31 Aug 2020 09:17:05 -0700 (PDT) Received: from localhost ([::1]:48122 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmUS-0008Vu-HT for importer@patchew.org; Mon, 31 Aug 2020 12:17:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33860) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKM-0004P6-Ly for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:38 -0400 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]:52129) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKK-0005zr-Le for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:38 -0400 Received: by mail-pj1-x102f.google.com with SMTP id ds1so30978pjb.1 for ; Mon, 31 Aug 2020 09:06:36 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=FX8jCFtFLdRyMWFPeEfLBpL1wb+Y9mzpfQMTMdMGMF0=; b=KgVxiYAYms5Bm+0AO5QmdJBkrrvxr4mMnEND1O8pGSCT8+o+zGc+U+u87mgrHFkqDD cN6Nb7Aoz4zQ6kagrAeZKA+g9ROvYz4wzsRSM0BkaxFWZownw215lX2xdzjuMA9kBvv6 8/vfie/MgXKJpSZKEvLKJc/cK1XtWpX0W6ra3/bnvuGPgRAjGfXsU5bOGY3c1D5WW+c4 zrSGEjfIcs1FwPxSTnmW9NCu6er1Eq/up+rqzWpnbmOls8ICjtKiZ3jXVW6pM5durCU9 ysO2nS4E5QgSbMn1wlaXTXAipOsEkAOcZ9sOjo/AGhAeOvsPROnSMLz0gsgJfDwB8iFV AUcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=FX8jCFtFLdRyMWFPeEfLBpL1wb+Y9mzpfQMTMdMGMF0=; b=RZr4XfsZ2j6HINXRdUlzWPeGhHEwj5bj60zUTh1bJtap903c/v56gqeu+k1S4qMOQx 7NaaQv7q+minjfjfBf4j4Mc0TtSVu7W5NajTbxGvjh6bnYITj49B2wp1fry+gHJDHCUr TpQwWy0Q3NUiwuqjDo4NDXcpWOUhbHfa7WINoEQNpB24NLWm9oZPHRy8zp3EGAKC1Vmv RDGZVWZ0a3snP2KRvu22mnjBkoFUCyR8iK2FVcWLC6CerObmUssvZ7om6/O4UJF7sV14 fjAbqM21i9pGIXTlChYiKcsGpsJcYb0uKue34boWYhdVaJ30G5Iu6Lpr3ZCcBFKsTwhB n44Q== X-Gm-Message-State: AOAM530kZfOtUrKA5ANYrB+OnAQjkabfJmJ+WL4s68OYr3o2Yjuz8oEl R4PF0Cy0E6KfFRz7p2V586GLVU/4HX1kFw== X-Google-Smtp-Source: ABdhPJx4Y39cnAddSz4Xr51Quwi524MByjzY8q85GabOgDrcwEArQsNF66KprOmNGagLvZs3uxf9Mw== X-Received: by 2002:a17:902:b193:: with SMTP id s19mr1620051plr.72.1598889994875; Mon, 31 Aug 2020 09:06:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 23/76] target/microblaze: Rename env_* tcg variables to cpu_* Date: Mon, 31 Aug 2020 09:05:08 -0700 Message-Id: <20200831160601.833692-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102f.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This is cpu_imm, cpu_btaken, cpu_iflags, cpu_res_addr and cpu_res_val. It is standard for these file-scope globals to begin with cpu_*. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/translate.c | 54 +++++++++++++++++------------------ 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index ecfa6b86a4..9aa63ddcc5 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -56,12 +56,12 @@ static TCGv_i32 cpu_R[32]; static TCGv_i32 cpu_pc; static TCGv_i32 cpu_msr; -static TCGv_i32 env_imm; -static TCGv_i32 env_btaken; +static TCGv_i32 cpu_imm; +static TCGv_i32 cpu_btaken; static TCGv_i32 cpu_btarget; -static TCGv_i32 env_iflags; -static TCGv env_res_addr; -static TCGv_i32 env_res_val; +static TCGv_i32 cpu_iflags; +static TCGv cpu_res_addr; +static TCGv_i32 cpu_res_val; =20 #include "exec/gen-icount.h" =20 @@ -107,7 +107,7 @@ static inline void t_sync_flags(DisasContext *dc) { /* Synch the tb dependent flags between translator and runtime. */ if (dc->tb_flags !=3D dc->synced_flags) { - tcg_gen_movi_i32(env_iflags, dc->tb_flags); + tcg_gen_movi_i32(cpu_iflags, dc->tb_flags); dc->synced_flags =3D dc->tb_flags; } } @@ -222,10 +222,10 @@ static inline TCGv_i32 *dec_alu_op_b(DisasContext *dc) { if (dc->type_b) { if (dc->tb_flags & IMM_FLAG) - tcg_gen_ori_i32(env_imm, env_imm, dc->imm); + tcg_gen_ori_i32(cpu_imm, cpu_imm, dc->imm); else - tcg_gen_movi_i32(env_imm, (int32_t)((int16_t)dc->imm)); - return &env_imm; + tcg_gen_movi_i32(cpu_imm, (int32_t)((int16_t)dc->imm)); + return &cpu_imm; } else return &cpu_R[dc->rb]; } @@ -859,7 +859,7 @@ static inline void sync_jmpstate(DisasContext *dc) { if (dc->jmp =3D=3D JMP_DIRECT || dc->jmp =3D=3D JMP_DIRECT_CC) { if (dc->jmp =3D=3D JMP_DIRECT) { - tcg_gen_movi_i32(env_btaken, 1); + tcg_gen_movi_i32(cpu_btaken, 1); } dc->jmp =3D JMP_INDIRECT; tcg_gen_movi_i32(cpu_btarget, dc->jmp_pc); @@ -869,7 +869,7 @@ static inline void sync_jmpstate(DisasContext *dc) static void dec_imm(DisasContext *dc) { LOG_DIS("imm %x\n", dc->imm << 16); - tcg_gen_movi_i32(env_imm, (dc->imm << 16)); + tcg_gen_movi_i32(cpu_imm, (dc->imm << 16)); dc->tb_flags |=3D IMM_FLAG; dc->clear_imm =3D 0; } @@ -1040,8 +1040,8 @@ static void dec_load(DisasContext *dc) } =20 if (ex) { - tcg_gen_mov_tl(env_res_addr, addr); - tcg_gen_mov_i32(env_res_val, v); + tcg_gen_mov_tl(cpu_res_addr, addr); + tcg_gen_mov_i32(cpu_res_val, v); } if (dc->rd) { tcg_gen_mov_i32(cpu_R[dc->rd], v); @@ -1103,7 +1103,7 @@ static void dec_store(DisasContext *dc) =20 write_carryi(dc, 1); swx_skip =3D gen_new_label(); - tcg_gen_brcond_tl(TCG_COND_NE, env_res_addr, addr, swx_skip); + tcg_gen_brcond_tl(TCG_COND_NE, cpu_res_addr, addr, swx_skip); =20 /* * Compare the value loaded at lwx with current contents of @@ -1111,11 +1111,11 @@ static void dec_store(DisasContext *dc) */ tval =3D tcg_temp_new_i32(); =20 - tcg_gen_atomic_cmpxchg_i32(tval, addr, env_res_val, + tcg_gen_atomic_cmpxchg_i32(tval, addr, cpu_res_val, cpu_R[dc->rd], mem_index, mop); =20 - tcg_gen_brcond_i32(TCG_COND_NE, env_res_val, tval, swx_skip); + tcg_gen_brcond_i32(TCG_COND_NE, cpu_res_val, tval, swx_skip); write_carryi(dc, 0); tcg_temp_free_i32(tval); } @@ -1204,7 +1204,7 @@ static void eval_cond_jmp(DisasContext *dc, TCGv_i32 = pc_true, TCGv_i32 pc_false) TCGv_i32 zero =3D tcg_const_i32(0); =20 tcg_gen_movcond_i32(TCG_COND_NE, cpu_pc, - env_btaken, zero, + cpu_btaken, zero, pc_true, pc_false); =20 tcg_temp_free_i32(zero); @@ -1245,7 +1245,7 @@ static void dec_bcc(DisasContext *dc) dc->jmp =3D JMP_INDIRECT; tcg_gen_addi_i32(cpu_btarget, *dec_alu_op_b(dc), dc->pc); } - eval_cc(dc, cc, env_btaken, cpu_R[dc->ra]); + eval_cc(dc, cc, cpu_btaken, cpu_R[dc->ra]); } =20 static void dec_br(DisasContext *dc) @@ -1311,7 +1311,7 @@ static void dec_br(DisasContext *dc) =20 dc->jmp =3D JMP_INDIRECT; if (abs) { - tcg_gen_movi_i32(env_btaken, 1); + tcg_gen_movi_i32(cpu_btaken, 1); tcg_gen_mov_i32(cpu_btarget, *(dec_alu_op_b(dc))); if (link && !dslot) { if (!(dc->tb_flags & IMM_FLAG) && @@ -1330,7 +1330,7 @@ static void dec_br(DisasContext *dc) dc->jmp =3D JMP_DIRECT; dc->jmp_pc =3D dc->pc + (int32_t)((int16_t)dc->imm); } else { - tcg_gen_movi_i32(env_btaken, 1); + tcg_gen_movi_i32(cpu_btaken, 1); tcg_gen_addi_i32(cpu_btarget, *dec_alu_op_b(dc), dc->pc); } } @@ -1419,7 +1419,7 @@ static void dec_rts(DisasContext *dc) LOG_DIS("rts ir=3D%x\n", dc->ir); =20 dc->jmp =3D JMP_INDIRECT; - tcg_gen_movi_i32(env_btaken, 1); + tcg_gen_movi_i32(cpu_btaken, 1); tcg_gen_add_i32(cpu_btarget, cpu_R[dc->ra], *dec_alu_op_b(dc)); } =20 @@ -1722,7 +1722,7 @@ void gen_intermediate_code(CPUState *cs, TranslationB= lock *tb, int max_insns) TCGLabel *l1 =3D gen_new_label(); t_sync_flags(dc); /* Conditional jmp. */ - tcg_gen_brcondi_i32(TCG_COND_NE, env_btaken, 0, l1); + tcg_gen_brcondi_i32(TCG_COND_NE, cpu_btaken, 0, l1); gen_goto_tb(dc, 1, dc->pc); gen_set_label(l1); gen_goto_tb(dc, 0, dc->jmp_pc); @@ -1848,22 +1848,22 @@ void mb_tcg_init(void) { int i; =20 - env_iflags =3D tcg_global_mem_new_i32(cpu_env, + cpu_iflags =3D tcg_global_mem_new_i32(cpu_env, offsetof(CPUMBState, iflags), "iflags"); - env_imm =3D tcg_global_mem_new_i32(cpu_env, + cpu_imm =3D tcg_global_mem_new_i32(cpu_env, offsetof(CPUMBState, imm), "imm"); cpu_btarget =3D tcg_global_mem_new_i32(cpu_env, offsetof(CPUMBState, btarget), "btarget"); - env_btaken =3D tcg_global_mem_new_i32(cpu_env, + cpu_btaken =3D tcg_global_mem_new_i32(cpu_env, offsetof(CPUMBState, btaken), "btaken"); - env_res_addr =3D tcg_global_mem_new(cpu_env, + cpu_res_addr =3D tcg_global_mem_new(cpu_env, offsetof(CPUMBState, res_addr), "res_addr"); - env_res_val =3D tcg_global_mem_new_i32(cpu_env, + cpu_res_val =3D tcg_global_mem_new_i32(cpu_env, offsetof(CPUMBState, res_val), "res_val"); for (i =3D 0; i < ARRAY_SIZE(cpu_R); i++) { --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890429; cv=none; d=zohomail.com; s=zohoarc; b=UKrEbgNBt6QkfUhB/4fIOQwOFeykGXuPE99+Ls/BnhazP3NTawNz9jf6BiHzJoWz6l23escGBjxCUiuZmkzmcTZy8/nPLprdC8LSBXkZYdnLjip0JJaOaqI97/xVAXPNI1izb1QezRr/YpCJXpHdZd2DRZKwoizC1xhmbeJ1jIg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890429; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=AL0uzCSfOumwHkpirTGBR8ikbqPuw1vczWQqngjG3N0=; b=loE2oeqn0XhZTGtK8jgrHqtr+jKu4KEY7OBQ07XwW/Bo3WJjrLC+ytVvghy2ix2X4BgGWzGiMLNqHLE/31V3KmKd2U4HnYOd8rBkU4oVA9WXFeWFcU21VfwGwm/6LGVJ/wXbRauovpAXTCIqvGcNNQaXQaO2kflFshhelKslk8k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890429851841.021911150511; Mon, 31 Aug 2020 09:13:49 -0700 (PDT) Received: from localhost ([::1]:33076 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmRJ-0002S9-3D for importer@patchew.org; Mon, 31 Aug 2020 12:13:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33872) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKN-0004Rp-Pk for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:39 -0400 Received: from mail-pg1-x544.google.com ([2607:f8b0:4864:20::544]:36781) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKL-000600-Tx for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:39 -0400 Received: by mail-pg1-x544.google.com with SMTP id p37so839657pgl.3 for ; Mon, 31 Aug 2020 09:06:37 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=AL0uzCSfOumwHkpirTGBR8ikbqPuw1vczWQqngjG3N0=; b=LzRSJzg+9xLDiAfHG2MiCqfHY3rfpM7pRsngkZIBkIxLXE1Z13CuRkrmV2R7gYZdaT twX5EQP9nCJVl/VnULtIbP1lwrCTDDY/bzt62WZIi0KyHoiEpdYXkM6Cjyo61CMUmnoX FqpeV6jeIdPOiQi7fuC+rk6sh9I5VCRkXQNrPjaz1jWurnj3b2ILvcuYizkp+45N0X5h ptxbtNNwJ80gZCppo1N5SNEMYjATF7ku3k5k3q1VIF+f3dWM8000CWEnDh58f/s9x7Wz o6hh9+CvW1NxoX5RSZpPp0gWnwSR/E2hkWQnt9El/8l7wAfHZ7TzqDspVWIFhoV3gBnQ P1gQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=AL0uzCSfOumwHkpirTGBR8ikbqPuw1vczWQqngjG3N0=; b=jsGGUlYFIV0kfGMTEyXIH+IgoAulzaBI/yPdqhCdI7FsXev8sIwAiFamge5zHp5TID 95zdcgxVS/Hu4T5i3VyCk2Sd06wdO2YCJD4/yQ0jkODGYYq8UFfbVgt79Cmgi34Og+cP wkHp4l4KGtTGT3GHeWFr1TFy6Tc0t7pYdXPo6j4cBdZLZCzbh1mQjGm+jNIonjglGCdJ XiLZ7QXMP41hoERS/2Lb9JQLNljscHHXSdVCA3mMAe+xNo3S597a9CXiv1ASIuP2R1JO ggcpAe4PP9Otl25nVetMSvx7/aP3jb+149ZmZwkjj0plD7hcsRDk8H6A+9PaS/2HkkPy 9b/w== X-Gm-Message-State: AOAM531s4BaGEPoEus3+R1m8LLXe3Ljp+FRUSTfmsU5XsG8FL/mS5E/y hvi/8OMVZsmE4THOeXD1xVwnxPlGnvAENQ== X-Google-Smtp-Source: ABdhPJxlBNyy/iT38uKciavKj0A+8MAM04J936ebchAvpQqdBBPl00qF9O73Y7witvaY4NZI1cpyHg== X-Received: by 2002:a63:1f42:: with SMTP id q2mr1692764pgm.265.1598889996131; Mon, 31 Aug 2020 09:06:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 24/76] target/microblaze: Tidy mb_tcg_init Date: Mon, 31 Aug 2020 09:05:09 -0700 Message-Id: <20200831160601.833692-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::544; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x544.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" All of the tcg globals can be recorded in the same table. Drop the "r" prefix from "rpc" and "rmsr". Obviates the need for regnames[], which was incorrectly not const. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/translate.c | 62 +++++++++++++++-------------------- 1 file changed, 27 insertions(+), 35 deletions(-) diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 9aa63ddcc5..e709884f2d 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -95,14 +95,6 @@ typedef struct DisasContext { int singlestep_enabled; } DisasContext; =20 -static const char *regnames[] =3D -{ - "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", - "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", - "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23", - "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31", -}; - static inline void t_sync_flags(DisasContext *dc) { /* Synch the tb dependent flags between translator and runtime. */ @@ -1846,36 +1838,36 @@ void mb_cpu_dump_state(CPUState *cs, FILE *f, int f= lags) =20 void mb_tcg_init(void) { - int i; +#define R(X) { &cpu_R[X], offsetof(CPUMBState, regs[X]), "r" #X } +#define SP(X) { &cpu_##X, offsetof(CPUMBState, X), #X } =20 - cpu_iflags =3D tcg_global_mem_new_i32(cpu_env, - offsetof(CPUMBState, iflags), - "iflags"); - cpu_imm =3D tcg_global_mem_new_i32(cpu_env, - offsetof(CPUMBState, imm), - "imm"); - cpu_btarget =3D tcg_global_mem_new_i32(cpu_env, - offsetof(CPUMBState, btarget), - "btarget"); - cpu_btaken =3D tcg_global_mem_new_i32(cpu_env, - offsetof(CPUMBState, btaken), - "btaken"); - cpu_res_addr =3D tcg_global_mem_new(cpu_env, - offsetof(CPUMBState, res_addr), - "res_addr"); - cpu_res_val =3D tcg_global_mem_new_i32(cpu_env, - offsetof(CPUMBState, res_val), - "res_val"); - for (i =3D 0; i < ARRAY_SIZE(cpu_R); i++) { - cpu_R[i] =3D tcg_global_mem_new_i32(cpu_env, - offsetof(CPUMBState, regs[i]), - regnames[i]); + static const struct { + TCGv_i32 *var; int ofs; char name[8]; + } i32s[] =3D { + R(0), R(1), R(2), R(3), R(4), R(5), R(6), R(7), + R(8), R(9), R(10), R(11), R(12), R(13), R(14), R(15), + R(16), R(17), R(18), R(19), R(20), R(21), R(22), R(23), + R(24), R(25), R(26), R(27), R(28), R(29), R(30), R(31), + + SP(pc), + SP(msr), + SP(imm), + SP(iflags), + SP(btaken), + SP(btarget), + SP(res_val), + }; + +#undef R +#undef SP + + for (int i =3D 0; i < ARRAY_SIZE(i32s); ++i) { + *i32s[i].var =3D + tcg_global_mem_new_i32(cpu_env, i32s[i].ofs, i32s[i].name); } =20 - cpu_pc =3D - tcg_global_mem_new_i32(cpu_env, offsetof(CPUMBState, pc), "rpc"); - cpu_msr =3D - tcg_global_mem_new_i32(cpu_env, offsetof(CPUMBState, msr), "rmsr"); + cpu_res_addr =3D + tcg_global_mem_new(cpu_env, offsetof(CPUMBState, res_addr), "res_a= ddr"); } =20 void restore_state_to_opc(CPUMBState *env, TranslationBlock *tb, --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890732; cv=none; d=zohomail.com; s=zohoarc; b=CYVyCDSZ8meud+QYmvRcNg5i3vlGslMoffTJ++FoAkdj1JqvsVlq5o+xFcDjcuF9IXeVGoZrvKtYMr9kqMEux9k0K9HsbFI7iMnsNK4reOzzt9G7aul8L9gCIARuIhokwi9+AQI1wUf5URrk1qtq4jyw3GuJjcKxRUcoGxy1asg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890732; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=DtzY55Tus/r5J7PSj8eWDw4XOCX5k4lFWrzVagsDTBc=; b=XASncxUtvmLmHZeTEBQ9mb31V9g9AiWgpXhsZO34XsRrflJ0FWvM1fcKgzvjNtFnQx5zP5K33RKtjqf+t5N/9V2t1l7g790ryEFfJjEc30ueBui9qka8E3MJk7mlbPvVX01Yp85Qvxw47XITNnKZ8uaM3ObqMvx8M+xm0qs1tQQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890732327823.7433213053667; Mon, 31 Aug 2020 09:18:52 -0700 (PDT) Received: from localhost ([::1]:56338 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmWB-0003MP-E1 for importer@patchew.org; Mon, 31 Aug 2020 12:18:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33898) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKQ-0004WK-SM for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:42 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]:35461) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKN-00060D-FJ for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:42 -0400 Received: by mail-pl1-x629.google.com with SMTP id a8so3253456plm.2 for ; Mon, 31 Aug 2020 09:06:39 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=DtzY55Tus/r5J7PSj8eWDw4XOCX5k4lFWrzVagsDTBc=; b=E/72jU4FL2OJ1FeN58dqZ76v15+cwMVcoT+oofWIH+WTy82e1dVJZibDLhRxfURAUh GdDA+M8srsiVzQoIUkYIdnsnkoGLSrTlZizcYH0rCrmesiSd6KIonJ3NRz6AJQKOEn9j Y9HCA6A9E0c7JcLqmpQagaWzg6B2kn24Wzuaelj7y+HVOyFAsJtDC5PTNzcKnSG4cL2F iwvG0hzc/5yt/MPc0nUjIGlIBMk0vi+QIK2s4HyUBDIHOXjW2FUexqCEWrPX5C+I64h+ jH65OrWGoyD6HQdxW76I/Z+NSPhrOMVuW83bEDzZKNAv96Tz7BeLMlkuMhAbTbJGqO9c ZQqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=DtzY55Tus/r5J7PSj8eWDw4XOCX5k4lFWrzVagsDTBc=; b=UKccYy0k1xIWNRM2NTTddgz4YzJGyadFbLkBGv4vxSL1JUrQvjSSpYJHnRUsvxQplj 6M7f38k9j071pTbNUo/Cv6MTzOaYpR84LLg762bh/F0CUizo6zuVFCFpXonwL8xwAVv6 7kJGuM76dIXhSztK8vQi4v+p8aF4OA2bBTTtOngvXBsz5A9wuoziVQ5ueK0zQSYgvQIQ pf7mppzxeQ1qlDZTQvewQJSa6qNaqPzhZhiFUcw6m5Uen+MCkqx0nCRtOPMXfjmNf8R2 MdXRWUHFSe5U5Rlemk3B17k+SVJDVXlGN3H9iezx9ftlJ7IPqQuJpL1Cwiaybb51UHbs IPcA== X-Gm-Message-State: AOAM530P4X7/tb4JhLpEbDHkQXReLuHIDTusoKzwBvWX5jFVp8cZwTZk V8UtDIdOw1fXJnqZ6PsMkPCSUd6tdbxnwA== X-Google-Smtp-Source: ABdhPJxSJaFtIi5tnC+qGXvgEBstyj3X9UsnLn8wrxKXW365QM+xcO5ODNZpw/0w48cBRHi4rLngqQ== X-Received: by 2002:a17:902:343:: with SMTP id 61mr1617275pld.274.1598889997361; Mon, 31 Aug 2020 09:06:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 25/76] target/microblaze: Split out MSR[C] to its own variable Date: Mon, 31 Aug 2020 09:05:10 -0700 Message-Id: <20200831160601.833692-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::629; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x629.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Having the MSR[C] bit separate will improve arithmetic that operates on the carry bit. Having mb_cpu_read_msr() populate MSR[CC] will prevent the carry copy not matching the carry bit. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/cpu.h | 19 +++++++- linux-user/elfload.c | 2 +- target/microblaze/cpu.c | 4 +- target/microblaze/gdbstub.c | 4 +- target/microblaze/helper.c | 58 +++++++++++----------- target/microblaze/translate.c | 91 +++++++++++------------------------ 6 files changed, 82 insertions(+), 96 deletions(-) diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index 7708c9a3d3..7066878ac7 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -236,7 +236,8 @@ struct CPUMBState { uint32_t imm; uint32_t regs[32]; uint32_t pc; - uint32_t msr; + uint32_t msr; /* All bits of MSR except MSR[C] and MSR[CC] */ + uint32_t msr_c; /* MSR[C], in low bit; other bits must be 0 */ uint64_t ear; uint32_t esr; uint32_t fsr; @@ -327,6 +328,22 @@ hwaddr mb_cpu_get_phys_page_debug(CPUState *cpu, vaddr= addr); int mb_cpu_gdb_read_register(CPUState *cpu, GByteArray *buf, int reg); int mb_cpu_gdb_write_register(CPUState *cpu, uint8_t *buf, int reg); =20 +static inline uint32_t mb_cpu_read_msr(const CPUMBState *env) +{ + /* Replicate MSR[C] to MSR[CC]. */ + return env->msr | (env->msr_c * (MSR_C | MSR_CC)); +} + +static inline void mb_cpu_write_msr(CPUMBState *env, uint32_t val) +{ + env->msr_c =3D (val >> 2) & 1; + /* + * Clear both MSR[C] and MSR[CC] from the saved copy. + * MSR_PVR is not writable and is always clear. + */ + env->msr =3D val & ~(MSR_C | MSR_CC | MSR_PVR); +} + void mb_tcg_init(void); /* you can call this signal handler from your SIGBUS and SIGSEGV signal handlers to inform the virtual CPU of exceptions. non zero diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 58b3f4ef4d..04c28cbb9e 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -1039,7 +1039,7 @@ static void elf_core_copy_regs(target_elf_gregset_t *= regs, const CPUMBState *env } =20 (*regs)[pos++] =3D tswapreg(env->pc); - (*regs)[pos++] =3D tswapreg(env->msr); + (*regs)[pos++] =3D tswapreg(mb_cpu_read_msr(env)); (*regs)[pos++] =3D 0; (*regs)[pos++] =3D tswapreg(env->ear); (*regs)[pos++] =3D 0; diff --git a/target/microblaze/cpu.c b/target/microblaze/cpu.c index 0eac068570..1eabf5cc3f 100644 --- a/target/microblaze/cpu.c +++ b/target/microblaze/cpu.c @@ -121,9 +121,9 @@ static void mb_cpu_reset(DeviceState *dev) =20 #if defined(CONFIG_USER_ONLY) /* start in user mode with interrupts enabled. */ - env->msr =3D MSR_EE | MSR_IE | MSR_VM | MSR_UM; + mb_cpu_write_msr(env, MSR_EE | MSR_IE | MSR_VM | MSR_UM); #else - env->msr =3D 0; + mb_cpu_write_msr(env, 0); mmu_init(&env->mmu); env->mmu.c_mmu =3D 3; env->mmu.c_mmu_tlb_access =3D 3; diff --git a/target/microblaze/gdbstub.c b/target/microblaze/gdbstub.c index 9cba9d2215..08d6a0e807 100644 --- a/target/microblaze/gdbstub.c +++ b/target/microblaze/gdbstub.c @@ -62,7 +62,7 @@ int mb_cpu_gdb_read_register(CPUState *cs, GByteArray *me= m_buf, int n) val =3D env->pc; break; case GDB_MSR: - val =3D env->msr; + val =3D mb_cpu_read_msr(env); break; case GDB_EAR: val =3D env->ear; @@ -118,7 +118,7 @@ int mb_cpu_gdb_write_register(CPUState *cs, uint8_t *me= m_buf, int n) env->pc =3D tmp; break; case GDB_MSR: - env->msr =3D tmp; + mb_cpu_write_msr(env, tmp); break; case GDB_EAR: env->ear =3D tmp; diff --git a/target/microblaze/helper.c b/target/microblaze/helper.c index b2373f6a23..9a95456401 100644 --- a/target/microblaze/helper.c +++ b/target/microblaze/helper.c @@ -112,12 +112,11 @@ void mb_cpu_do_interrupt(CPUState *cs) { MicroBlazeCPU *cpu =3D MICROBLAZE_CPU(cs); CPUMBState *env =3D &cpu->env; - uint32_t t; + uint32_t t, msr =3D mb_cpu_read_msr(env); =20 /* IMM flag cannot propagate across a branch and into the dslot. */ assert(!((env->iflags & D_FLAG) && (env->iflags & IMM_FLAG))); assert(!(env->iflags & (DRTI_FLAG | DRTE_FLAG | DRTB_FLAG))); -/* assert(env->msr & (MSR_EE)); Only for HW exceptions. */ env->res_addr =3D RES_ADDR_NONE; switch (cs->exception_index) { case EXCP_HW_EXCP: @@ -136,11 +135,12 @@ void mb_cpu_do_interrupt(CPUState *cs) } =20 /* Disable the MMU. */ - t =3D (env->msr & (MSR_VM | MSR_UM)) << 1; - env->msr &=3D ~(MSR_VMS | MSR_UMS | MSR_VM | MSR_UM); - env->msr |=3D t; + t =3D (msr & (MSR_VM | MSR_UM)) << 1; + msr &=3D ~(MSR_VMS | MSR_UMS | MSR_VM | MSR_UM); + msr |=3D t; /* Exception in progress. */ - env->msr |=3D MSR_EIP; + msr |=3D MSR_EIP; + mb_cpu_write_msr(env, msr); =20 qemu_log_mask(CPU_LOG_INT, "hw exception at pc=3D%x ear=3D%" PRIx64 " " @@ -178,11 +178,12 @@ void mb_cpu_do_interrupt(CPUState *cs) } =20 /* Disable the MMU. */ - t =3D (env->msr & (MSR_VM | MSR_UM)) << 1; - env->msr &=3D ~(MSR_VMS | MSR_UMS | MSR_VM | MSR_UM); - env->msr |=3D t; + t =3D (msr & (MSR_VM | MSR_UM)) << 1; + msr &=3D ~(MSR_VMS | MSR_UMS | MSR_VM | MSR_UM); + msr |=3D t; /* Exception in progress. */ - env->msr |=3D MSR_EIP; + msr |=3D MSR_EIP; + mb_cpu_write_msr(env, msr); =20 qemu_log_mask(CPU_LOG_INT, "exception at pc=3D%x ear=3D%" PRIx64 " iflags= =3D%x\n", @@ -193,11 +194,11 @@ void mb_cpu_do_interrupt(CPUState *cs) break; =20 case EXCP_IRQ: - assert(!(env->msr & (MSR_EIP | MSR_BIP))); - assert(env->msr & MSR_IE); + assert(!(msr & (MSR_EIP | MSR_BIP))); + assert(msr & MSR_IE); assert(!(env->iflags & D_FLAG)); =20 - t =3D (env->msr & (MSR_VM | MSR_UM)) << 1; + t =3D (msr & (MSR_VM | MSR_UM)) << 1; =20 #if 0 #include "disas/disas.h" @@ -212,21 +213,20 @@ void mb_cpu_do_interrupt(CPUState *cs) && (!strcmp("netif_rx", sym) || !strcmp("process_backlog", sym))) { =20 - qemu_log( - "interrupt at pc=3D%x msr=3D%x %x iflags=3D%x sym= =3D%s\n", - env->pc, env->msr, t, env->iflags, - sym); + qemu_log("interrupt at pc=3D%x msr=3D%x %x iflags=3D%x= sym=3D%s\n", + env->pc, msr, t, env->iflags, sym); =20 log_cpu_state(cs, 0); } } #endif qemu_log_mask(CPU_LOG_INT, - "interrupt at pc=3D%x msr=3D%x %x iflags=3D%x\n", - env->pc, env->msr, t, env->iflags); + "interrupt at pc=3D%x msr=3D%x %x iflags=3D%x\n", + env->pc, msr, t, env->iflags); =20 - env->msr &=3D ~(MSR_VMS | MSR_UMS | MSR_VM | MSR_UM | MSR_IE); - env->msr |=3D t; + msr &=3D ~(MSR_VMS | MSR_UMS | MSR_VM | MSR_UM | MSR_IE); + msr |=3D t; + mb_cpu_write_msr(env, msr); =20 env->regs[14] =3D env->pc; env->pc =3D cpu->cfg.base_vectors + 0x10; @@ -237,20 +237,22 @@ void mb_cpu_do_interrupt(CPUState *cs) case EXCP_HW_BREAK: assert(!(env->iflags & IMM_FLAG)); assert(!(env->iflags & D_FLAG)); - t =3D (env->msr & (MSR_VM | MSR_UM)) << 1; + t =3D (msr & (MSR_VM | MSR_UM)) << 1; qemu_log_mask(CPU_LOG_INT, "break at pc=3D%x msr=3D%x %x iflags=3D%x\n", - env->pc, env->msr, t, env->iflags); + env->pc, msr, t, env->iflags); log_cpu_state_mask(CPU_LOG_INT, cs, 0); - env->msr &=3D ~(MSR_VMS | MSR_UMS | MSR_VM | MSR_UM); - env->msr |=3D t; - env->msr |=3D MSR_BIP; + msr &=3D ~(MSR_VMS | MSR_UMS | MSR_VM | MSR_UM); + msr |=3D t; + msr |=3D MSR_BIP; if (cs->exception_index =3D=3D EXCP_HW_BREAK) { env->regs[16] =3D env->pc; - env->msr |=3D MSR_BIP; + msr |=3D MSR_BIP; env->pc =3D cpu->cfg.base_vectors + 0x18; - } else + } else { env->pc =3D env->btarget; + } + mb_cpu_write_msr(env, msr); break; default: cpu_abort(cs, "unhandled exception type=3D%d\n", diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index e709884f2d..0c9b4ffa5a 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -56,6 +56,7 @@ static TCGv_i32 cpu_R[32]; static TCGv_i32 cpu_pc; static TCGv_i32 cpu_msr; +static TCGv_i32 cpu_msr_c; static TCGv_i32 cpu_imm; static TCGv_i32 cpu_btaken; static TCGv_i32 cpu_btarget; @@ -150,30 +151,6 @@ static void gen_goto_tb(DisasContext *dc, int n, targe= t_ulong dest) } } =20 -static void read_carry(DisasContext *dc, TCGv_i32 d) -{ - tcg_gen_shri_i32(d, cpu_msr, 31); -} - -/* - * write_carry sets the carry bits in MSR based on bit 0 of v. - * v[31:1] are ignored. - */ -static void write_carry(DisasContext *dc, TCGv_i32 v) -{ - /* Deposit bit 0 into MSR_C and the alias MSR_CC. */ - tcg_gen_deposit_i32(cpu_msr, cpu_msr, v, 2, 1); - tcg_gen_deposit_i32(cpu_msr, cpu_msr, v, 31, 1); -} - -static void write_carryi(DisasContext *dc, bool carry) -{ - TCGv_i32 t0 =3D tcg_temp_new_i32(); - tcg_gen_movi_i32(t0, carry); - write_carry(dc, t0); - tcg_temp_free_i32(t0); -} - /* * Returns true if the insn an illegal operation. * If exceptions are enabled, an exception is raised. @@ -243,11 +220,7 @@ static void dec_add(DisasContext *dc) =20 if (c) { /* c - Add carry into the result. */ - cf =3D tcg_temp_new_i32(); - - read_carry(dc, cf); - tcg_gen_add_i32(cpu_R[dc->rd], cpu_R[dc->rd], cf); - tcg_temp_free_i32(cf); + tcg_gen_add_i32(cpu_R[dc->rd], cpu_R[dc->rd], cpu_msr_c); } } return; @@ -257,21 +230,15 @@ static void dec_add(DisasContext *dc) /* Extract carry. */ cf =3D tcg_temp_new_i32(); if (c) { - read_carry(dc, cf); + tcg_gen_mov_i32(cf, cpu_msr_c); } else { tcg_gen_movi_i32(cf, 0); } =20 + gen_helper_carry(cpu_msr_c, cpu_R[dc->ra], *(dec_alu_op_b(dc)), cf); if (dc->rd) { - TCGv_i32 ncf =3D tcg_temp_new_i32(); - gen_helper_carry(ncf, cpu_R[dc->ra], *(dec_alu_op_b(dc)), cf); tcg_gen_add_i32(cpu_R[dc->rd], cpu_R[dc->ra], *(dec_alu_op_b(dc))); tcg_gen_add_i32(cpu_R[dc->rd], cpu_R[dc->rd], cf); - write_carry(dc, ncf); - tcg_temp_free_i32(ncf); - } else { - gen_helper_carry(cf, cpu_R[dc->ra], *(dec_alu_op_b(dc)), cf); - write_carry(dc, cf); } tcg_temp_free_i32(cf); } @@ -309,11 +276,7 @@ static void dec_sub(DisasContext *dc) =20 if (c) { /* c - Add carry into the result. */ - cf =3D tcg_temp_new_i32(); - - read_carry(dc, cf); - tcg_gen_add_i32(cpu_R[dc->rd], cpu_R[dc->rd], cf); - tcg_temp_free_i32(cf); + tcg_gen_add_i32(cpu_R[dc->rd], cpu_R[dc->rd], cpu_msr_c); } } return; @@ -324,7 +287,7 @@ static void dec_sub(DisasContext *dc) cf =3D tcg_temp_new_i32(); na =3D tcg_temp_new_i32(); if (c) { - read_carry(dc, cf); + tcg_gen_mov_i32(cf, cpu_msr_c); } else { tcg_gen_movi_i32(cf, 1); } @@ -332,16 +295,10 @@ static void dec_sub(DisasContext *dc) /* d =3D b + ~a + c. carry defaults to 1. */ tcg_gen_not_i32(na, cpu_R[dc->ra]); =20 + gen_helper_carry(cpu_msr_c, na, *(dec_alu_op_b(dc)), cf); if (dc->rd) { - TCGv_i32 ncf =3D tcg_temp_new_i32(); - gen_helper_carry(ncf, na, *(dec_alu_op_b(dc)), cf); tcg_gen_add_i32(cpu_R[dc->rd], na, *(dec_alu_op_b(dc))); tcg_gen_add_i32(cpu_R[dc->rd], cpu_R[dc->rd], cf); - write_carry(dc, ncf); - tcg_temp_free_i32(ncf); - } else { - gen_helper_carry(cf, na, *(dec_alu_op_b(dc)), cf); - write_carry(dc, cf); } tcg_temp_free_i32(cf); tcg_temp_free_i32(na); @@ -429,16 +386,26 @@ static void dec_xor(DisasContext *dc) tcg_gen_xor_i32(cpu_R[dc->rd], cpu_R[dc->ra], *(dec_alu_op_b(dc))); } =20 -static inline void msr_read(DisasContext *dc, TCGv_i32 d) +static void msr_read(DisasContext *dc, TCGv_i32 d) { - tcg_gen_mov_i32(d, cpu_msr); + TCGv_i32 t; + + /* Replicate the cpu_msr_c boolean into the proper bit and the copy. */ + t =3D tcg_temp_new_i32(); + tcg_gen_muli_i32(t, cpu_msr_c, MSR_C | MSR_CC); + tcg_gen_or_i32(d, cpu_msr, t); + tcg_temp_free_i32(t); } =20 -static inline void msr_write(DisasContext *dc, TCGv_i32 v) +static void msr_write(DisasContext *dc, TCGv_i32 v) { dc->cpustate_changed =3D 1; - /* PVR bit is not writable, and is never set. */ - tcg_gen_andi_i32(cpu_msr, v, ~MSR_PVR); + + /* Install MSR_C. */ + tcg_gen_extract_i32(cpu_msr_c, v, 2, 1); + + /* Clear MSR_C and MSR_CC; MSR_PVR is not writable, and is always clea= r. */ + tcg_gen_andi_i32(cpu_msr, v, ~(MSR_C | MSR_CC | MSR_PVR)); } =20 static void dec_msr(DisasContext *dc) @@ -778,8 +745,8 @@ static void dec_bit(DisasContext *dc) t0 =3D tcg_temp_new_i32(); =20 LOG_DIS("src r%d r%d\n", dc->rd, dc->ra); - tcg_gen_andi_i32(t0, cpu_msr, MSR_CC); - write_carry(dc, cpu_R[dc->ra]); + tcg_gen_shli_i32(t0, cpu_msr_c, 31); + tcg_gen_andi_i32(cpu_msr_c, cpu_R[dc->ra], 1); if (dc->rd) { tcg_gen_shri_i32(cpu_R[dc->rd], cpu_R[dc->ra], 1); tcg_gen_or_i32(cpu_R[dc->rd], cpu_R[dc->rd], t0); @@ -792,8 +759,7 @@ static void dec_bit(DisasContext *dc) /* srl. */ LOG_DIS("srl r%d r%d\n", dc->rd, dc->ra); =20 - /* Update carry. Note that write carry only looks at the LSB. = */ - write_carry(dc, cpu_R[dc->ra]); + tcg_gen_andi_i32(cpu_msr_c, cpu_R[dc->ra], 1); if (dc->rd) { if (op =3D=3D 0x41) tcg_gen_shri_i32(cpu_R[dc->rd], cpu_R[dc->ra], 1); @@ -1042,7 +1008,7 @@ static void dec_load(DisasContext *dc) =20 if (ex) { /* lwx */ /* no support for AXI exclusive so always clear C */ - write_carryi(dc, 0); + tcg_gen_movi_i32(cpu_msr_c, 0); } =20 tcg_temp_free(addr); @@ -1093,7 +1059,7 @@ static void dec_store(DisasContext *dc) /* swx does not throw unaligned access errors, so force alignment = */ tcg_gen_andi_tl(addr, addr, ~3); =20 - write_carryi(dc, 1); + tcg_gen_movi_i32(cpu_msr_c, 1); swx_skip =3D gen_new_label(); tcg_gen_brcond_tl(TCG_COND_NE, cpu_res_addr, addr, swx_skip); =20 @@ -1108,7 +1074,7 @@ static void dec_store(DisasContext *dc) mop); =20 tcg_gen_brcond_i32(TCG_COND_NE, cpu_res_val, tval, swx_skip); - write_carryi(dc, 0); + tcg_gen_movi_i32(cpu_msr_c, 0); tcg_temp_free_i32(tval); } =20 @@ -1851,6 +1817,7 @@ void mb_tcg_init(void) =20 SP(pc), SP(msr), + SP(msr_c), SP(imm), SP(iflags), SP(btaken), --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890554; cv=none; d=zohomail.com; s=zohoarc; b=E8o6oGBJ+Y/st9Nq3Gz87dVsfCAkj3JOTphUqdZUk3BlZU2og5ir7CztteqopiT82e8MzybP9uhy45Mij6yxk7sjTeoDP7ur1EAKy9G/z+c5wmrHZqau/roWGBPcA379tENBpoC8F+E7DJN1VkkeXldZSbu7rX36f+Jrg59GTNg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890554; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=uIKhTONsxJcHP4WPV5M1NnbEZDfvPYoEbwvp1GTDwH0=; b=YK/tK3N36p89rlENxdSBAqBas3ZPlcNmvKqRZpm9t8l0ZTyPMKmAxA8emd1WW/4ctoei3CmU6RBMTSPHWj2EiOOZezCJzaMkt5glIkExPNDJx0D5oiD7gmNdXNuuu1s/kDOdnfQenpw/hDScwQYRihxrNTHce/pcHhYm4jxhf3c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890554076119.0476358676624; Mon, 31 Aug 2020 09:15:54 -0700 (PDT) Received: from localhost ([::1]:44416 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmTI-00071G-N2 for importer@patchew.org; Mon, 31 Aug 2020 12:15:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33932) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKS-0004Yf-89 for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:44 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]:40382) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKO-00060N-Hm for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:43 -0400 Received: by mail-pf1-x432.google.com with SMTP id c142so805536pfb.7 for ; Mon, 31 Aug 2020 09:06:40 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=uIKhTONsxJcHP4WPV5M1NnbEZDfvPYoEbwvp1GTDwH0=; b=UzXAKX5F9YVWp7VQ/tMXsH6+P2hNGccXa568aEytk+jOKR98GKzxAUU3xSv64u/hBo TYXuJcbVO6AmWwPEd8F9sa3QN2bOECLRh7MgemWiZrhbWjzL9TO97BVojY0eex3iW6Ve g4NL/BQ+aOce36GJipiw1QAsS1Ye5PvkMvXLbIEbegC7L/gVLzKHjLO1Yw5kAH+MSpGQ /GNOEDCuhrVezcjbR30lSYgfM3FOpQ06UJOgpGeqh6Zx0i1LKRMQYMACEkRJqY6COIjs hdsj6saRKHMY3ghlvfmYbyL1vnYSya8kBP+FUd67x1YQdYbFglsTuIcbmlPXfZA5qAro nc0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=uIKhTONsxJcHP4WPV5M1NnbEZDfvPYoEbwvp1GTDwH0=; b=hU3k3l0eo/XsBPlDA7lSb193381HCJYJGDpGu62qZl8+ltyWLDgVQoDQhB5crK0Igt ABhXrcFS7pjGzvQHnm6/4rsgbz8CUkcqQacstoW2p7Kv+N5+otQUAPn/mLI1ORiEFP6B Fgm7V8/bEdjKFkyfTs/lKIxXOQNNI5uxv/P4/ys7macGAYbQtzMlmsU4I1Wg0k98LeC0 q0MuQ2SbI6d3KkKVmwvGqRFwiJbsTPD1/V6G72PTKg5MYnHKR4xkYHuMgCr0L8HDyjQD noiSoaJhpBCKfBlAvmoSPGkyOBrqCI6n8RVE7d6cDRhImgKngyNvrKC2ZJhyHq5r8c9K 6xsA== X-Gm-Message-State: AOAM532NmKTyILsBASpj0DaBQ4kxBigGrlN2soJgXXqOKAcALf0oGnl5 ikQDNTXLm/vsS3Nu8FCqqEtjiJ9zCrCPmA== X-Google-Smtp-Source: ABdhPJz3IoY5XMoh3olPx05xYnTHj2YaPGREHs+S1z6p6hHnckcuddD+g2CryCMyNdUuTZyKRyFvww== X-Received: by 2002:a63:1b65:: with SMTP id b37mr1815154pgm.453.1598889998794; Mon, 31 Aug 2020 09:06:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 26/76] target/microblaze: Use DISAS_NORETURN Date: Mon, 31 Aug 2020 09:05:11 -0700 Message-Id: <20200831160601.833692-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Both exceptions and gen_goto_tb do not return. Use the official DISAS_NORETURN enumerator for this case. This eliminates all use of DISAS_TB_JUMP. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/translate.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 0c9b4ffa5a..53ca0bfb38 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -51,7 +51,6 @@ /* is_jmp field values */ #define DISAS_JUMP DISAS_TARGET_0 /* only pc was modified dynamically */ #define DISAS_UPDATE DISAS_TARGET_1 /* cpu state was modified dynamically= */ -#define DISAS_TB_JUMP DISAS_TARGET_2 /* only pc was modified statically */ =20 static TCGv_i32 cpu_R[32]; static TCGv_i32 cpu_pc; @@ -111,7 +110,7 @@ static void gen_raise_exception(DisasContext *dc, uint3= 2_t index) =20 gen_helper_raise_exception(cpu_env, tmp); tcg_temp_free_i32(tmp); - dc->is_jmp =3D DISAS_UPDATE; + dc->is_jmp =3D DISAS_NORETURN; } =20 static void gen_raise_exception_sync(DisasContext *dc, uint32_t index) @@ -149,6 +148,7 @@ static void gen_goto_tb(DisasContext *dc, int n, target= _ulong dest) tcg_gen_movi_i32(cpu_pc, dest); tcg_gen_exit_tb(NULL, 0); } + dc->is_jmp =3D DISAS_NORETURN; } =20 /* @@ -1675,7 +1675,6 @@ void gen_intermediate_code(CPUState *cs, TranslationB= lock *tb, int max_insns) } else if (dc->jmp =3D=3D JMP_DIRECT) { t_sync_flags(dc); gen_goto_tb(dc, 0, dc->jmp_pc); - dc->is_jmp =3D DISAS_TB_JUMP; } else if (dc->jmp =3D=3D JMP_DIRECT_CC) { TCGLabel *l1 =3D gen_new_label(); t_sync_flags(dc); @@ -1684,8 +1683,6 @@ void gen_intermediate_code(CPUState *cs, TranslationB= lock *tb, int max_insns) gen_goto_tb(dc, 1, dc->pc); gen_set_label(l1); gen_goto_tb(dc, 0, dc->jmp_pc); - - dc->is_jmp =3D DISAS_TB_JUMP; } break; } @@ -1717,7 +1714,9 @@ void gen_intermediate_code(CPUState *cs, TranslationB= lock *tb, int max_insns) } t_sync_flags(dc); =20 - if (unlikely(cs->singlestep_enabled)) { + if (dc->is_jmp =3D=3D DISAS_NORETURN) { + /* nothing more to generate */ + } else if (unlikely(cs->singlestep_enabled)) { TCGv_i32 tmp =3D tcg_const_i32(EXCP_DEBUG); =20 if (dc->is_jmp !=3D DISAS_JUMP) { @@ -1730,16 +1729,14 @@ void gen_intermediate_code(CPUState *cs, Translatio= nBlock *tb, int max_insns) case DISAS_NEXT: gen_goto_tb(dc, 1, npc); break; - default: case DISAS_JUMP: case DISAS_UPDATE: /* indicate that the hash table must be used to find the next TB */ tcg_gen_exit_tb(NULL, 0); break; - case DISAS_TB_JUMP: - /* nothing more to generate */ - break; + default: + g_assert_not_reached(); } } gen_tb_end(tb, num_insns); --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890829; cv=none; d=zohomail.com; s=zohoarc; b=JGk06DyuUiWFPk9mCKc07UX0/OlB1P5A2dn4Tg10m8IkhDZAafQWLdL++pcrBUEV5/eg8Ofnjn4QgdWx69wT8msUCaO9C3kWAW4jlP+XoZRUiUL29hJ6uREjsA3V/6Z/+yiArrhkUxd4ufZ7Gw3bmKMzKPOiz/lfEzOdoC4hTcM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890829; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=eBuYjOca47LEZmSV1uuh9RJRYYiGMfYcTJpeBHPz1GU=; b=BbQanvDlZa+2lrLZ/8H/8ApRXfyKipxbGFgqo5Krd8fiM2fSuwP3BcrKqLSjDXux23JwPfTt0MuWLPa2po15oorHTR8lHitat7Q0+s1whK09FFji3z24O1nCk7gDxE5aokRYsfVLGLaTqTQZxXWACU3Feg/ozh8kk25O2ybR/MA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 159889082921638.90195902330447; Mon, 31 Aug 2020 09:20:29 -0700 (PDT) Received: from localhost ([::1]:36670 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmXk-0006ll-AX for importer@patchew.org; Mon, 31 Aug 2020 12:20:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33988) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKV-0004bH-7A for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:47 -0400 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]:37657) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKQ-00060S-Fs for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:46 -0400 Received: by mail-pg1-x52f.google.com with SMTP id 5so838634pgl.4 for ; Mon, 31 Aug 2020 09:06:41 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=eBuYjOca47LEZmSV1uuh9RJRYYiGMfYcTJpeBHPz1GU=; b=zkkg6TU0P3yF09nRqOhGKhvfKddqJKa1Mq36VYO9CDKF159O66olqiy1+Chd1Y0vBY lF9wlTxknYTJK6xcgNOAB4e8LsZpLqsJXWq8F8rES90kNsKTfUsUncEt231kdwA86ckR 4GG4/e7F3U8PCIhEP9OJyg0TcIMV1cM70AgFs4vqAXcn33RpYFzV13WgNtWT0xbPgBb4 Uw2owhQ+waBVb7YobxDhjDYuwtVmGKH2Sm1VavhgJVdoLIpJj5O/2Fa0pqwVOotWd4oW QRu9id3N0jGYU5Ae8/VpAqdIEpbSx5GhB3QTb6uMKSo4M1OfT+S5fv7Rd/+YT3871igz VxIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=eBuYjOca47LEZmSV1uuh9RJRYYiGMfYcTJpeBHPz1GU=; b=ZNXb7MaGupsrVLmQMUi6cl+MfWxU/cMUwM6BJNPWex73TTsVSQDKLZzBykQKhiU+x3 rW3Qn6pttttWtoTAb4hgLEzS/1uCWk3X+vMjJpx7YKkbiCPxcPyAElt9y4EI8XGmWWXi BITxl114wvBEL/av00aJe/gvMmJbzmMSKf6KQDcEgxNt1PoKe04jDZisl+t3lQwV6EV9 /7pqdKGN2kgs9HGFqx82eadgsHq/KCbtJ5nxo9FrYY7+s/OmdS5RLE/Pa8NVmwkwj91B 0G4RvbSgyc3I0VYIihp4EWPpzrvf+y8JwN8Jq7UCR/XLuomgRKPO7aW1/2luX1fpboR+ 7KFA== X-Gm-Message-State: AOAM530+K7cBarUSdCUEabzKlAj2Uz4hQmE5LBMz4CL7kGQM8KNlXyxN 3PGEnbIwLwZb0jt6XUWLF6rYRAvBuL9WtQ== X-Google-Smtp-Source: ABdhPJxpp8RfSgMH39rdDZjhYdPl5qMCXUQ6sHJdLvUwKnzuJE8AfUveuQatqj8olVxxbTkw3YNMDw== X-Received: by 2002:a65:4183:: with SMTP id a3mr1697519pgq.448.1598890000252; Mon, 31 Aug 2020 09:06:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 27/76] target/microblaze: Check singlestep_enabled in gen_goto_tb Date: Mon, 31 Aug 2020 09:05:12 -0700 Message-Id: <20200831160601.833692-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52f; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52f.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Do not use goto_tb if we're single-stepping. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/translate.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 53ca0bfb38..2e753fa621 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -140,7 +140,12 @@ static inline bool use_goto_tb(DisasContext *dc, targe= t_ulong dest) =20 static void gen_goto_tb(DisasContext *dc, int n, target_ulong dest) { - if (use_goto_tb(dc, dest)) { + if (dc->singlestep_enabled) { + TCGv_i32 tmp =3D tcg_const_i32(EXCP_DEBUG); + tcg_gen_movi_i32(cpu_pc, dest); + gen_helper_raise_exception(cpu_env, tmp); + tcg_temp_free_i32(tmp); + } else if (use_goto_tb(dc, dest)) { tcg_gen_goto_tb(n); tcg_gen_movi_i32(cpu_pc, dest); tcg_gen_exit_tb(dc->tb, n); --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890695; cv=none; d=zohomail.com; s=zohoarc; b=FaB656sxwCJ2+dAM2Hq272CMXH+ToBQEB7R8GRV8Svpx6Y//+3+69FWCMs2BtbZTxu5/KcVV4qVDZG/eBE6UimCvxTpG9l4+D9xPCfK4dsIf7diM2ECdKPUsCtK+q2CXmtWMd4rGzPXNQ2e1fHpGGF4n0okXdla+uEQD7vdGZDc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890695; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=TUaCG/37x9/qPmniyRnuUw2LNh2fo7hqPxFHr142yyg=; b=UIXPGbG+cr8N+ZL6dhH9aMi7Fp7dl438T4vPmdoN1+5gOtxLvXJ/t0fREb/PIimMhJrd23KXWQNeqqh3cAyvtuU/L70Seas22BqW4MufpBWRLQ0at8k6tGnJR5V1eaDXlYsb5R6Map680qIOzpdeG5PVnpSGLY6Y/pAN7W0cMMo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890695470391.9409785532057; Mon, 31 Aug 2020 09:18:15 -0700 (PDT) Received: from localhost ([::1]:52778 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmVa-0001wg-HQ for importer@patchew.org; Mon, 31 Aug 2020 12:18:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33982) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKU-0004ah-VS for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:47 -0400 Received: from mail-pg1-x534.google.com ([2607:f8b0:4864:20::534]:39599) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKR-00060i-U7 for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:46 -0400 Received: by mail-pg1-x534.google.com with SMTP id v15so833195pgh.6 for ; Mon, 31 Aug 2020 09:06:43 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=TUaCG/37x9/qPmniyRnuUw2LNh2fo7hqPxFHr142yyg=; b=jf4eNezLR2DiDWpS80739r2zQXBaCs/nBsgpKPOAUQZE6EFWzJpcdhjPZzFOM05mDa 9OCsbtlqPZCtvcd6mmsAIPWJhHRMMYGarwvgq2vc59rXNmgVptChONmzjyCrFqtupvQv D/DLkm32jyD+nTR5LGbBoS5qvzWZOuEF0Lv2UIwACncq2e9tr3DQ6+joU5VLmYoGmaUa caKuqJI/JCCuwqC9p8W1gFMG72Xg0kMtOLpBoaz3hCK/9d2IL2sEcHgwj1fXc2L+aVLa X3A9txL+gCZnpchAHKKXhb2fae2kHWfEwASAD09MwEAszv8VcC6iCrQkD9f14wJsjYLB cR/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=TUaCG/37x9/qPmniyRnuUw2LNh2fo7hqPxFHr142yyg=; b=DS5yhX04M8zXSB9f1HhxYFI+Ci3QGWv+Xl9fc0juwOS4+Hf5sT+UEipNm70xr5CCRx bKbDMfeeRllAzsipk3PSjFa3SJ7DRBEs2GZHcIHgNDvKfyG2uGbbeNYNakw+yCH1VdB0 +agSNmk7I7K9WMn+u9x3MmWJM//fSkGWCzqKvfr8SedWjndh8FnE3L5kQJWZD07Pn+5s 5z207I6ASXbTWG9rlMVSNna7OxqMHvlLOrpJYymtTGaSFGz469ITQJj9uDpZLC7KNfnO CTQnMmKPwUkligZZI7GN3kRmP8p6aBipFYT4fDN+PCuZdcmkfaouXr6eoOBheYEl0nDl eqmA== X-Gm-Message-State: AOAM531t+BKjFx7DvtCI+SiRkJyzmbU7wLq6Y9DJ6w11mW+rUdcb47Q0 cfDcZt/3ZDQfibZiqpXQXYtrd8aYNJjEJQ== X-Google-Smtp-Source: ABdhPJzTg1FJBzSnq+9s/R7/HPr1vo11KHbVpXvUmOWtmLPmUXXJDq/fmq5fXZ0QC2f9nqZzTEgO5w== X-Received: by 2002:a63:5d66:: with SMTP id o38mr1723172pgm.366.1598890001602; Mon, 31 Aug 2020 09:06:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 28/76] target/microblaze: Convert to DisasContextBase Date: Mon, 31 Aug 2020 09:05:13 -0700 Message-Id: <20200831160601.833692-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::534; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x534.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Part one of conversion to the generic translator_loop is to use the DisasContextBase and the members therein. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/translate.c | 102 +++++++++++++++++----------------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 2e753fa621..45b1555f85 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -67,8 +67,8 @@ static TCGv_i32 cpu_res_val; =20 /* This is the state at translation time. */ typedef struct DisasContext { + DisasContextBase base; MicroBlazeCPU *cpu; - uint32_t pc; =20 /* Decoder. */ int type_b; @@ -81,7 +81,6 @@ typedef struct DisasContext { unsigned int delayed_branch; unsigned int tb_flags, synced_flags; /* tb dependent flags. */ unsigned int clear_imm; - int is_jmp; =20 #define JMP_NOJMP 0 #define JMP_DIRECT 1 @@ -91,8 +90,6 @@ typedef struct DisasContext { uint32_t jmp_pc; =20 int abort_at_next_insn; - struct TranslationBlock *tb; - int singlestep_enabled; } DisasContext; =20 static inline void t_sync_flags(DisasContext *dc) @@ -110,13 +107,13 @@ static void gen_raise_exception(DisasContext *dc, uin= t32_t index) =20 gen_helper_raise_exception(cpu_env, tmp); tcg_temp_free_i32(tmp); - dc->is_jmp =3D DISAS_NORETURN; + dc->base.is_jmp =3D DISAS_NORETURN; } =20 static void gen_raise_exception_sync(DisasContext *dc, uint32_t index) { t_sync_flags(dc); - tcg_gen_movi_i32(cpu_pc, dc->pc); + tcg_gen_movi_i32(cpu_pc, dc->base.pc_next); gen_raise_exception(dc, index); } =20 @@ -132,7 +129,7 @@ static void gen_raise_hw_excp(DisasContext *dc, uint32_= t esr_ec) static inline bool use_goto_tb(DisasContext *dc, target_ulong dest) { #ifndef CONFIG_USER_ONLY - return (dc->tb->pc & TARGET_PAGE_MASK) =3D=3D (dest & TARGET_PAGE_MASK= ); + return (dc->base.pc_first & TARGET_PAGE_MASK) =3D=3D (dest & TARGET_PA= GE_MASK); #else return true; #endif @@ -140,7 +137,7 @@ static inline bool use_goto_tb(DisasContext *dc, target= _ulong dest) =20 static void gen_goto_tb(DisasContext *dc, int n, target_ulong dest) { - if (dc->singlestep_enabled) { + if (dc->base.singlestep_enabled) { TCGv_i32 tmp =3D tcg_const_i32(EXCP_DEBUG); tcg_gen_movi_i32(cpu_pc, dest); gen_helper_raise_exception(cpu_env, tmp); @@ -148,12 +145,12 @@ static void gen_goto_tb(DisasContext *dc, int n, targ= et_ulong dest) } else if (use_goto_tb(dc, dest)) { tcg_gen_goto_tb(n); tcg_gen_movi_i32(cpu_pc, dest); - tcg_gen_exit_tb(dc->tb, n); + tcg_gen_exit_tb(dc->base.tb, n); } else { tcg_gen_movi_i32(cpu_pc, dest); tcg_gen_exit_tb(NULL, 0); } - dc->is_jmp =3D DISAS_NORETURN; + dc->base.is_jmp =3D DISAS_NORETURN; } =20 /* @@ -468,8 +465,8 @@ static void dec_msr(DisasContext *dc) msr_write(dc, t0); tcg_temp_free_i32(t0); tcg_temp_free_i32(t1); - tcg_gen_movi_i32(cpu_pc, dc->pc + 4); - dc->is_jmp =3D DISAS_UPDATE; + tcg_gen_movi_i32(cpu_pc, dc->base.pc_next + 4); + dc->base.is_jmp =3D DISAS_UPDATE; return; } =20 @@ -546,7 +543,7 @@ static void dec_msr(DisasContext *dc) =20 switch (sr) { case SR_PC: - tcg_gen_movi_i32(cpu_R[dc->rd], dc->pc); + tcg_gen_movi_i32(cpu_R[dc->rd], dc->base.pc_next); break; case SR_MSR: msr_read(dc, cpu_R[dc->rd]); @@ -813,7 +810,7 @@ static void dec_bit(DisasContext *dc) break; default: cpu_abort(cs, "unknown bit oc=3D%x op=3D%x rd=3D%d ra=3D%d rb= =3D%d\n", - dc->pc, op, dc->rd, dc->ra, dc->rb); + (uint32_t)dc->base.pc_next, op, dc->rd, dc->ra, dc->= rb); break; } } @@ -994,7 +991,7 @@ static void dec_load(DisasContext *dc) TCGv_i32 treg =3D tcg_const_i32(dc->rd); TCGv_i32 tsize =3D tcg_const_i32(size - 1); =20 - tcg_gen_movi_i32(cpu_pc, dc->pc); + tcg_gen_movi_i32(cpu_pc, dc->base.pc_next); gen_helper_memalign(cpu_env, addr, treg, t0, tsize); =20 tcg_temp_free_i32(t0); @@ -1114,7 +1111,7 @@ static void dec_store(DisasContext *dc) TCGv_i32 treg =3D tcg_const_i32(dc->rd); TCGv_i32 tsize =3D tcg_const_i32(size - 1); =20 - tcg_gen_movi_i32(cpu_pc, dc->pc); + tcg_gen_movi_i32(cpu_pc, dc->base.pc_next); /* FIXME: if the alignment is wrong, we should restore the value * in memory. One possible way to achieve this is to probe * the MMU prior to the memaccess, thay way we could put @@ -1201,12 +1198,12 @@ static void dec_bcc(DisasContext *dc) if (dec_alu_op_b_is_small_imm(dc)) { int32_t offset =3D (int32_t)((int16_t)dc->imm); /* sign-extend. */ =20 - tcg_gen_movi_i32(cpu_btarget, dc->pc + offset); + tcg_gen_movi_i32(cpu_btarget, dc->base.pc_next + offset); dc->jmp =3D JMP_DIRECT_CC; - dc->jmp_pc =3D dc->pc + offset; + dc->jmp_pc =3D dc->base.pc_next + offset; } else { dc->jmp =3D JMP_INDIRECT; - tcg_gen_addi_i32(cpu_btarget, *dec_alu_op_b(dc), dc->pc); + tcg_gen_addi_i32(cpu_btarget, *dec_alu_op_b(dc), dc->base.pc_next); } eval_cc(dc, cc, cpu_btaken, cpu_R[dc->ra]); } @@ -1250,7 +1247,7 @@ static void dec_br(DisasContext *dc) +offsetof(CPUState, halted)); tcg_temp_free_i32(tmp_1); =20 - tcg_gen_movi_i32(cpu_pc, dc->pc + 4); + tcg_gen_movi_i32(cpu_pc, dc->base.pc_next + 4); =20 gen_raise_exception(dc, EXCP_HLT); return; @@ -1270,7 +1267,7 @@ static void dec_br(DisasContext *dc) dec_setup_dslot(dc); } if (link && dc->rd) - tcg_gen_movi_i32(cpu_R[dc->rd], dc->pc); + tcg_gen_movi_i32(cpu_R[dc->rd], dc->base.pc_next); =20 dc->jmp =3D JMP_INDIRECT; if (abs) { @@ -1291,10 +1288,10 @@ static void dec_br(DisasContext *dc) } else { if (dec_alu_op_b_is_small_imm(dc)) { dc->jmp =3D JMP_DIRECT; - dc->jmp_pc =3D dc->pc + (int32_t)((int16_t)dc->imm); + dc->jmp_pc =3D dc->base.pc_next + (int32_t)((int16_t)dc->imm); } else { tcg_gen_movi_i32(cpu_btaken, 1); - tcg_gen_addi_i32(cpu_btarget, *dec_alu_op_b(dc), dc->pc); + tcg_gen_addi_i32(cpu_btarget, *dec_alu_op_b(dc), dc->base.pc_n= ext); } } } @@ -1459,7 +1456,8 @@ static void dec_fpu(DisasContext *dc) qemu_log_mask(LOG_UNIMP, "unimplemented fcmp fpu_insn=3D%x pc=3D%= x" " opc=3D%x\n", - fpu_insn, dc->pc, dc->opcode); + fpu_insn, (uint32_t)dc->base.pc_next, + dc->opcode); dc->abort_at_next_insn =3D 1; break; } @@ -1489,7 +1487,7 @@ static void dec_fpu(DisasContext *dc) default: qemu_log_mask(LOG_UNIMP, "unimplemented FPU insn fpu_insn=3D%x= pc=3D%x" " opc=3D%x\n", - fpu_insn, dc->pc, dc->opcode); + fpu_insn, (uint32_t)dc->base.pc_next, dc->opcode= ); dc->abort_at_next_insn =3D 1; break; } @@ -1500,7 +1498,8 @@ static void dec_null(DisasContext *dc) if (trap_illegal(dc, true)) { return; } - qemu_log_mask(LOG_GUEST_ERROR, "unknown insn pc=3D%x opc=3D%x\n", dc->= pc, dc->opcode); + qemu_log_mask(LOG_GUEST_ERROR, "unknown insn pc=3D%x opc=3D%x\n", + (uint32_t)dc->base.pc_next, dc->opcode); dc->abort_at_next_insn =3D 1; } =20 @@ -1610,19 +1609,20 @@ void gen_intermediate_code(CPUState *cs, Translatio= nBlock *tb, int max_insns) =20 pc_start =3D tb->pc; dc->cpu =3D cpu; - dc->tb =3D tb; org_flags =3D dc->synced_flags =3D dc->tb_flags =3D tb->flags; =20 - dc->is_jmp =3D DISAS_NEXT; dc->jmp =3D 0; dc->delayed_branch =3D !!(dc->tb_flags & D_FLAG); if (dc->delayed_branch) { dc->jmp =3D JMP_INDIRECT; } - dc->pc =3D pc_start; - dc->singlestep_enabled =3D cs->singlestep_enabled; + dc->base.pc_first =3D pc_start; + dc->base.pc_next =3D pc_start; + dc->base.singlestep_enabled =3D cs->singlestep_enabled; dc->cpustate_changed =3D 0; dc->abort_at_next_insn =3D 0; + dc->base.is_jmp =3D DISAS_NEXT; + dc->base.tb =3D tb; =20 if (pc_start & 3) { cpu_abort(cs, "Microblaze: unaligned PC=3D%x\n", pc_start); @@ -1634,31 +1634,31 @@ void gen_intermediate_code(CPUState *cs, Translatio= nBlock *tb, int max_insns) gen_tb_start(tb); do { - tcg_gen_insn_start(dc->pc); + tcg_gen_insn_start(dc->base.pc_next); num_insns++; =20 - if (unlikely(cpu_breakpoint_test(cs, dc->pc, BP_ANY))) { + if (unlikely(cpu_breakpoint_test(cs, dc->base.pc_next, BP_ANY))) { gen_raise_exception_sync(dc, EXCP_DEBUG); /* The address covered by the breakpoint must be included in [tb->pc, tb->pc + tb->size) in order to for it to be properly cleared -- thus we increment the PC here so that the logic setting tb->size below does the right thing. */ - dc->pc +=3D 4; + dc->base.pc_next +=3D 4; break; } =20 /* Pretty disas. */ - LOG_DIS("%8.8x:\t", dc->pc); + LOG_DIS("%8.8x:\t", (uint32_t)dc->base.pc_next); =20 if (num_insns =3D=3D max_insns && (tb_cflags(tb) & CF_LAST_IO)) { gen_io_start(); } =20 dc->clear_imm =3D 1; - decode(dc, cpu_ldl_code(env, dc->pc)); + decode(dc, cpu_ldl_code(env, dc->base.pc_next)); if (dc->clear_imm) dc->tb_flags &=3D ~IMM_FLAG; - dc->pc +=3D 4; + dc->base.pc_next +=3D 4; =20 if (dc->delayed_branch) { dc->delayed_branch--; @@ -1673,10 +1673,10 @@ void gen_intermediate_code(CPUState *cs, Translatio= nBlock *tb, int max_insns) dc->tb_flags &=3D ~D_FLAG; /* If it is a direct jump, try direct chaining. */ if (dc->jmp =3D=3D JMP_INDIRECT) { - TCGv_i32 tmp_pc =3D tcg_const_i32(dc->pc); + TCGv_i32 tmp_pc =3D tcg_const_i32(dc->base.pc_next); eval_cond_jmp(dc, cpu_btarget, tmp_pc); tcg_temp_free_i32(tmp_pc); - dc->is_jmp =3D DISAS_JUMP; + dc->base.is_jmp =3D DISAS_JUMP; } else if (dc->jmp =3D=3D JMP_DIRECT) { t_sync_flags(dc); gen_goto_tb(dc, 0, dc->jmp_pc); @@ -1685,26 +1685,26 @@ void gen_intermediate_code(CPUState *cs, Translatio= nBlock *tb, int max_insns) t_sync_flags(dc); /* Conditional jmp. */ tcg_gen_brcondi_i32(TCG_COND_NE, cpu_btaken, 0, l1); - gen_goto_tb(dc, 1, dc->pc); + gen_goto_tb(dc, 1, dc->base.pc_next); gen_set_label(l1); gen_goto_tb(dc, 0, dc->jmp_pc); } break; } } - if (cs->singlestep_enabled) { + if (dc->base.singlestep_enabled) { break; } - } while (!dc->is_jmp && !dc->cpustate_changed + } while (!dc->base.is_jmp && !dc->cpustate_changed && !tcg_op_buf_full() && !singlestep - && (dc->pc - page_start < TARGET_PAGE_SIZE) + && (dc->base.pc_next - page_start < TARGET_PAGE_SIZE) && num_insns < max_insns); =20 - npc =3D dc->pc; + npc =3D dc->base.pc_next; if (dc->jmp =3D=3D JMP_DIRECT || dc->jmp =3D=3D JMP_DIRECT_CC) { if (dc->tb_flags & D_FLAG) { - dc->is_jmp =3D DISAS_UPDATE; + dc->base.is_jmp =3D DISAS_UPDATE; tcg_gen_movi_i32(cpu_pc, npc); sync_jmpstate(dc); } else @@ -1712,25 +1712,25 @@ void gen_intermediate_code(CPUState *cs, Translatio= nBlock *tb, int max_insns) } =20 /* Force an update if the per-tb cpu state has changed. */ - if (dc->is_jmp =3D=3D DISAS_NEXT + if (dc->base.is_jmp =3D=3D DISAS_NEXT && (dc->cpustate_changed || org_flags !=3D dc->tb_flags)) { - dc->is_jmp =3D DISAS_UPDATE; + dc->base.is_jmp =3D DISAS_UPDATE; tcg_gen_movi_i32(cpu_pc, npc); } t_sync_flags(dc); =20 - if (dc->is_jmp =3D=3D DISAS_NORETURN) { + if (dc->base.is_jmp =3D=3D DISAS_NORETURN) { /* nothing more to generate */ } else if (unlikely(cs->singlestep_enabled)) { TCGv_i32 tmp =3D tcg_const_i32(EXCP_DEBUG); =20 - if (dc->is_jmp !=3D DISAS_JUMP) { + if (dc->base.is_jmp !=3D DISAS_JUMP) { tcg_gen_movi_i32(cpu_pc, npc); } gen_helper_raise_exception(cpu_env, tmp); tcg_temp_free_i32(tmp); } else { - switch(dc->is_jmp) { + switch (dc->base.is_jmp) { case DISAS_NEXT: gen_goto_tb(dc, 1, npc); break; @@ -1746,7 +1746,7 @@ void gen_intermediate_code(CPUState *cs, TranslationB= lock *tb, int max_insns) } gen_tb_end(tb, num_insns); =20 - tb->size =3D dc->pc - pc_start; + tb->size =3D dc->base.pc_next - pc_start; tb->icount =3D num_insns; =20 #ifdef DEBUG_DISAS @@ -1755,7 +1755,7 @@ void gen_intermediate_code(CPUState *cs, TranslationB= lock *tb, int max_insns) && qemu_log_in_addr_range(pc_start)) { FILE *logfile =3D qemu_log_lock(); qemu_log("--------------\n"); - log_target_disas(cs, pc_start, dc->pc - pc_start); + log_target_disas(cs, pc_start, dc->base.pc_next - pc_start); qemu_log_unlock(logfile); } #endif --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890828; cv=none; d=zohomail.com; s=zohoarc; b=ntjk+pFnR+HnG2xMB+yFvVzLo9GJACr3j0UORyU1ujtPjvVMG3XI7jT+PUohkPHbseCWyt1MaL0jwtqBmEhZAsJPCQ+kwGiWdRt+g4qfpJBXVOOLmt+D4FzhLvagGqY1l0xKZyXwXllgKcFUFfvwQPJD+BPNeSXfR2foYfuj0TQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890828; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=h8ixAKf5iBBm6uV3Q0Hu5wc/Ce959qgsl6yMfOofqSw=; b=YFAMPRvaaUv4s0aKHnYYGuFoTsjHW2sCJwzdAXLzIYporvvjMHG6lRAnFh71DLwZiHdEUFndObTYeTkIcQmb2t5SuosADMqGCShmRI9PA+6Po54aEC1x1cXmknYjZwRAdpMBfmg1N4PpWO6Hwj+rmJcgDkY2fW6sKuFYt88zogQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890828095776.5504456163071; Mon, 31 Aug 2020 09:20:28 -0700 (PDT) Received: from localhost ([::1]:36576 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmXj-0006jV-3b for importer@patchew.org; Mon, 31 Aug 2020 12:20:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34022) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKW-0004fT-TU for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:48 -0400 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]:54423) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKS-00060r-Sh for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:48 -0400 Received: by mail-pj1-x102e.google.com with SMTP id mm21so22826pjb.4 for ; Mon, 31 Aug 2020 09:06:44 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=h8ixAKf5iBBm6uV3Q0Hu5wc/Ce959qgsl6yMfOofqSw=; b=jMOVuMS4/GlAgCquzd5DzaEEW+fElE5ujf7k58+e/DWxuzTN3RMcFg62fkZi5n57lR 9L5eA5axFf1Lgu5i9qOiXRe9z1BY9QETHl/xn3FRcFrRJW5Y7BgCRmF/Fy1lhruh0sKk bUyV9faKxqva58Kk8Q3Y20tcqoPQoGA1+iViwf4kmol0zcVDvofBnzIBN3nmMM2CTqQH 5GOrEi+bTpDGRG8JIZaJvX17Etbu7s1gP+vFHeBdaPpxzZtOs9JjxdFcVZdt5zJ94YGi +QpatJuF1B1y+fBhguwRSHY5czAtSPWTX6jJ4QpGadvP06ceG2JbK5U+SHWAQfvnfLwr n/Jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=h8ixAKf5iBBm6uV3Q0Hu5wc/Ce959qgsl6yMfOofqSw=; b=VX3Yu1uq6e33SEtvy9XsVkjx6WlyXZaFKB3a3Siv+GdjKNs0fsthAGo68i5mwvuV8N cAPN/YIadQ9nqHBizhLn/L2oiXjc5+25TntCo4NWMu42fg+W/LYFyv8rpdLuRlr2z5WO yQN9JWjhOTC+3SNWGeZjBzaga7QPqH9q/Wf9UpCjb+qz34cAS58IqfvnKYjV815vGNXe rYPgFXzKbyFApNFxeM4voDWzpMWvBeYrVYhgPNKGMKtTFIiWShfDRSh97T4yICpVa3t/ B30beCrMeplxzTDKTKNyiJmgiT+YHJvNWmicbbehX7LLF17lW3V91tKMkwtUTxrDcLFF swPg== X-Gm-Message-State: AOAM531qWLxj24iHx6zxloBvoYLjJuuJSIXnQ1dQ8Lw6tDx0C7zIuOoG ON3vJVDCIoZsne0LT9CQDZT0AuKL2Gdvjg== X-Google-Smtp-Source: ABdhPJyxAL03Xu3S1di4j0rCYvTRN+ApGDT6n/ryN6AZTkewtUkh43Uc93OnbUktV/2Bzy5Eu+93hA== X-Received: by 2002:a17:902:d201:: with SMTP id t1mr1591129ply.174.1598890002986; Mon, 31 Aug 2020 09:06:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 29/76] target/microblaze: Convert to translator_loop Date: Mon, 31 Aug 2020 09:05:14 -0700 Message-Id: <20200831160601.833692-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102e; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102e.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Finish the conversion to the generic translator_loop. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/translate.c | 289 ++++++++++++++++++---------------- 1 file changed, 149 insertions(+), 140 deletions(-) diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 45b1555f85..6a9710d76d 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -1595,172 +1595,181 @@ static inline void decode(DisasContext *dc, uint3= 2_t ir) } } =20 -/* generate intermediate code for basic block 'tb'. */ -void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int max_ins= ns) +static void mb_tr_init_disas_context(DisasContextBase *dcb, CPUState *cs) { - CPUMBState *env =3D cs->env_ptr; - MicroBlazeCPU *cpu =3D env_archcpu(env); - uint32_t pc_start; - struct DisasContext ctx; - struct DisasContext *dc =3D &ctx; - uint32_t page_start, org_flags; - uint32_t npc; - int num_insns; + DisasContext *dc =3D container_of(dcb, DisasContext, base); + MicroBlazeCPU *cpu =3D MICROBLAZE_CPU(cs); + int bound; =20 - pc_start =3D tb->pc; dc->cpu =3D cpu; - org_flags =3D dc->synced_flags =3D dc->tb_flags =3D tb->flags; - - dc->jmp =3D 0; + dc->synced_flags =3D dc->tb_flags =3D dc->base.tb->flags; dc->delayed_branch =3D !!(dc->tb_flags & D_FLAG); - if (dc->delayed_branch) { - dc->jmp =3D JMP_INDIRECT; - } - dc->base.pc_first =3D pc_start; - dc->base.pc_next =3D pc_start; - dc->base.singlestep_enabled =3D cs->singlestep_enabled; + dc->jmp =3D dc->delayed_branch ? JMP_INDIRECT : JMP_NOJMP; dc->cpustate_changed =3D 0; dc->abort_at_next_insn =3D 0; - dc->base.is_jmp =3D DISAS_NEXT; - dc->base.tb =3D tb; =20 - if (pc_start & 3) { - cpu_abort(cs, "Microblaze: unaligned PC=3D%x\n", pc_start); + bound =3D -(dc->base.pc_first | TARGET_PAGE_MASK) / 4; + dc->base.max_insns =3D MIN(dc->base.max_insns, bound); +} + +static void mb_tr_tb_start(DisasContextBase *dcb, CPUState *cs) +{ +} + +static void mb_tr_insn_start(DisasContextBase *dcb, CPUState *cs) +{ + tcg_gen_insn_start(dcb->pc_next); +} + +static bool mb_tr_breakpoint_check(DisasContextBase *dcb, CPUState *cs, + const CPUBreakpoint *bp) +{ + DisasContext *dc =3D container_of(dcb, DisasContext, base); + + gen_raise_exception_sync(dc, EXCP_DEBUG); + + /* + * The address covered by the breakpoint must be included in + * [tb->pc, tb->pc + tb->size) in order to for it to be + * properly cleared -- thus we increment the PC here so that + * the logic setting tb->size below does the right thing. + */ + dc->base.pc_next +=3D 4; + return true; +} + +static void mb_tr_translate_insn(DisasContextBase *dcb, CPUState *cs) +{ + DisasContext *dc =3D container_of(dcb, DisasContext, base); + CPUMBState *env =3D cs->env_ptr; + + /* TODO: This should raise an exception, not terminate qemu. */ + if (dc->base.pc_next & 3) { + cpu_abort(cs, "Microblaze: unaligned PC=3D%x\n", + (uint32_t)dc->base.pc_next); } =20 - page_start =3D pc_start & TARGET_PAGE_MASK; - num_insns =3D 0; + dc->clear_imm =3D 1; + decode(dc, cpu_ldl_code(env, dc->base.pc_next)); + if (dc->clear_imm) { + dc->tb_flags &=3D ~IMM_FLAG; + } + dc->base.pc_next +=3D 4; =20 - gen_tb_start(tb); - do - { - tcg_gen_insn_start(dc->base.pc_next); - num_insns++; - - if (unlikely(cpu_breakpoint_test(cs, dc->base.pc_next, BP_ANY))) { - gen_raise_exception_sync(dc, EXCP_DEBUG); - /* The address covered by the breakpoint must be included in - [tb->pc, tb->pc + tb->size) in order to for it to be - properly cleared -- thus we increment the PC here so that - the logic setting tb->size below does the right thing. */ - dc->base.pc_next +=3D 4; - break; + if (dc->delayed_branch && --dc->delayed_branch =3D=3D 0) { + if (dc->tb_flags & DRTI_FLAG) { + do_rti(dc); } - - /* Pretty disas. */ - LOG_DIS("%8.8x:\t", (uint32_t)dc->base.pc_next); - - if (num_insns =3D=3D max_insns && (tb_cflags(tb) & CF_LAST_IO)) { - gen_io_start(); + if (dc->tb_flags & DRTB_FLAG) { + do_rtb(dc); } - - dc->clear_imm =3D 1; - decode(dc, cpu_ldl_code(env, dc->base.pc_next)); - if (dc->clear_imm) - dc->tb_flags &=3D ~IMM_FLAG; - dc->base.pc_next +=3D 4; - - if (dc->delayed_branch) { - dc->delayed_branch--; - if (!dc->delayed_branch) { - if (dc->tb_flags & DRTI_FLAG) - do_rti(dc); - if (dc->tb_flags & DRTB_FLAG) - do_rtb(dc); - if (dc->tb_flags & DRTE_FLAG) - do_rte(dc); - /* Clear the delay slot flag. */ - dc->tb_flags &=3D ~D_FLAG; - /* If it is a direct jump, try direct chaining. */ - if (dc->jmp =3D=3D JMP_INDIRECT) { - TCGv_i32 tmp_pc =3D tcg_const_i32(dc->base.pc_next); - eval_cond_jmp(dc, cpu_btarget, tmp_pc); - tcg_temp_free_i32(tmp_pc); - dc->base.is_jmp =3D DISAS_JUMP; - } else if (dc->jmp =3D=3D JMP_DIRECT) { - t_sync_flags(dc); - gen_goto_tb(dc, 0, dc->jmp_pc); - } else if (dc->jmp =3D=3D JMP_DIRECT_CC) { - TCGLabel *l1 =3D gen_new_label(); - t_sync_flags(dc); - /* Conditional jmp. */ - tcg_gen_brcondi_i32(TCG_COND_NE, cpu_btaken, 0, l1); - gen_goto_tb(dc, 1, dc->base.pc_next); - gen_set_label(l1); - gen_goto_tb(dc, 0, dc->jmp_pc); - } - break; - } + if (dc->tb_flags & DRTE_FLAG) { + do_rte(dc); } - if (dc->base.singlestep_enabled) { - break; - } - } while (!dc->base.is_jmp && !dc->cpustate_changed - && !tcg_op_buf_full() - && !singlestep - && (dc->base.pc_next - page_start < TARGET_PAGE_SIZE) - && num_insns < max_insns); - - npc =3D dc->base.pc_next; - if (dc->jmp =3D=3D JMP_DIRECT || dc->jmp =3D=3D JMP_DIRECT_CC) { - if (dc->tb_flags & D_FLAG) { - dc->base.is_jmp =3D DISAS_UPDATE; - tcg_gen_movi_i32(cpu_pc, npc); - sync_jmpstate(dc); - } else - npc =3D dc->jmp_pc; + /* Clear the delay slot flag. */ + dc->tb_flags &=3D ~D_FLAG; + dc->base.is_jmp =3D DISAS_JUMP; } =20 - /* Force an update if the per-tb cpu state has changed. */ - if (dc->base.is_jmp =3D=3D DISAS_NEXT - && (dc->cpustate_changed || org_flags !=3D dc->tb_flags)) { + /* Force an exit if the per-tb cpu state has changed. */ + if (dc->base.is_jmp =3D=3D DISAS_NEXT && dc->cpustate_changed) { dc->base.is_jmp =3D DISAS_UPDATE; - tcg_gen_movi_i32(cpu_pc, npc); + tcg_gen_movi_i32(cpu_pc, dc->base.pc_next); } - t_sync_flags(dc); +} + +static void mb_tr_tb_stop(DisasContextBase *dcb, CPUState *cs) +{ + DisasContext *dc =3D container_of(dcb, DisasContext, base); + + assert(!dc->abort_at_next_insn); =20 if (dc->base.is_jmp =3D=3D DISAS_NORETURN) { - /* nothing more to generate */ - } else if (unlikely(cs->singlestep_enabled)) { - TCGv_i32 tmp =3D tcg_const_i32(EXCP_DEBUG); - - if (dc->base.is_jmp !=3D DISAS_JUMP) { - tcg_gen_movi_i32(cpu_pc, npc); - } - gen_helper_raise_exception(cpu_env, tmp); - tcg_temp_free_i32(tmp); - } else { - switch (dc->base.is_jmp) { - case DISAS_NEXT: - gen_goto_tb(dc, 1, npc); - break; - case DISAS_JUMP: - case DISAS_UPDATE: - /* indicate that the hash table must be used - to find the next TB */ - tcg_gen_exit_tb(NULL, 0); - break; - default: - g_assert_not_reached(); - } + /* We have already exited the TB. */ + return; } - gen_tb_end(tb, num_insns); =20 - tb->size =3D dc->base.pc_next - pc_start; - tb->icount =3D num_insns; + t_sync_flags(dc); + if (dc->tb_flags & D_FLAG) { + sync_jmpstate(dc); + dc->jmp =3D JMP_NOJMP; + } =20 + switch (dc->base.is_jmp) { + case DISAS_TOO_MANY: + assert(dc->jmp =3D=3D JMP_NOJMP); + gen_goto_tb(dc, 0, dc->base.pc_next); + return; + + case DISAS_UPDATE: + assert(dc->jmp =3D=3D JMP_NOJMP); + if (unlikely(cs->singlestep_enabled)) { + gen_raise_exception(dc, EXCP_DEBUG); + } else { + tcg_gen_exit_tb(NULL, 0); + } + return; + + case DISAS_JUMP: + switch (dc->jmp) { + case JMP_INDIRECT: + { + TCGv_i32 tmp_pc =3D tcg_const_i32(dc->base.pc_next); + eval_cond_jmp(dc, cpu_btarget, tmp_pc); + tcg_temp_free_i32(tmp_pc); + + if (unlikely(cs->singlestep_enabled)) { + gen_raise_exception(dc, EXCP_DEBUG); + } else { + tcg_gen_exit_tb(NULL, 0); + } + } + return; + + case JMP_DIRECT_CC: + { + TCGLabel *l1 =3D gen_new_label(); + tcg_gen_brcondi_i32(TCG_COND_NE, cpu_btaken, 0, l1); + gen_goto_tb(dc, 1, dc->base.pc_next); + gen_set_label(l1); + } + /* fall through */ + + case JMP_DIRECT: + gen_goto_tb(dc, 0, dc->jmp_pc); + return; + } + /* fall through */ + + default: + g_assert_not_reached(); + } +} + +static void mb_tr_disas_log(const DisasContextBase *dcb, CPUState *cs) +{ #ifdef DEBUG_DISAS #if !SIM_COMPAT - if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM) - && qemu_log_in_addr_range(pc_start)) { - FILE *logfile =3D qemu_log_lock(); - qemu_log("--------------\n"); - log_target_disas(cs, pc_start, dc->base.pc_next - pc_start); - qemu_log_unlock(logfile); - } + qemu_log("IN: %s\n", lookup_symbol(dcb->pc_first)); + log_target_disas(cs, dcb->pc_first, dcb->tb->size); #endif #endif - assert(!dc->abort_at_next_insn); +} + +static const TranslatorOps mb_tr_ops =3D { + .init_disas_context =3D mb_tr_init_disas_context, + .tb_start =3D mb_tr_tb_start, + .insn_start =3D mb_tr_insn_start, + .breakpoint_check =3D mb_tr_breakpoint_check, + .translate_insn =3D mb_tr_translate_insn, + .tb_stop =3D mb_tr_tb_stop, + .disas_log =3D mb_tr_disas_log, +}; + +void gen_intermediate_code(CPUState *cpu, TranslationBlock *tb, int max_in= sns) +{ + DisasContext dc; + translator_loop(&mb_tr_ops, &dc.base, cpu, tb, max_insns); } =20 void mb_cpu_dump_state(CPUState *cs, FILE *f, int flags) --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890732; cv=none; d=zohomail.com; s=zohoarc; b=OlZG0S8dArbsS81OmGNFTnhVfSy8IZX3AJCUZnITIXoznTBH78f63I/1HwkP++NXsdQ/W7x1jkMh1PjiY+kDRf2P1PcZ64OlVtURsSa/tdhsgiY/5Y9Q5T3y6ZCjV8sjC1C9tjazZHUXC4XnyTGHXB7mVsh4vAq2zR/A73IYH8c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890732; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Ef/2KrHveuUVDAO5/6dwQJ/JaWE1rIYd4ZjYlC8sz1Y=; b=KUl/Dwmy04WKgV9NDakSuheMN1JvruH1i8LALiXGz70r+0OVFcMn2G/bENsrOW9oYfXTZtZR5DILrgeOn4Sg1j6Fn3ZNI9zRvJ9YSj/Pr5tUWqfEUNYxDUIGM7Ykzv8D1j4IYt2ThyVImaxXSC7ai9TCE0gWMz/Cwkk+vv9AktU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890732840857.7559689748939; Mon, 31 Aug 2020 09:18:52 -0700 (PDT) Received: from localhost ([::1]:56432 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmWB-0003Oj-Tj for importer@patchew.org; Mon, 31 Aug 2020 12:18:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34016) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKW-0004eG-AC for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:48 -0400 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]:40376) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKU-000612-Gj for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:47 -0400 Received: by mail-pf1-x42b.google.com with SMTP id c142so805695pfb.7 for ; Mon, 31 Aug 2020 09:06:45 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Ef/2KrHveuUVDAO5/6dwQJ/JaWE1rIYd4ZjYlC8sz1Y=; b=LW421/qUgz+4vnbJfWBhNJ0uD4bGl1l/iC/nOnCyD+p4dfO+lcF0cincKUvLD4ZGND 9azSaqBSoU/Tyd6upMcG4QuMCoEpJJ4ntNDHi4xD5bCQwXvjkwz6CDyGyGn1id9d88xm Y/drgAKi5XHHcIpj0eYKwgoao8nNccSSFakIwjHd5OxI4G769jS9a8FahzcnYdATebGu 94XanQOqdrv7m4/JX48ocikDOlw9SQu+uoWVtZKuxIR579coyk3MD1n/zYkxpdNmItco 0+l/RG5XRXvLwSLzDejLgHHuz1RGiUxIkVRdKvsISqiwTI4QOe7EHrGE4c6B947PW/3z fjng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Ef/2KrHveuUVDAO5/6dwQJ/JaWE1rIYd4ZjYlC8sz1Y=; b=iXQ72gKZryQv+FM65RtdcORqlFPHNLo/kWvJZ9OWH6ReqL4CnCUhuX6IhI0jagVBTN bmFD/2JWj5An5c1V+SxJJLWCJEm5mY3SfeMzBEFFKUVm67IbLOryMWJMXJ9EbuTEGSsA gkKABhoAaXnUc6YkrNcrRENAKBlEbWaJSwIlWRwC6K4XWHi0VWJFM2Q3w1wKbk7PkhjE p5mN85RvjKacUkEqYQ60Vm2uVwueWcl00Rl0q32CWsa0DZd7w1GemGMaguySkoyKPHnc KS2PVFk2YUErA+TKAzHHJ6uKeDAwzb+bTmsTncvkSKY9IUUXEAAXNmFFgYyvms+lZUNK 0dWw== X-Gm-Message-State: AOAM532nb1AKxnG6aA1K+ZdKlnw8/a9IVnOFe2/D1353kpszVCJeS7ZC 6RQvax59wLk0C+YhcJeKYoFQbjYCGuzDYA== X-Google-Smtp-Source: ABdhPJw0hbLczPPDwkZwe3JQv05cVoEwHFBs2pE8gVW+/DD6zVaV3JfVOlfuxmvSUF9wOs8ylUy10Q== X-Received: by 2002:a05:6a00:1507:: with SMTP id q7mr1875016pfu.303.1598890004547; Mon, 31 Aug 2020 09:06:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 30/76] target/microblaze: Remove SIM_COMPAT Date: Mon, 31 Aug 2020 09:05:15 -0700 Message-Id: <20200831160601.833692-31-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42b.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/translate.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 6a9710d76d..a90e56a17f 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -34,10 +34,9 @@ #include "exec/log.h" =20 =20 -#define SIM_COMPAT 0 #define DISAS_GNU 1 #define DISAS_MB 1 -#if DISAS_MB && !SIM_COMPAT +#if DISAS_MB # define LOG_DIS(...) qemu_log_mask(CPU_LOG_TB_IN_ASM, ## __VA_ARGS__) #else # define LOG_DIS(...) do { } while (0) @@ -1749,11 +1748,9 @@ static void mb_tr_tb_stop(DisasContextBase *dcb, CPU= State *cs) static void mb_tr_disas_log(const DisasContextBase *dcb, CPUState *cs) { #ifdef DEBUG_DISAS -#if !SIM_COMPAT qemu_log("IN: %s\n", lookup_symbol(dcb->pc_first)); log_target_disas(cs, dcb->pc_first, dcb->tb->size); #endif -#endif } =20 static const TranslatorOps mb_tr_ops =3D { --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890919; cv=none; d=zohomail.com; s=zohoarc; b=moU1/CcopX+7Dd4FGP4iqdZj+cTCFgTIUCYZ7EdUFEpD/BsMkl0tnUBp+coMcLieqpEgGc5JvVegc44oCNzTMTP1bdaiit2dsxfJ6EMSrh864JQPKQHy9GJz+R0zNVg0nMSHJgONuVDdoZSYskatlkb7qOkbJ4hcK7TGczS1fM4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890919; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=LC4GQajG5DLWT6OieJHaqxMjuNV3BYGqh/KPNTdIZYE=; b=TyVo5vHrR+t/R8PmuH5mFHbzznzJg1rX1h54bsDVsFBUjDDHaHEL4wmJU86najVjnIQpS5weY8meRo4O4CLjdM5/Rmj5QOcVg4jTMKYx01aUg0T4aNOT2ujVPxsOFpK2v1VyFii+6g31kUJcJewZAgTB0KBX1eEJTbwfMJN+o0U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890919249784.6659140611363; Mon, 31 Aug 2020 09:21:59 -0700 (PDT) Received: from localhost ([::1]:44952 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmZC-0001iO-HC for importer@patchew.org; Mon, 31 Aug 2020 12:21:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34028) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKX-0004gM-8R for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:49 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]:56177) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKV-00061M-I8 for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:48 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 2so20236pjx.5 for ; Mon, 31 Aug 2020 09:06:47 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=LC4GQajG5DLWT6OieJHaqxMjuNV3BYGqh/KPNTdIZYE=; b=a20srPZ4PiffYT2aLUDso+oU5pqf87z8CeU6XnBiJFEBZOANK86sl/eC4EOf/if0O4 vNFkxRc//ITmWuGAD/ZWlQvHq939N0ZekTNN7QvJGpzTYCRUIut8I6UQMYJoRms7WB9t 8k2IKIRv5UcElqcvdq5WiB1h1hTd3FEW6taorbJZiycOUnYMCukK5W2KHMNG1bW3N1W4 8GZYJdRmyClWF5jdyFoiYZQsUxofb5a4BCDIuQ7zGgat2BKL9kSjIioqwCCtD1pTQe+v HhIXrVR4hxnfFih1XFpU/wToLKhuSj0SplqCg3n2l27SZP4bNLYYxTvcNxQO6MY4obPZ Nr6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LC4GQajG5DLWT6OieJHaqxMjuNV3BYGqh/KPNTdIZYE=; b=erZ6pQcfbDWudv+Rg3oR7Tg/PdGVIt/akB82kDsMWJUFvciJlQFtdIk1AbDMxoyhx/ oOhgv7r7imQwp7pbSTz989d7i/XEOSXsOMCbhPZXbXYndSSWTQJ4jqmw+a2EwppD542C fbQJo4VHJIrxwqFEq8wj9Fv01G/MqTSiCW+D+VQsi42ZyzobvIa3MEx/EZitQFmX9y9K VP2380qW3pADL3segQe9hOQ73ayV2SfN5+SwJDkhSyTV3r8hBKg4OvWmZ9XgzPh+T5Mi 4ktO4GId8exUkVtSGgynu6ui4YyLR2Urg3BPXP1jMnmYo207Ev5UClmudUOUgkyduajv JrNA== X-Gm-Message-State: AOAM531W2GIl4Ptm8bBqSOmHGDX+Fzqp3GzXz1Q9P4I3pecMqsUh2PVf 6q2acRzyj4s//91jdOQeEVOP7Vujo5JtIQ== X-Google-Smtp-Source: ABdhPJxeuCg22wmjnFhPwkZz/ueEcV36N7yVB7YvMVFR+8F2B4JD4Ge0UDPoDhVYjCmtRlF1s0qQWw== X-Received: by 2002:a17:90b:1988:: with SMTP id mv8mr82524pjb.23.1598890005880; Mon, 31 Aug 2020 09:06:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 31/76] target/microblaze: Remove DISAS_GNU Date: Mon, 31 Aug 2020 09:05:16 -0700 Message-Id: <20200831160601.833692-32-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This is never used. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/translate.c | 1 - 1 file changed, 1 deletion(-) diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index a90e56a17f..6757720776 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -34,7 +34,6 @@ #include "exec/log.h" =20 =20 -#define DISAS_GNU 1 #define DISAS_MB 1 #if DISAS_MB # define LOG_DIS(...) qemu_log_mask(CPU_LOG_TB_IN_ASM, ## __VA_ARGS__) --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890919; cv=none; d=zohomail.com; s=zohoarc; b=k4jo6nlW5JkSrQx3PN3OUQX2el8fmU0UmJCvOLeY6B3hvQ2X/JD2rlwloxzUaMdrtHgj+lBgMC3PrYquJKL2Wm60JKbkb00K0m6TrOvHsytws2xmYzal9zQOX+Epq8lXt7xadiJX0AWMh7RhlMQe2PO6wDPcLmrg7m6VZ3lNU0Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890919; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=8/3WDLS8b0IqACNGFAn6ZPwsL1jv2U3misGXJGmlm9U=; b=BW4Wtx9EcwGuWlZiiqUhG6Z+7yGRjJqrAKvmAsg5a+ZbEtgMKTeMmosxMWQK1jpUKUH1DoSPiq4xI5s6hUy2f2WQ6OIr+2gkHqcbIRA+EhhryK/aqkXkTJFk0oQaVCzPR54/+z6426crFCkBVybmbrS70UCzJLO3ZIWWEQeAvlQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890919032930.4786646224593; Mon, 31 Aug 2020 09:21:59 -0700 (PDT) Received: from localhost ([::1]:44980 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmZC-0001j7-7n for importer@patchew.org; Mon, 31 Aug 2020 12:21:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34042) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKY-0004kJ-Tn for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:51 -0400 Received: from mail-pg1-x541.google.com ([2607:f8b0:4864:20::541]:40493) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKX-00061d-0J for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:50 -0400 Received: by mail-pg1-x541.google.com with SMTP id h12so831243pgm.7 for ; Mon, 31 Aug 2020 09:06:48 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8/3WDLS8b0IqACNGFAn6ZPwsL1jv2U3misGXJGmlm9U=; b=hMjqixW8wDfqzZh/oashrCrrsp68fpjiMQZgyeyawZUWBq0GA1a+r33mBfmk4z8pqQ u9oR7vLexxWV56ZhLsSsXwDBpv4+wuW2GhP1isW1SheE1rQVsG07vxE6aoyK3yJg7g8P lrRDbNMbk28bUyC4UDpPAdtcxPBejNHw+Fvtrc0x6jeuM2oyNL+eauE+a0mAEG2DpfUv ViwWyy7sVzGKNno46llcwb0O6qyiyptJ3cXftXxZKhIKaVRFUT+tbiqxQey7D41MjvsA vGKevJTS/YHZaCmQ9ubzPB1S7cCif62XHLTuf3sRZrJMQd4OqPpqPRBCBxUgmYHq35Qw J4Pg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8/3WDLS8b0IqACNGFAn6ZPwsL1jv2U3misGXJGmlm9U=; b=VzLmafOw4VPqyGH2NK+0HlyZsOPOYG30WVvoiwEpOnrnlIa3eGPFZWq1jmOI/CEGu/ DYx9dfRG09Lmcw3UEn/IfKEAIrKRYNrCC8ubqgsN4OELfW2+oc4VBtB64ULcwflHKuum EOvuv6cKOLminQrMG6WnKaKdAT45HemWsN691rp4nssYFZ3+ebskAxrLvDHU99ao6ZrV w38xDzTSexQlnLZkaJtnkpAfOILf5T8rqze04sy9TINMiUhvj48S96nhg2i4PjSjmG62 SNfrCk6Yr8dAWQnIAWEOxneEoGqBXwGWTJ/gwt7JUxC0tvqxohprNz3ANi48D2e4E7Lu 0VAQ== X-Gm-Message-State: AOAM5333dlKneUhGDiAsp2CzrDhbe0/xZduiMQVmTqToJyENoxHWYLx+ eZZ135if/3Gh4+CxUhvh/DDxL0CtZtqh9A== X-Google-Smtp-Source: ABdhPJxZxdjiuSwfRvw+un39hcKojONKMAq+OXWJSL9baldA/a9tj0Uyy7QbzZak+5+iOLBefgELSA== X-Received: by 2002:a62:928d:: with SMTP id o135mr1888007pfd.22.1598890006946; Mon, 31 Aug 2020 09:06:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 32/76] target/microblaze: Remove empty D macros Date: Mon, 31 Aug 2020 09:05:17 -0700 Message-Id: <20200831160601.833692-33-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::541; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x541.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This is never used in op_helper.c and translate.c. There are two trivial uses in helper.c which can be improved by always logging MMU_EXCP to CPU_LOG_INT. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/helper.c | 11 ++++------- target/microblaze/op_helper.c | 2 -- target/microblaze/translate.c | 2 -- 3 files changed, 4 insertions(+), 11 deletions(-) diff --git a/target/microblaze/helper.c b/target/microblaze/helper.c index 9a95456401..f8e2ca12a9 100644 --- a/target/microblaze/helper.c +++ b/target/microblaze/helper.c @@ -24,8 +24,6 @@ #include "qemu/host-utils.h" #include "exec/log.h" =20 -#define D(x) - #if defined(CONFIG_USER_ONLY) =20 void mb_cpu_do_interrupt(CPUState *cs) @@ -155,10 +153,13 @@ void mb_cpu_do_interrupt(CPUState *cs) case EXCP_MMU: env->regs[17] =3D env->pc; =20 + qemu_log_mask(CPU_LOG_INT, + "MMU exception at pc=3D%x iflags=3D%x ear=3D%" P= RIx64 "\n", + env->pc, env->iflags, env->ear); + env->esr &=3D ~(1 << 12); /* Exception breaks branch + dslot sequence? */ if (env->iflags & D_FLAG) { - D(qemu_log("D_FLAG set at exception bimm=3D%d\n", env->bim= m)); env->esr |=3D 1 << 12 ; env->btr =3D env->btarget; =20 @@ -166,14 +167,10 @@ void mb_cpu_do_interrupt(CPUState *cs) env->regs[17] -=3D 4; /* was the branch immprefixed?. */ if (env->bimm) { - qemu_log_mask(CPU_LOG_INT, - "bimm exception at pc=3D%x iflags=3D%x\n= ", - env->pc, env->iflags); env->regs[17] -=3D 4; log_cpu_state_mask(CPU_LOG_INT, cs, 0); } } else if (env->iflags & IMM_FLAG) { - D(qemu_log("IMM_FLAG set at exception\n")); env->regs[17] -=3D 4; } =20 diff --git a/target/microblaze/op_helper.c b/target/microblaze/op_helper.c index d79202c3f8..decdca0fd8 100644 --- a/target/microblaze/op_helper.c +++ b/target/microblaze/op_helper.c @@ -26,8 +26,6 @@ #include "exec/cpu_ldst.h" #include "fpu/softfloat.h" =20 -#define D(x) - void helper_put(uint32_t id, uint32_t ctrl, uint32_t data) { int test =3D ctrl & STREAM_TEST; diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 6757720776..860859324a 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -41,8 +41,6 @@ # define LOG_DIS(...) do { } while (0) #endif =20 -#define D(x) - #define EXTRACT_FIELD(src, start, end) \ (((src) >> start) & ((1 << (end - start + 1)) - 1)) =20 --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890690; cv=none; d=zohomail.com; s=zohoarc; b=PTNnW9BOq72qm1ydITdq3kchJn0mwFPQ4aKV5FQITxuybcX8q6fjGryK8MAONLEzUNhhbbxOVB9J5PMzeoR0VSIDVjsd6zHaqGybXh0a+NX1TzG0F2C24qmgFa3MdYnUbcKzihDDMFetUmERNJZ3Vj4z22oHWYOgtdLAgrvL4iU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890690; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=y+eHAmaw1Ds6wITBRFmUibj1vZ5XgTDmW3pkg4vTY5U=; b=nwAEJ+B9Q81JsyAPrmc5/ZW4AMWzg41dOIMd+VqXSRaMh8F7jHvUVIuCDE6o3IizrsNJO6QkISWq49hG14hRfjqRWkjIaszB0xDdzMlX15l3vGnaK2QDqtukr8Yea3ClQcP3ySAmRe//k8QUb7zBNyiNRaET+3vFl8fPfqjgoYQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890690922466.2505932636809; Mon, 31 Aug 2020 09:18:10 -0700 (PDT) Received: from localhost ([::1]:52246 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmVV-0001je-QZ for importer@patchew.org; Mon, 31 Aug 2020 12:18:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34074) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKb-0004p9-32 for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:53 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]:35325) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKY-00061z-Rv for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:52 -0400 Received: by mail-pj1-x102a.google.com with SMTP id g6so32498pjl.0 for ; Mon, 31 Aug 2020 09:06:50 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=y+eHAmaw1Ds6wITBRFmUibj1vZ5XgTDmW3pkg4vTY5U=; b=BVSrvxe9v2grqSgRm2a3V5aH/USa2T8Pu6godMXVxUVZx7JZiRPV2GhmF6YrihqzcC /NPNPw+BGxPI3hs7rHvPPilUGTFvJrUsWZ+5f4xh6OCYfNCZUemsqscBqdm9HKSC5Y2B 9rmVWcahNJgXID/r39uqnVKCM8sBjGP27eAqcdJPaMEOt00bP2omsBpt6AZ2pwid1KIC llvTtf6Cp0pejsmDOniDY15218dvW3o5hfMD44QnhbUmXk6NWwS5jKd4qm8GnjLJ10Em v/Q2yc73HbLv1Htrc+tTrtozmg3e6MGvxAHrIp2D6xPhfhd8GJXLpq5rCMF3ngUUmzWu FyKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=y+eHAmaw1Ds6wITBRFmUibj1vZ5XgTDmW3pkg4vTY5U=; b=i1oggWDgt2rOVrmyHN+Co4tuz9ccbkXF3hZw6uXz41W4miNiWu/7ZhubQWHddwSFKz NeVRWBA8pX1FIY5fRPJEGomqoixmN7ZYuMb/AMiF1CeTGjPRtPVev8vBZ9p1RdmNfDgd dS5kGLH7mIyFID2UvLYZZAkufBG+aSUa1E2DviRi2j5VLw55/ytdWkDhprRHbRwDPKoM OvSoCPyspz1YMueUkCwS9T3k5wGWVy62mCQPjoUmOD/Xy/F2unNilDODqmZJh0TNJhsM SX0O34c/DJLh6/+GzmUxNWBMsxDJshFWp9kJTHtQzZfY2TZ8h3q1BcaQm0ED2qgKh+I+ O2UQ== X-Gm-Message-State: AOAM531gAoAMRDC3C+TLzzJZ1uNcWeCIrzK2FuWyGL6r9PnWsEUCqPtX K/+CTmoGjkZQgkHgWcNcdzv5FAh4J+aJnQ== X-Google-Smtp-Source: ABdhPJxdtHUgSUqLLr3olh7w0uPSCVZB3+cs/4W/mVOv1UpiNFIGsayFwscFtdec0/rvaugBeWAiLg== X-Received: by 2002:a17:90a:fb52:: with SMTP id iq18mr93128pjb.162.1598890008607; Mon, 31 Aug 2020 09:06:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 33/76] target/microblaze: Remove LOG_DIS Date: Mon, 31 Aug 2020 09:05:18 -0700 Message-Id: <20200831160601.833692-34-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102a.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Also remove the related defines, DISAS_MB and DEBUG_DISAS. Rely on print_insn_microblaze. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/translate.c | 78 +---------------------------------- 1 file changed, 1 insertion(+), 77 deletions(-) diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 860859324a..133ec24870 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -33,14 +33,6 @@ #include "trace-tcg.h" #include "exec/log.h" =20 - -#define DISAS_MB 1 -#if DISAS_MB -# define LOG_DIS(...) qemu_log_mask(CPU_LOG_TB_IN_ASM, ## __VA_ARGS__) -#else -# define LOG_DIS(...) do { } while (0) -#endif - #define EXTRACT_FIELD(src, start, end) \ (((src) >> start) & ((1 << (end - start + 1)) - 1)) =20 @@ -205,10 +197,6 @@ static void dec_add(DisasContext *dc) k =3D dc->opcode & 4; c =3D dc->opcode & 2; =20 - LOG_DIS("add%s%s%s r%d r%d r%d\n", - dc->type_b ? "i" : "", k ? "k" : "", c ? "c" : "", - dc->rd, dc->ra, dc->rb); - /* Take care of the easy cases first. */ if (k) { /* k - keep carry, no need to update MSR. */ @@ -252,7 +240,6 @@ static void dec_sub(DisasContext *dc) cmp =3D (dc->imm & 1) && (!dc->type_b) && k; =20 if (cmp) { - LOG_DIS("cmp%s r%d, r%d ir=3D%x\n", u ? "u" : "", dc->rd, dc->ra, = dc->ir); if (dc->rd) { if (u) gen_helper_cmpu(cpu_R[dc->rd], cpu_R[dc->ra], cpu_R[dc->rb= ]); @@ -262,9 +249,6 @@ static void dec_sub(DisasContext *dc) return; } =20 - LOG_DIS("sub%s%s r%d, r%d r%d\n", - k ? "k" : "", c ? "c" : "", dc->rd, dc->ra, dc->rb); - /* Take care of the easy cases first. */ if (k) { /* k - keep carry, no need to update MSR. */ @@ -314,19 +298,16 @@ static void dec_pattern(DisasContext *dc) switch (mode) { case 0: /* pcmpbf. */ - LOG_DIS("pcmpbf r%d r%d r%d\n", dc->rd, dc->ra, dc->rb); if (dc->rd) gen_helper_pcmpbf(cpu_R[dc->rd], cpu_R[dc->ra], cpu_R[dc->= rb]); break; case 2: - LOG_DIS("pcmpeq r%d r%d r%d\n", dc->rd, dc->ra, dc->rb); if (dc->rd) { tcg_gen_setcond_i32(TCG_COND_EQ, cpu_R[dc->rd], cpu_R[dc->ra], cpu_R[dc->rb]); } break; case 3: - LOG_DIS("pcmpne r%d r%d r%d\n", dc->rd, dc->ra, dc->rb); if (dc->rd) { tcg_gen_setcond_i32(TCG_COND_NE, cpu_R[dc->rd], cpu_R[dc->ra], cpu_R[dc->rb]); @@ -349,7 +330,6 @@ static void dec_and(DisasContext *dc) } =20 not =3D dc->opcode & (1 << 1); - LOG_DIS("and%s\n", not ? "n" : ""); =20 if (!dc->rd) return; @@ -367,7 +347,6 @@ static void dec_or(DisasContext *dc) return; } =20 - LOG_DIS("or r%d r%d r%d imm=3D%x\n", dc->rd, dc->ra, dc->rb, dc->imm); if (dc->rd) tcg_gen_or_i32(cpu_R[dc->rd], cpu_R[dc->ra], *(dec_alu_op_b(dc))); } @@ -379,7 +358,6 @@ static void dec_xor(DisasContext *dc) return; } =20 - LOG_DIS("xor r%d\n", dc->rd); if (dc->rd) tcg_gen_xor_i32(cpu_R[dc->rd], cpu_R[dc->ra], *(dec_alu_op_b(dc))); } @@ -433,9 +411,6 @@ static void dec_msr(DisasContext *dc) if (clrset) { bool clr =3D extract32(dc->ir, 16, 1); =20 - LOG_DIS("msr%s r%d imm=3D%x\n", clr ? "clr" : "set", - dc->rd, dc->imm); - if (!dc->cpu->cfg.use_msr_instr) { /* nop??? */ return; @@ -478,7 +453,6 @@ static void dec_msr(DisasContext *dc) =20 sr &=3D 7; tmp_sr =3D tcg_const_i32(sr); - LOG_DIS("m%ss sr%d r%d imm=3D%x\n", to ? "t" : "f", sr, dc->ra, dc= ->imm); if (to) { gen_helper_mmu_write(cpu_env, tmp_ext, tmp_sr, cpu_R[dc->ra]); } else { @@ -491,7 +465,6 @@ static void dec_msr(DisasContext *dc) #endif =20 if (to) { - LOG_DIS("m%ss sr%x r%d imm=3D%x\n", to ? "t" : "f", sr, dc->ra, dc= ->imm); switch (sr) { case SR_PC: break; @@ -535,8 +508,6 @@ static void dec_msr(DisasContext *dc) break; } } else { - LOG_DIS("m%ss r%d sr%x imm=3D%x\n", to ? "t" : "f", dc->rd, sr, dc= ->imm); - switch (sr) { case SR_PC: tcg_gen_movi_i32(cpu_R[dc->rd], dc->base.pc_next); @@ -609,7 +580,6 @@ static void dec_mul(DisasContext *dc) subcode =3D dc->imm & 3; =20 if (dc->type_b) { - LOG_DIS("muli r%d r%d %x\n", dc->rd, dc->ra, dc->imm); tcg_gen_mul_i32(cpu_R[dc->rd], cpu_R[dc->ra], *(dec_alu_op_b(dc))); return; } @@ -622,21 +592,17 @@ static void dec_mul(DisasContext *dc) tmp =3D tcg_temp_new_i32(); switch (subcode) { case 0: - LOG_DIS("mul r%d r%d r%d\n", dc->rd, dc->ra, dc->rb); tcg_gen_mul_i32(cpu_R[dc->rd], cpu_R[dc->ra], cpu_R[dc->rb]); break; case 1: - LOG_DIS("mulh r%d r%d r%d\n", dc->rd, dc->ra, dc->rb); tcg_gen_muls2_i32(tmp, cpu_R[dc->rd], cpu_R[dc->ra], cpu_R[dc->rb]); break; case 2: - LOG_DIS("mulhsu r%d r%d r%d\n", dc->rd, dc->ra, dc->rb); tcg_gen_mulsu2_i32(tmp, cpu_R[dc->rd], cpu_R[dc->ra], cpu_R[dc->rb]); break; case 3: - LOG_DIS("mulhu r%d r%d r%d\n", dc->rd, dc->ra, dc->rb); tcg_gen_mulu2_i32(tmp, cpu_R[dc->rd], cpu_R[dc->ra], cpu_R[dc-= >rb]); break; default: @@ -652,7 +618,6 @@ static void dec_div(DisasContext *dc) unsigned int u; =20 u =3D dc->imm & 2;=20 - LOG_DIS("div\n"); =20 if (trap_illegal(dc, !dc->cpu->cfg.use_div)) { return; @@ -688,10 +653,6 @@ static void dec_barrel(DisasContext *dc) imm_w =3D extract32(dc->imm, 6, 5); imm_s =3D extract32(dc->imm, 0, 5); =20 - LOG_DIS("bs%s%s%s r%d r%d r%d\n", - e ? "e" : "", - s ? "l" : "r", t ? "a" : "l", dc->rd, dc->ra, dc->rb); - if (e) { if (imm_w + imm_s > 32 || imm_w =3D=3D 0) { /* These inputs have an undefined behavior. */ @@ -742,7 +703,6 @@ static void dec_bit(DisasContext *dc) /* src. */ t0 =3D tcg_temp_new_i32(); =20 - LOG_DIS("src r%d r%d\n", dc->rd, dc->ra); tcg_gen_shli_i32(t0, cpu_msr_c, 31); tcg_gen_andi_i32(cpu_msr_c, cpu_R[dc->ra], 1); if (dc->rd) { @@ -755,8 +715,6 @@ static void dec_bit(DisasContext *dc) case 0x1: case 0x41: /* srl. */ - LOG_DIS("srl r%d r%d\n", dc->rd, dc->ra); - tcg_gen_andi_i32(cpu_msr_c, cpu_R[dc->ra], 1); if (dc->rd) { if (op =3D=3D 0x41) @@ -766,11 +724,9 @@ static void dec_bit(DisasContext *dc) } break; case 0x60: - LOG_DIS("ext8s r%d r%d\n", dc->rd, dc->ra); tcg_gen_ext8s_i32(cpu_R[dc->rd], cpu_R[dc->ra]); break; case 0x61: - LOG_DIS("ext16s r%d r%d\n", dc->rd, dc->ra); tcg_gen_ext16s_i32(cpu_R[dc->rd], cpu_R[dc->ra]); break; case 0x64: @@ -778,12 +734,10 @@ static void dec_bit(DisasContext *dc) case 0x74: case 0x76: /* wdc. */ - LOG_DIS("wdc r%d\n", dc->ra); trap_userspace(dc, true); break; case 0x68: /* wic. */ - LOG_DIS("wic r%d\n", dc->ra); trap_userspace(dc, true); break; case 0xe0: @@ -796,12 +750,10 @@ static void dec_bit(DisasContext *dc) break; case 0x1e0: /* swapb */ - LOG_DIS("swapb r%d r%d\n", dc->rd, dc->ra); tcg_gen_bswap32_i32(cpu_R[dc->rd], cpu_R[dc->ra]); break; case 0x1e2: /*swaph */ - LOG_DIS("swaph r%d r%d\n", dc->rd, dc->ra); tcg_gen_rotri_i32(cpu_R[dc->rd], cpu_R[dc->ra], 16); break; default: @@ -824,7 +776,6 @@ static inline void sync_jmpstate(DisasContext *dc) =20 static void dec_imm(DisasContext *dc) { - LOG_DIS("imm %x\n", dc->imm << 16); tcg_gen_movi_i32(cpu_imm, (dc->imm << 16)); dc->tb_flags |=3D IMM_FLAG; dc->clear_imm =3D 0; @@ -928,10 +879,6 @@ static void dec_load(DisasContext *dc) return; } =20 - LOG_DIS("l%d%s%s%s%s\n", size, dc->type_b ? "i" : "", rev ? "r" : "", - ex ? "x" : "", - ea ? "ea" : ""); - t_sync_flags(dc); addr =3D tcg_temp_new(); compute_ldst_addr(dc, ea, addr); @@ -1039,9 +986,6 @@ static void dec_store(DisasContext *dc) =20 trap_userspace(dc, ea); =20 - LOG_DIS("s%d%s%s%s%s\n", size, dc->type_b ? "i" : "", rev ? "r" : "", - ex ? "x" : "", - ea ? "ea" : ""); t_sync_flags(dc); /* If we get a fault on a dslot, the jmpstate better be in sync. */ sync_jmpstate(dc); @@ -1184,7 +1128,6 @@ static void dec_bcc(DisasContext *dc) =20 cc =3D EXTRACT_FIELD(dc->ir, 21, 23); dslot =3D dc->ir & (1 << 25); - LOG_DIS("bcc%s r%d %x\n", dslot ? "d" : "", dc->ra, dc->imm); =20 dc->delayed_branch =3D 1; if (dslot) { @@ -1217,8 +1160,6 @@ static void dec_br(DisasContext *dc) if (mbar =3D=3D 2 && dc->imm =3D=3D 4) { uint16_t mbar_imm =3D dc->rd; =20 - LOG_DIS("mbar %d\n", mbar_imm); - /* Data access memory barrier. */ if ((mbar_imm & 2) =3D=3D 0) { tcg_gen_mb(TCG_BAR_SC | TCG_MO_ALL); @@ -1228,8 +1169,6 @@ static void dec_br(DisasContext *dc) if (mbar_imm & 16) { TCGv_i32 tmp_1; =20 - LOG_DIS("sleep\n"); - if (trap_userspace(dc, true)) { /* Sleep is a privileged instruction. */ return; @@ -1253,11 +1192,6 @@ static void dec_br(DisasContext *dc) return; } =20 - LOG_DIS("br%s%s%s%s imm=3D%x\n", - abs ? "a" : "", link ? "l" : "", - dc->type_b ? "i" : "", dslot ? "d" : "", - dc->imm); - dc->delayed_branch =3D 1; if (dslot) { dec_setup_dslot(dc); @@ -1363,16 +1297,12 @@ static void dec_rts(DisasContext *dc) dec_setup_dslot(dc); =20 if (i_bit) { - LOG_DIS("rtid ir=3D%x\n", dc->ir); dc->tb_flags |=3D DRTI_FLAG; } else if (b_bit) { - LOG_DIS("rtbd ir=3D%x\n", dc->ir); dc->tb_flags |=3D DRTB_FLAG; } else if (e_bit) { - LOG_DIS("rted ir=3D%x\n", dc->ir); dc->tb_flags |=3D DRTE_FLAG; - } else - LOG_DIS("rts ir=3D%x\n", dc->ir); + } =20 dc->jmp =3D JMP_INDIRECT; tcg_gen_movi_i32(cpu_btaken, 1); @@ -1505,9 +1435,6 @@ static void dec_stream(DisasContext *dc) TCGv_i32 t_id, t_ctrl; int ctrl; =20 - LOG_DIS("%s%s imm=3D%x\n", dc->rd ? "get" : "put", - dc->type_b ? "" : "d", dc->imm); - if (trap_userspace(dc, true)) { return; } @@ -1565,7 +1492,6 @@ static inline void decode(DisasContext *dc, uint32_t = ir) int i; =20 dc->ir =3D ir; - LOG_DIS("%8.8x\t", dc->ir); =20 if (ir =3D=3D 0) { trap_illegal(dc, dc->cpu->cfg.opcode_0_illegal); @@ -1744,10 +1670,8 @@ static void mb_tr_tb_stop(DisasContextBase *dcb, CPU= State *cs) =20 static void mb_tr_disas_log(const DisasContextBase *dcb, CPUState *cs) { -#ifdef DEBUG_DISAS qemu_log("IN: %s\n", lookup_symbol(dcb->pc_first)); log_target_disas(cs, dcb->pc_first, dcb->tb->size); -#endif } =20 static const TranslatorOps mb_tr_ops =3D { --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891000; cv=none; d=zohomail.com; s=zohoarc; b=B8A77eRxZ0uloVZN1EFJl0vbzv7TeDIfL/xPp9QhFVHtpbu+RV7dDF24+mVLiFSuu5ofdIq/+pZQxeAC2n/AoGDPk9FdoboSQVD9u4AmRtbVGlQ2Kxbny7hOMFhsqDOBCZLHViAl+16kmeCSjxLPsIUCixJtqYB6pPDitzWzmsI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891000; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=DDk0bD1wuoNSUreN9eTM7AkDLzVuLK9UdGTmJ9+LUls=; b=htiT25H77OFgHc1C5cKeTgOmG2dOck4ERcCoARYJybWz+BVAdBfrI4dzQA5/ed9GV2l46IBdq7TA1lMLGYArUu1DXjk03js/DAKb7AeFRnMr+eg//tqCS3rwlyLc9rrxrQMDRiVguPhQwIBoFpLE/7jaOMTnEecYuPjeIozu7Os= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891000149743.5454227392655; Mon, 31 Aug 2020 09:23:20 -0700 (PDT) Received: from localhost ([::1]:53342 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmaV-00051i-8C for importer@patchew.org; Mon, 31 Aug 2020 12:23:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34078) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKb-0004qY-LY for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:53 -0400 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]:39594) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKZ-00062C-Ip for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:53 -0400 Received: by mail-pg1-x52e.google.com with SMTP id v15so833512pgh.6 for ; Mon, 31 Aug 2020 09:06:51 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=DDk0bD1wuoNSUreN9eTM7AkDLzVuLK9UdGTmJ9+LUls=; b=Y1GBuBP/xuhOAwUAv329oFgeSiH7DvMzkYzx6T0sn0nLSryjfboz52fuE29n1SD96x ZQRkh/urqejnsT3Im3thSxEezS/IQO3fsGR2tEqU+p15cK5qFACMiTrRRBkdEQj/c4Gy a7H2M80EDwZJQCaCGSoeSLzYNea8AEc/xlp4HIAS+CmqVqnb/RH+LJsHoGsMCVwf5vnA 8b0hhf512QvxmLIcxpp2f6bUphtwVfdQPA5OeztRkv9ZRwYjgyrMd+knXTaG7DFe+PYG v5VzF4jAA7CRjihq8CuKj+C3Q968oWOSCAK8tk0t8zDo+c5JzUfKbCu+vybOToAm78Kv 45NA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=DDk0bD1wuoNSUreN9eTM7AkDLzVuLK9UdGTmJ9+LUls=; b=nL3aBDisirbmT19eqHsV62zVGrhmhf0kZFNKfyrAoDF5gzzQotkaRjX1aa6ScHUh0/ 15lI2JytHeDUSVOM7CaVouXB+eXiGYRrssA0kSKA7dAkpxfSPXqV0BSUy9SkhmM+wvvW x4IbRNzBmjvmn5+AKVr+Zyf84BMhCRDaTCpYM49prx07SbtHj16eGdujhJAhBrlKqwvJ swHf4TipjqCtjOekojo/X/FIIIll4qxiNKxfLSwH/MCUTLfLHBZiZLEhTCPRkdmIFtzQ mlIzSJvEacEXbeGn0P2qwc9ergpAw3Ulgc+ATxmT9zOj+TBOi8n5OJm8zROGvO9YZrsf oOKQ== X-Gm-Message-State: AOAM5322I5l3YInCVUV413GIFRYXBLN99UqtoP+uWDWgjfqu5JS0Rrbw xRZI7E/vR1uYR7UXxYNHriaQQrMrw5LEfQ== X-Google-Smtp-Source: ABdhPJw7u34+l+onBgVm730eNzW4zoJ6qoDLKeGrnB0kBMVhUVBUYBm819ALXYvG0YJk2Z/cLiNk7g== X-Received: by 2002:a63:b10a:: with SMTP id r10mr1785727pgf.431.1598890009765; Mon, 31 Aug 2020 09:06:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 34/76] target/microblaze: Ensure imm constant is always available Date: Mon, 31 Aug 2020 09:05:19 -0700 Message-Id: <20200831160601.833692-35-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52e; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52e.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Include the env->imm value in the TB values when IMM_FLAG is set. This means that we can always reconstruct the complete 32-bit imm. Discard env_imm when its contents can no longer be accessed. Fix user-mode checks for BRK/BRKI, which depend on IMM. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/cpu.h | 2 +- target/microblaze/translate.c | 111 ++++++++++++++++++++-------------- 2 files changed, 67 insertions(+), 46 deletions(-) diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index 7066878ac7..013858b8e0 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -374,9 +374,9 @@ static inline void cpu_get_tb_cpu_state(CPUMBState *env= , target_ulong *pc, target_ulong *cs_base, uint32_t *f= lags) { *pc =3D env->pc; - *cs_base =3D 0; *flags =3D (env->iflags & IFLAGS_TB_MASK) | (env->msr & (MSR_UM | MSR_VM | MSR_EE)); + *cs_base =3D (*flags & IMM_FLAG ? env->imm : 0); } =20 #if !defined(CONFIG_USER_ONLY) diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 133ec24870..65ce8f3cd6 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -61,6 +61,7 @@ typedef struct DisasContext { /* Decoder. */ int type_b; uint32_t ir; + uint32_t ext_imm; uint8_t opcode; uint8_t rd, ra, rb; uint16_t imm; @@ -169,24 +170,23 @@ static bool trap_userspace(DisasContext *dc, bool con= d) return cond_user; } =20 -/* True if ALU operand b is a small immediate that may deserve - faster treatment. */ -static inline int dec_alu_op_b_is_small_imm(DisasContext *dc) +static int32_t dec_alu_typeb_imm(DisasContext *dc) { - /* Immediate insn without the imm prefix ? */ - return dc->type_b && !(dc->tb_flags & IMM_FLAG); + tcg_debug_assert(dc->type_b); + if (dc->tb_flags & IMM_FLAG) { + return dc->ext_imm | dc->imm; + } else { + return (int16_t)dc->imm; + } } =20 static inline TCGv_i32 *dec_alu_op_b(DisasContext *dc) { if (dc->type_b) { - if (dc->tb_flags & IMM_FLAG) - tcg_gen_ori_i32(cpu_imm, cpu_imm, dc->imm); - else - tcg_gen_movi_i32(cpu_imm, (int32_t)((int16_t)dc->imm)); + tcg_gen_movi_i32(cpu_imm, dec_alu_typeb_imm(dc)); return &cpu_imm; - } else - return &cpu_R[dc->rb]; + } + return &cpu_R[dc->rb]; } =20 static void dec_add(DisasContext *dc) @@ -776,14 +776,14 @@ static inline void sync_jmpstate(DisasContext *dc) =20 static void dec_imm(DisasContext *dc) { - tcg_gen_movi_i32(cpu_imm, (dc->imm << 16)); + dc->ext_imm =3D dc->imm << 16; + tcg_gen_movi_i32(cpu_imm, dc->ext_imm); dc->tb_flags |=3D IMM_FLAG; dc->clear_imm =3D 0; } =20 static inline void compute_ldst_addr(DisasContext *dc, bool ea, TCGv t) { - bool extimm =3D dc->tb_flags & IMM_FLAG; /* Should be set to true if r1 is used by loadstores. */ bool stackprot =3D false; TCGv_i32 t32; @@ -836,11 +836,7 @@ static inline void compute_ldst_addr(DisasContext *dc,= bool ea, TCGv t) } /* Immediate. */ t32 =3D tcg_temp_new_i32(); - if (!extimm) { - tcg_gen_addi_i32(t32, cpu_R[dc->ra], (int16_t)dc->imm); - } else { - tcg_gen_add_i32(t32, cpu_R[dc->ra], *(dec_alu_op_b(dc))); - } + tcg_gen_addi_i32(t32, cpu_R[dc->ra], dec_alu_typeb_imm(dc)); tcg_gen_extu_i32_tl(t, t32); tcg_temp_free_i32(t32); =20 @@ -1134,15 +1130,13 @@ static void dec_bcc(DisasContext *dc) dec_setup_dslot(dc); } =20 - if (dec_alu_op_b_is_small_imm(dc)) { - int32_t offset =3D (int32_t)((int16_t)dc->imm); /* sign-extend. */ - - tcg_gen_movi_i32(cpu_btarget, dc->base.pc_next + offset); + if (dc->type_b) { dc->jmp =3D JMP_DIRECT_CC; - dc->jmp_pc =3D dc->base.pc_next + offset; + dc->jmp_pc =3D dc->base.pc_next + dec_alu_typeb_imm(dc); + tcg_gen_movi_i32(cpu_btarget, dc->jmp_pc); } else { dc->jmp =3D JMP_INDIRECT; - tcg_gen_addi_i32(cpu_btarget, *dec_alu_op_b(dc), dc->base.pc_next); + tcg_gen_addi_i32(cpu_btarget, cpu_R[dc->rb], dc->base.pc_next); } eval_cc(dc, cc, cpu_btaken, cpu_R[dc->ra]); } @@ -1192,38 +1186,63 @@ static void dec_br(DisasContext *dc) return; } =20 + if (abs && link && !dslot) { + if (dc->type_b) { + /* BRKI */ + uint32_t imm =3D dec_alu_typeb_imm(dc); + if (trap_userspace(dc, imm !=3D 8 && imm !=3D 0x18)) { + return; + } + } else { + /* BRK */ + if (trap_userspace(dc, true)) { + return; + } + } + } + dc->delayed_branch =3D 1; if (dslot) { dec_setup_dslot(dc); } - if (link && dc->rd) + if (link && dc->rd) { tcg_gen_movi_i32(cpu_R[dc->rd], dc->base.pc_next); + } =20 - dc->jmp =3D JMP_INDIRECT; if (abs) { - tcg_gen_movi_i32(cpu_btaken, 1); - tcg_gen_mov_i32(cpu_btarget, *(dec_alu_op_b(dc))); - if (link && !dslot) { - if (!(dc->tb_flags & IMM_FLAG) && - (dc->imm =3D=3D 8 || dc->imm =3D=3D 0x18)) { + if (dc->type_b) { + uint32_t dest =3D dec_alu_typeb_imm(dc); + + dc->jmp =3D JMP_DIRECT; + dc->jmp_pc =3D dest; + tcg_gen_movi_i32(cpu_btarget, dest); + if (link && !dslot) { + switch (dest) { + case 8: + case 0x18: + gen_raise_exception_sync(dc, EXCP_BREAK); + break; + case 0: + gen_raise_exception_sync(dc, EXCP_DEBUG); + break; + } + } + } else { + dc->jmp =3D JMP_INDIRECT; + tcg_gen_mov_i32(cpu_btarget, cpu_R[dc->rb]); + if (link && !dslot) { gen_raise_exception_sync(dc, EXCP_BREAK); } - if (dc->imm =3D=3D 0) { - if (trap_userspace(dc, true)) { - return; - } - gen_raise_exception_sync(dc, EXCP_DEBUG); - } } + } else if (dc->type_b) { + dc->jmp =3D JMP_DIRECT; + dc->jmp_pc =3D dc->base.pc_next + dec_alu_typeb_imm(dc); + tcg_gen_movi_i32(cpu_btarget, dc->jmp_pc); } else { - if (dec_alu_op_b_is_small_imm(dc)) { - dc->jmp =3D JMP_DIRECT; - dc->jmp_pc =3D dc->base.pc_next + (int32_t)((int16_t)dc->imm); - } else { - tcg_gen_movi_i32(cpu_btaken, 1); - tcg_gen_addi_i32(cpu_btarget, *dec_alu_op_b(dc), dc->base.pc_n= ext); - } + dc->jmp =3D JMP_INDIRECT; + tcg_gen_addi_i32(cpu_btarget, cpu_R[dc->rb], dc->base.pc_next); } + tcg_gen_movi_i32(cpu_btaken, 1); } =20 static inline void do_rti(DisasContext *dc) @@ -1529,6 +1548,7 @@ static void mb_tr_init_disas_context(DisasContextBase= *dcb, CPUState *cs) dc->jmp =3D dc->delayed_branch ? JMP_INDIRECT : JMP_NOJMP; dc->cpustate_changed =3D 0; dc->abort_at_next_insn =3D 0; + dc->ext_imm =3D dc->base.tb->cs_base; =20 bound =3D -(dc->base.pc_first | TARGET_PAGE_MASK) / 4; dc->base.max_insns =3D MIN(dc->base.max_insns, bound); @@ -1573,8 +1593,9 @@ static void mb_tr_translate_insn(DisasContextBase *dc= b, CPUState *cs) =20 dc->clear_imm =3D 1; decode(dc, cpu_ldl_code(env, dc->base.pc_next)); - if (dc->clear_imm) { + if (dc->clear_imm && (dc->tb_flags & IMM_FLAG)) { dc->tb_flags &=3D ~IMM_FLAG; + tcg_gen_discard_i32(cpu_imm); } dc->base.pc_next +=3D 4; =20 --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891000; cv=none; d=zohomail.com; s=zohoarc; b=BpdXhRcmfFD6rHhaGCHT0VsJi0z22KMY+g5BxOXLj1ObeAgHMHutRCGrUxhDie8TsRbJnFFfKkdSrXO0cF6HHc7G965TVCK2hPHPOpPcZantPaajH0aUPnMQ3G4iP42BbN+Mgnpequ+ontv229TgaiYZA4QeAIdYlKLD95QPskk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891000; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=4WVvMqAD78oNbWSebHTpYzLYCLnpF5xHe/3shPVHdfE=; b=lU9FpPFqxYT7fpJmbQiVMFWev19cWlqYm/FPQX10ySMBcJs4zHTjac+2vMBobIk+pmI8+HhKGm+ny9OSpD36kFPyadhdctlps4F9ivRNvgrJxuCUPt6BNyY3WFFho0mS99DZ/7ZaaYxu5Qw07QslHgT6uQ/m1HCl/g7Kben7vrU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891000324850.0441672942743; Mon, 31 Aug 2020 09:23:20 -0700 (PDT) Received: from localhost ([::1]:53350 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmaV-00051n-EI for importer@patchew.org; Mon, 31 Aug 2020 12:23:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34086) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKc-0004td-TL for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:54 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]:33304) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKa-00062K-Pz for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:54 -0400 Received: by mail-pl1-x634.google.com with SMTP id h2so3257164plr.0 for ; Mon, 31 Aug 2020 09:06:52 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4WVvMqAD78oNbWSebHTpYzLYCLnpF5xHe/3shPVHdfE=; b=QTHtXdGy2iVUcaumxu4SBJlBPqlteNQpRMWOqRE4TXv1J1YI1IgiFgSYm/HHH1GpG0 3DcoutpxqcEd53DWPc7MnkGHFWNFyDHNCfgtbuFHDUFqA57I++V+NElScpn6JY865yqe yN4fX3y2CUWo9DnaHOrBPD4/d/eUnPD9hDAGrezR0DTCcT7VDG4HxGT1I7UOqzYpCpJd TWxG3CXPX8t5BQLOwv7kbKFzvL17INAmpiUhk4fVewCsZBjKOD3OykimeM0Ea+fduwTV J6yDBBLayK5mbyvddu9V55bV+iprwOcgDL84Q9WFvAxMNrqZwO/H5mpThO1LS2iBX8t9 omyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4WVvMqAD78oNbWSebHTpYzLYCLnpF5xHe/3shPVHdfE=; b=Nx89meKhIlD7AOBtRM6nNEvuHmJBKnrG76GyMwSrMFdoFe/zjC81gBk7x2MG0fjZAG mSkHfPsiKi9m6LFQMCGSyz8Vf22963xhT6o5yCwwPFzeTzo1qfp0LA8JhuUCcV0Zbxk6 eYADAinK412Tp4CSXpu4buFZ/CBu376E79WVoBrBxaritOX/GKuIF9OzkULTHY2lP4BP pp65OyMKbwj8uBM3q1PggPLFmh1GuFSwK7CbA+GeFCfg9Xa1usTCd/4apk5XdgINfEah /5bn72rdrG/pjhGNTtOPpxMSKM53wMo5ErES8SAwHQNgWEnO3Mjvzcm6pswTX8DzZOqZ MMxg== X-Gm-Message-State: AOAM533dLHQ+S927Tmfwsa0AfWWhFVoSQQ8hD++zGalOsbD1m0MCIE5m IqyOcAQA+UmN6TPNC/BgcHIxy9l9avskbg== X-Google-Smtp-Source: ABdhPJxWjUdm0svKrbKTzKTuVl5MNG9EWFm36ehyNio88GGCGf2ucyg9TpjmBJ+l5KL83N1Pvc5DEw== X-Received: by 2002:a17:90b:4b89:: with SMTP id lr9mr92919pjb.190.1598890010991; Mon, 31 Aug 2020 09:06:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 35/76] target/microblaze: Add decodetree infrastructure Date: Mon, 31 Aug 2020 09:05:20 -0700 Message-Id: <20200831160601.833692-36-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The new interface is a stub that recognizes no instructions. It falls back to the old decoder for all instructions. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/insns.decode | 18 ++++++++++++++++++ target/microblaze/translate.c | 11 +++++++++-- target/microblaze/meson.build | 3 +++ 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 target/microblaze/insns.decode diff --git a/target/microblaze/insns.decode b/target/microblaze/insns.decode new file mode 100644 index 0000000000..1ed9ca0731 --- /dev/null +++ b/target/microblaze/insns.decode @@ -0,0 +1,18 @@ +# +# MicroBlaze instruction decode definitions. +# +# Copyright (c) 2020 Richard Henderson +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . +# diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 65ce8f3cd6..e624093745 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -81,6 +81,9 @@ typedef struct DisasContext { int abort_at_next_insn; } DisasContext; =20 +/* Include the auto-generated decoder. */ +#include "decode-insns.c.inc" + static inline void t_sync_flags(DisasContext *dc) { /* Synch the tb dependent flags between translator and runtime. */ @@ -1506,7 +1509,7 @@ static struct decoder_info { {{0, 0}, dec_null} }; =20 -static inline void decode(DisasContext *dc, uint32_t ir) +static void old_decode(DisasContext *dc, uint32_t ir) { int i; =20 @@ -1584,6 +1587,7 @@ static void mb_tr_translate_insn(DisasContextBase *dc= b, CPUState *cs) { DisasContext *dc =3D container_of(dcb, DisasContext, base); CPUMBState *env =3D cs->env_ptr; + uint32_t ir; =20 /* TODO: This should raise an exception, not terminate qemu. */ if (dc->base.pc_next & 3) { @@ -1592,7 +1596,10 @@ static void mb_tr_translate_insn(DisasContextBase *d= cb, CPUState *cs) } =20 dc->clear_imm =3D 1; - decode(dc, cpu_ldl_code(env, dc->base.pc_next)); + ir =3D cpu_ldl_code(env, dc->base.pc_next); + if (!decode(dc, ir)) { + old_decode(dc, ir); + } if (dc->clear_imm && (dc->tb_flags & IMM_FLAG)) { dc->tb_flags &=3D ~IMM_FLAG; tcg_gen_discard_i32(cpu_imm); diff --git a/target/microblaze/meson.build b/target/microblaze/meson.build index b8fe4afe61..639c3f73a8 100644 --- a/target/microblaze/meson.build +++ b/target/microblaze/meson.build @@ -1,4 +1,7 @@ +gen =3D decodetree.process('insns.decode') + microblaze_ss =3D ss.source_set() +microblaze_ss.add(gen) microblaze_ss.add(files( 'cpu.c', 'gdbstub.c', --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890785; cv=none; d=zohomail.com; s=zohoarc; b=jZrmOMhkvkDumcTygwSL/jizBdVWZ9u6++PhD8OTtyb8feT1mzjLnpPR9/9C8TkS3+8WD1O3VE/LI1xD6CBUEX+fnUv/bjEk7slDLQMK/TwWZgxvRpAGiFEL1Kt209ADDDdvq9/wq9DP/+YiVV18URISxh1FEHAz2V2Dam67EFM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890785; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=VmZy4CC4Agx9NCtoKuwwK/fciLRRLjW+EqgcQ2NqDr4=; b=efQ6zQKoVoFBl1jmkpNxIGnibiUPiXYd0RRLmRrp8RirrEgUhvWIN4c3eewkTmOQ7/HC1nZXDl1zQ1VFngTjfSmrDDuuCXojnCumDNYue6sFm5sHI1yF0Qn76UQdrzS91ZVJYYCCJJA3vZ8jgi+JC577JIDeY0rpzT9EhWtGnx4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890785734586.6643762208614; Mon, 31 Aug 2020 09:19:45 -0700 (PDT) Received: from localhost ([::1]:60648 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmX2-00055D-Sd for importer@patchew.org; Mon, 31 Aug 2020 12:19:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34138) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKf-00051U-Vu for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:58 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]:38709) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKd-00062d-Eh for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:57 -0400 Received: by mail-pl1-x630.google.com with SMTP id t11so3246329plr.5 for ; Mon, 31 Aug 2020 09:06:55 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=VmZy4CC4Agx9NCtoKuwwK/fciLRRLjW+EqgcQ2NqDr4=; b=E449g7d+r8CF+mQmmHyn7Y4ZDSyA8MnTGStnXPxlv5Hahzld2awxCU40EQpMQqwLJ+ Jtwe9F/bpWc2L/4ZBQHBeplnNG8lsvfXJh6liRcXqwhABrFGLszDKqgL9XnKporMSWqB kBHBGV4RsA8bIx+77+Y+JOQt2Vgd3S89oMjq56qZ/QKcXjTUkFk4dJNthrFzh4lPqPFp BCK/n8KTX2IUA3ypbv8NR37fAlUJJ21mollhKHdGdd0R2xqX55pbslRMGUUSg9fOB7vZ oOXmwZPu+wNEFJOGVASqJ2NUc0AkzXWNhMskSvxForzlNdQCEqHs4hhM5vbcvD2TDkBy AApw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=VmZy4CC4Agx9NCtoKuwwK/fciLRRLjW+EqgcQ2NqDr4=; b=a2n1C9B7qGixk9ruk/wFsaR8sZ1gDS2wOSqzilnpkE5EKqhrYcRHoqDwnTfnZclFdH KgwCOaY/v7X61zx6+fJPJZv7STret3uDrarH6zfpQje30h37QMpEVR6xr9FUb2znJTsN CbyXYusFqQRzFqDAIP5la6vvE+WtI5S/IZV6qO8lQRrFaQG0OFnuv4b88ybDfJqyI+3g Yr/4sMTlBksyfiUUiM0kQDdqCgxEQJZugvwj/6Sn1oMW09Z7Z2tZOGMYd3VZHL5yhw4/ 5o9FOyg6pGor7YiMev7h0pXqGMs3hTKzKaas/e6kh5ldivCtKSO8cOB/0gAuo06kUiSF gLbg== X-Gm-Message-State: AOAM5325e5vAXfARHUYEhmp6Vtz2p91vN8Qutg9VXKGsTyaHh4ZRBVxz GL1BoL56v8LM9SmxN1JvfB9ALlBeQDET7A== X-Google-Smtp-Source: ABdhPJyZ5SKXLChMHyzFRmGkbgloul+tAhv79ntdLjMKkeaRDc257eWMtsrT+hf4RP0c3kaz9Mq7MQ== X-Received: by 2002:a17:90a:9307:: with SMTP id p7mr71088pjo.105.1598890013296; Mon, 31 Aug 2020 09:06:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 36/76] target/microblaze: Convert dec_add to decodetree Date: Mon, 31 Aug 2020 09:05:21 -0700 Message-Id: <20200831160601.833692-37-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Adds infrastrucure for translation of instructions, which could not be added before their first use. Cache a temporary which represents r0 as the immediate 0 value, or a sink. Move the special case of opcode_0_illegal from old_decode() into decodetree as well, lest this get interpreted as add. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/insns.decode | 24 ++++ target/microblaze/translate.c | 197 ++++++++++++++++++++++++++------- 2 files changed, 178 insertions(+), 43 deletions(-) diff --git a/target/microblaze/insns.decode b/target/microblaze/insns.decode index 1ed9ca0731..5f289a446c 100644 --- a/target/microblaze/insns.decode +++ b/target/microblaze/insns.decode @@ -16,3 +16,27 @@ # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, see . # + +&typea rd ra rb +&typeb rd ra imm + +# Include any IMM prefix in the value reported. +%extimm 0:s16 !function=3Dtypeb_imm + +@typea ...... rd:5 ra:5 rb:5 ... .... .... &typea +@typeb ...... rd:5 ra:5 ................ &typeb imm=3D%exti= mm + +### + +{ + zero 000000 00000 00000 00000 000 0000 0000 + add 000000 ..... ..... ..... 000 0000 0000 @typea +} +addc 000010 ..... ..... ..... 000 0000 0000 @typea +addk 000100 ..... ..... ..... 000 0000 0000 @typea +addkc 000110 ..... ..... ..... 000 0000 0000 @typea + +addi 001000 ..... ..... ................ @typeb +addic 001010 ..... ..... ................ @typeb +addik 001100 ..... ..... ................ @typeb +addikc 001110 ..... ..... ................ @typeb diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index e624093745..de822bd7b7 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -58,6 +58,9 @@ typedef struct DisasContext { DisasContextBase base; MicroBlazeCPU *cpu; =20 + TCGv_i32 r0; + bool r0_set; + /* Decoder. */ int type_b; uint32_t ir; @@ -81,6 +84,14 @@ typedef struct DisasContext { int abort_at_next_insn; } DisasContext; =20 +static int typeb_imm(DisasContext *dc, int x) +{ + if (dc->tb_flags & IMM_FLAG) { + return deposit32(dc->ext_imm, 0, 16, x); + } + return x; +} + /* Include the auto-generated decoder. */ #include "decode-insns.c.inc" =20 @@ -176,11 +187,7 @@ static bool trap_userspace(DisasContext *dc, bool cond) static int32_t dec_alu_typeb_imm(DisasContext *dc) { tcg_debug_assert(dc->type_b); - if (dc->tb_flags & IMM_FLAG) { - return dc->ext_imm | dc->imm; - } else { - return (int16_t)dc->imm; - } + return typeb_imm(dc, (int16_t)dc->imm); } =20 static inline TCGv_i32 *dec_alu_op_b(DisasContext *dc) @@ -192,44 +199,146 @@ static inline TCGv_i32 *dec_alu_op_b(DisasContext *d= c) return &cpu_R[dc->rb]; } =20 -static void dec_add(DisasContext *dc) +static TCGv_i32 reg_for_read(DisasContext *dc, int reg) { - unsigned int k, c; - TCGv_i32 cf; - - k =3D dc->opcode & 4; - c =3D dc->opcode & 2; - - /* Take care of the easy cases first. */ - if (k) { - /* k - keep carry, no need to update MSR. */ - /* If rd =3D=3D r0, it's a nop. */ - if (dc->rd) { - tcg_gen_add_i32(cpu_R[dc->rd], cpu_R[dc->ra], *(dec_alu_op_b(d= c))); - - if (c) { - /* c - Add carry into the result. */ - tcg_gen_add_i32(cpu_R[dc->rd], cpu_R[dc->rd], cpu_msr_c); - } + if (likely(reg !=3D 0)) { + return cpu_R[reg]; + } + if (!dc->r0_set) { + if (dc->r0 =3D=3D NULL) { + dc->r0 =3D tcg_temp_new_i32(); } - return; + tcg_gen_movi_i32(dc->r0, 0); + dc->r0_set =3D true; + } + return dc->r0; +} + +static TCGv_i32 reg_for_write(DisasContext *dc, int reg) +{ + if (likely(reg !=3D 0)) { + return cpu_R[reg]; + } + if (dc->r0 =3D=3D NULL) { + dc->r0 =3D tcg_temp_new_i32(); + } + return dc->r0; +} + +static bool do_typea(DisasContext *dc, arg_typea *arg, bool side_effects, + void (*fn)(TCGv_i32, TCGv_i32, TCGv_i32)) +{ + TCGv_i32 rd, ra, rb; + + if (arg->rd =3D=3D 0 && !side_effects) { + return true; } =20 - /* From now on, we can assume k is zero. So we need to update MSR. */ - /* Extract carry. */ - cf =3D tcg_temp_new_i32(); - if (c) { - tcg_gen_mov_i32(cf, cpu_msr_c); - } else { - tcg_gen_movi_i32(cf, 0); + rd =3D reg_for_write(dc, arg->rd); + ra =3D reg_for_read(dc, arg->ra); + rb =3D reg_for_read(dc, arg->rb); + fn(rd, ra, rb); + return true; +} + +static bool do_typeb_imm(DisasContext *dc, arg_typeb *arg, bool side_effec= ts, + void (*fni)(TCGv_i32, TCGv_i32, int32_t)) +{ + TCGv_i32 rd, ra; + + if (arg->rd =3D=3D 0 && !side_effects) { + return true; } =20 - gen_helper_carry(cpu_msr_c, cpu_R[dc->ra], *(dec_alu_op_b(dc)), cf); - if (dc->rd) { - tcg_gen_add_i32(cpu_R[dc->rd], cpu_R[dc->ra], *(dec_alu_op_b(dc))); - tcg_gen_add_i32(cpu_R[dc->rd], cpu_R[dc->rd], cf); + rd =3D reg_for_write(dc, arg->rd); + ra =3D reg_for_read(dc, arg->ra); + fni(rd, ra, arg->imm); + return true; +} + +static bool do_typeb_val(DisasContext *dc, arg_typeb *arg, bool side_effec= ts, + void (*fn)(TCGv_i32, TCGv_i32, TCGv_i32)) +{ + TCGv_i32 rd, ra, imm; + + if (arg->rd =3D=3D 0 && !side_effects) { + return true; } - tcg_temp_free_i32(cf); + + rd =3D reg_for_write(dc, arg->rd); + ra =3D reg_for_read(dc, arg->ra); + imm =3D tcg_const_i32(arg->imm); + + fn(rd, ra, imm); + + tcg_temp_free_i32(imm); + return true; +} + +#define DO_TYPEA(NAME, SE, FN) \ + static bool trans_##NAME(DisasContext *dc, arg_typea *a) \ + { return do_typea(dc, a, SE, FN); } + +#define DO_TYPEBI(NAME, SE, FNI) \ + static bool trans_##NAME(DisasContext *dc, arg_typeb *a) \ + { return do_typeb_imm(dc, a, SE, FNI); } + +#define DO_TYPEBV(NAME, SE, FN) \ + static bool trans_##NAME(DisasContext *dc, arg_typeb *a) \ + { return do_typeb_val(dc, a, SE, FN); } + +/* No input carry, but output carry. */ +static void gen_add(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) +{ + TCGv_i32 zero =3D tcg_const_i32(0); + + tcg_gen_add2_i32(out, cpu_msr_c, ina, zero, inb, zero); + + tcg_temp_free_i32(zero); +} + +/* Input and output carry. */ +static void gen_addc(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) +{ + TCGv_i32 zero =3D tcg_const_i32(0); + TCGv_i32 tmp =3D tcg_temp_new_i32(); + + tcg_gen_add2_i32(tmp, cpu_msr_c, ina, zero, cpu_msr_c, zero); + tcg_gen_add2_i32(out, cpu_msr_c, tmp, cpu_msr_c, inb, zero); + + tcg_temp_free_i32(tmp); + tcg_temp_free_i32(zero); +} + +/* Input carry, but no output carry. */ +static void gen_addkc(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) +{ + tcg_gen_add_i32(out, ina, inb); + tcg_gen_add_i32(out, out, cpu_msr_c); +} + +DO_TYPEA(add, true, gen_add) +DO_TYPEA(addc, true, gen_addc) +DO_TYPEA(addk, false, tcg_gen_add_i32) +DO_TYPEA(addkc, true, gen_addkc) + +DO_TYPEBV(addi, true, gen_add) +DO_TYPEBV(addic, true, gen_addc) +DO_TYPEBI(addik, false, tcg_gen_addi_i32) +DO_TYPEBV(addikc, true, gen_addkc) + +static bool trans_zero(DisasContext *dc, arg_zero *arg) +{ + /* If opcode_0_illegal, trap. */ + if (dc->cpu->cfg.opcode_0_illegal) { + trap_illegal(dc, true); + return true; + } + /* + * Otherwise, this is "add r0, r0, r0". + * Continue to trans_add so that MSR[C] gets cleared. + */ + return false; } =20 static void dec_sub(DisasContext *dc) @@ -1488,7 +1597,6 @@ static struct decoder_info { }; void (*dec)(DisasContext *dc); } decinfo[] =3D { - {DEC_ADD, dec_add}, {DEC_SUB, dec_sub}, {DEC_AND, dec_and}, {DEC_XOR, dec_xor}, @@ -1515,12 +1623,6 @@ static void old_decode(DisasContext *dc, uint32_t ir) =20 dc->ir =3D ir; =20 - if (ir =3D=3D 0) { - trap_illegal(dc, dc->cpu->cfg.opcode_0_illegal); - /* Don't decode nop/zero instructions any further. */ - return; - } - /* bit 2 seems to indicate insn type. */ dc->type_b =3D ir & (1 << 29); =20 @@ -1552,6 +1654,8 @@ static void mb_tr_init_disas_context(DisasContextBase= *dcb, CPUState *cs) dc->cpustate_changed =3D 0; dc->abort_at_next_insn =3D 0; dc->ext_imm =3D dc->base.tb->cs_base; + dc->r0 =3D NULL; + dc->r0_set =3D false; =20 bound =3D -(dc->base.pc_first | TARGET_PAGE_MASK) / 4; dc->base.max_insns =3D MIN(dc->base.max_insns, bound); @@ -1600,6 +1704,13 @@ static void mb_tr_translate_insn(DisasContextBase *d= cb, CPUState *cs) if (!decode(dc, ir)) { old_decode(dc, ir); } + + if (dc->r0) { + tcg_temp_free_i32(dc->r0); + dc->r0 =3D NULL; + dc->r0_set =3D false; + } + if (dc->clear_imm && (dc->tb_flags & IMM_FLAG)) { dc->tb_flags &=3D ~IMM_FLAG; tcg_gen_discard_i32(cpu_imm); --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890791; cv=none; d=zohomail.com; s=zohoarc; b=cx42n5aDrhQJ8x+p26sDWsi7OtsntxLZHng+ZgAeErzX/kKcavuib48tMe28xc/sEwCxiVCeJgAOLyrJSCZ1cRWhI2J+RE88WjQ9ch1k/zd/mCRtqA3nongK5Zvf/nCs1E/6XtT2Eb5DUOI4/myWkvyvQwoXq9Li69aPGqvKh2U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890791; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=eN+TJwZQmH9g/Oqdr8zFkz2I/AR8C6M5MJukpRXnGo0=; b=FBTR6RGt9xxsu/0hUaQIyLAxIaB29ZO/NPp3SfEhMPESpcBDLAvWLbp0dRD+MwL9ertPIfjWXij5xPIgygHZ3HbvNB/3iEuYjsvaMWRk2gY5NvR/l10EOQ/3fyf3PzSY4xzu+rcYJzinH1UhqxNFq1DI7UAOHlTXLwTW5dF6Lmc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890791037679.7925942235355; Mon, 31 Aug 2020 09:19:51 -0700 (PDT) Received: from localhost ([::1]:32906 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmX8-0005H5-6d for importer@patchew.org; Mon, 31 Aug 2020 12:19:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34154) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKh-00053x-4F for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:59 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]:54419) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKe-00062l-6a for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:58 -0400 Received: by mail-pj1-x1029.google.com with SMTP id mm21so23101pjb.4 for ; Mon, 31 Aug 2020 09:06:55 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=eN+TJwZQmH9g/Oqdr8zFkz2I/AR8C6M5MJukpRXnGo0=; b=MaM8GbIJW5jy/uI7I7d2U1yACDBe14bN8QChoXoSAhgaxYUyu3UoOhYanF1MypuNEJ CVUXrQqv5scMIUO4fE+AxnIJawjk2mYnidBCmaBlb/bkr0cAtgor4x6tZGWD4577tSuG jrZKCCPxyCzpDEx8iFkTpqv0SsO70dQRZNLSEbEHB7O9AQuUzIA77SowW3nq9JVmxbOD CBS+CPjCdXTKTtSqhh/BNfwdkS5cyiEqBoLKlXpJxOlhMj+ZOcioYJOGa+skOeTIhLtV xX3jQIOgRM/afgMvaMcQ/fCavdwt0lbMN8IiT12aF6qB+KMeQXELkupxoDw7EpIWiajw liQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=eN+TJwZQmH9g/Oqdr8zFkz2I/AR8C6M5MJukpRXnGo0=; b=pNlcebVPB6BZ+OJ3ZRL86wk9WlkPwoJFG1H/G7Jt9vOBHDRfmN+SDFNARwUcxU3Ul4 JLf0/Xko8ED869z+KDGBZnj+eZDjz3kKtsw7c/1RRjmOZD8y9dhDRcxdM/AfvD/B9gBF hwUDbu2p5oWVt5f1epk6B/fXyn++NAtUxlUJMNyZdEGXY+zgWKvyLes/5+YOzkLX9TZL xqPrTQiLYPlGW1VWZzCI/pqo2h3s4SDYLTrFF/LnoIhLDBvG9FINA1B4I57JjtD+JW3O mgEgqE0M7fpHxZ7Y0jdBDyawaf9x49/N15sQk0+p9l0jyvJwx9MAV5IIx0xshyNKbyYY JxzA== X-Gm-Message-State: AOAM5326UKt5/F4ejrzST9XB3MJqxkxB7QMp+TjoOzoD9IIzM1V4ibRF lNCVdSfkDiSw4suMJSyeonz+H0GW76lPAQ== X-Google-Smtp-Source: ABdhPJxtjKSqFMiDG+4wWCqI6AYUroJAh6ouL8JJzcF7V4p+6RcKliBYgU3AeIQtGMRfFwaRBOsV+g== X-Received: by 2002:a17:90a:e7c8:: with SMTP id kb8mr99383pjb.104.1598890014389; Mon, 31 Aug 2020 09:06:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 37/76] target/microblaze: Convert dec_sub to decodetree Date: Mon, 31 Aug 2020 09:05:22 -0700 Message-Id: <20200831160601.833692-38-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1029.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Use tcg_gen_add2_i32 for computing carry. This removes the last use of helper_carry, so remove that. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/helper.h | 1 - target/microblaze/insns.decode | 13 ++++ target/microblaze/op_helper.c | 16 ----- target/microblaze/translate.c | 110 ++++++++++++++++----------------- 4 files changed, 65 insertions(+), 75 deletions(-) diff --git a/target/microblaze/helper.h b/target/microblaze/helper.h index 9309142f8d..988abf7661 100644 --- a/target/microblaze/helper.h +++ b/target/microblaze/helper.h @@ -1,5 +1,4 @@ DEF_HELPER_FLAGS_2(raise_exception, TCG_CALL_NO_WG, noreturn, env, i32) -DEF_HELPER_FLAGS_3(carry, TCG_CALL_NO_RWG_SE, i32, i32, i32, i32) DEF_HELPER_2(cmp, i32, i32, i32) DEF_HELPER_2(cmpu, i32, i32, i32) =20 diff --git a/target/microblaze/insns.decode b/target/microblaze/insns.decode index 5f289a446c..a611cc83a7 100644 --- a/target/microblaze/insns.decode +++ b/target/microblaze/insns.decode @@ -40,3 +40,16 @@ addi 001000 ..... ..... ................ = @typeb addic 001010 ..... ..... ................ @typeb addik 001100 ..... ..... ................ @typeb addikc 001110 ..... ..... ................ @typeb + +cmp 000101 ..... ..... ..... 000 0000 0001 @typea +cmpu 000101 ..... ..... ..... 000 0000 0011 @typea + +rsub 000001 ..... ..... ..... 000 0000 0000 @typea +rsubc 000011 ..... ..... ..... 000 0000 0000 @typea +rsubk 000101 ..... ..... ..... 000 0000 0000 @typea +rsubkc 000111 ..... ..... ..... 000 0000 0000 @typea + +rsubi 001001 ..... ..... ................ @typeb +rsubic 001011 ..... ..... ................ @typeb +rsubik 001101 ..... ..... ................ @typeb +rsubikc 001111 ..... ..... ................ @typeb diff --git a/target/microblaze/op_helper.c b/target/microblaze/op_helper.c index decdca0fd8..9bb6a2ad76 100644 --- a/target/microblaze/op_helper.c +++ b/target/microblaze/op_helper.c @@ -69,17 +69,6 @@ void helper_raise_exception(CPUMBState *env, uint32_t in= dex) cpu_loop_exit(cs); } =20 -static inline uint32_t compute_carry(uint32_t a, uint32_t b, uint32_t cin) -{ - uint32_t cout =3D 0; - - if ((b =3D=3D ~0) && cin) - cout =3D 1; - else if ((~0 - a) < (b + cin)) - cout =3D 1; - return cout; -} - uint32_t helper_cmp(uint32_t a, uint32_t b) { uint32_t t; @@ -100,11 +89,6 @@ uint32_t helper_cmpu(uint32_t a, uint32_t b) return t; } =20 -uint32_t helper_carry(uint32_t a, uint32_t b, uint32_t cf) -{ - return compute_carry(a, b, cf); -} - static inline int div_prepare(CPUMBState *env, uint32_t a, uint32_t b) { MicroBlazeCPU *cpu =3D env_archcpu(env); diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index de822bd7b7..0e7d24ddca 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -327,6 +327,58 @@ DO_TYPEBV(addic, true, gen_addc) DO_TYPEBI(addik, false, tcg_gen_addi_i32) DO_TYPEBV(addikc, true, gen_addkc) =20 +DO_TYPEA(cmp, false, gen_helper_cmp) +DO_TYPEA(cmpu, false, gen_helper_cmpu) + +/* No input carry, but output carry. */ +static void gen_rsub(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) +{ + tcg_gen_setcond_i32(TCG_COND_GEU, cpu_msr_c, inb, ina); + tcg_gen_sub_i32(out, inb, ina); +} + +/* Input and output carry. */ +static void gen_rsubc(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) +{ + TCGv_i32 zero =3D tcg_const_i32(0); + TCGv_i32 tmp =3D tcg_temp_new_i32(); + + tcg_gen_not_i32(tmp, ina); + tcg_gen_add2_i32(tmp, cpu_msr_c, tmp, zero, cpu_msr_c, zero); + tcg_gen_add2_i32(out, cpu_msr_c, tmp, cpu_msr_c, inb, zero); + + tcg_temp_free_i32(zero); + tcg_temp_free_i32(tmp); +} + +/* No input or output carry. */ +static void gen_rsubk(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) +{ + tcg_gen_sub_i32(out, inb, ina); +} + +/* Input carry, no output carry. */ +static void gen_rsubkc(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) +{ + TCGv_i32 nota =3D tcg_temp_new_i32(); + + tcg_gen_not_i32(nota, ina); + tcg_gen_add_i32(out, inb, nota); + tcg_gen_add_i32(out, out, cpu_msr_c); + + tcg_temp_free_i32(nota); +} + +DO_TYPEA(rsub, true, gen_rsub) +DO_TYPEA(rsubc, true, gen_rsubc) +DO_TYPEA(rsubk, false, gen_rsubk) +DO_TYPEA(rsubkc, true, gen_rsubkc) + +DO_TYPEBV(rsubi, true, gen_rsub) +DO_TYPEBV(rsubic, true, gen_rsubc) +DO_TYPEBV(rsubik, false, gen_rsubk) +DO_TYPEBV(rsubikc, true, gen_rsubkc) + static bool trans_zero(DisasContext *dc, arg_zero *arg) { /* If opcode_0_illegal, trap. */ @@ -341,63 +393,6 @@ static bool trans_zero(DisasContext *dc, arg_zero *arg) return false; } =20 -static void dec_sub(DisasContext *dc) -{ - unsigned int u, cmp, k, c; - TCGv_i32 cf, na; - - u =3D dc->imm & 2; - k =3D dc->opcode & 4; - c =3D dc->opcode & 2; - cmp =3D (dc->imm & 1) && (!dc->type_b) && k; - - if (cmp) { - if (dc->rd) { - if (u) - gen_helper_cmpu(cpu_R[dc->rd], cpu_R[dc->ra], cpu_R[dc->rb= ]); - else - gen_helper_cmp(cpu_R[dc->rd], cpu_R[dc->ra], cpu_R[dc->rb]= ); - } - return; - } - - /* Take care of the easy cases first. */ - if (k) { - /* k - keep carry, no need to update MSR. */ - /* If rd =3D=3D r0, it's a nop. */ - if (dc->rd) { - tcg_gen_sub_i32(cpu_R[dc->rd], *(dec_alu_op_b(dc)), cpu_R[dc->= ra]); - - if (c) { - /* c - Add carry into the result. */ - tcg_gen_add_i32(cpu_R[dc->rd], cpu_R[dc->rd], cpu_msr_c); - } - } - return; - } - - /* From now on, we can assume k is zero. So we need to update MSR. */ - /* Extract carry. And complement a into na. */ - cf =3D tcg_temp_new_i32(); - na =3D tcg_temp_new_i32(); - if (c) { - tcg_gen_mov_i32(cf, cpu_msr_c); - } else { - tcg_gen_movi_i32(cf, 1); - } - - /* d =3D b + ~a + c. carry defaults to 1. */ - tcg_gen_not_i32(na, cpu_R[dc->ra]); - - gen_helper_carry(cpu_msr_c, na, *(dec_alu_op_b(dc)), cf); - if (dc->rd) { - tcg_gen_add_i32(cpu_R[dc->rd], na, *(dec_alu_op_b(dc))); - tcg_gen_add_i32(cpu_R[dc->rd], cpu_R[dc->rd], cf); - } - tcg_temp_free_i32(cf); - tcg_temp_free_i32(na); -} - static void dec_pattern(DisasContext *dc) { unsigned int mode; @@ -1597,7 +1592,6 @@ static struct decoder_info { }; void (*dec)(DisasContext *dc); } decinfo[] =3D { - {DEC_SUB, dec_sub}, {DEC_AND, dec_and}, {DEC_XOR, dec_xor}, {DEC_OR, dec_or}, --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891077; cv=none; d=zohomail.com; s=zohoarc; b=B9ErKF4Sgk3U9xstqUiK2DVYvkQtvowQf13t4bd0c3WJ/rBNXjlTDSaHa5HFKbXE4r3y9N+Ysj2gvRfKIL3VkXMfOjHwSaa7wByB+JGwuywvo8h+KF3Mv04h5DHmdWVmSRIasK/p9TI8N1NzuLETk+MOy+OlmGTIDbyILocoKrY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891077; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=S6laip3Wpd4WZffve1nLJPULOpaH60wT+1ALfz+5yig=; b=hgdAxzbfW5wFMRAU4Po3wxI41kcLlQgH9UMwgIy6qDGIxr+WbrcwhbxUrZ656J85xORiyexkCcB9htSfT84zjdexfV5vgVN6ojmzZXk+glRoTlaoMMEBo0f8huYk32ofPaiUswYo5CAo+ZGNhrXSAj4h1PZdDUQg+mAqTsgtzcI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 159889107763180.64882900082159; Mon, 31 Aug 2020 09:24:37 -0700 (PDT) Received: from localhost ([::1]:33454 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmbk-0008MD-Sx for importer@patchew.org; Mon, 31 Aug 2020 12:24:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34156) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKh-00054Z-9k for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:59 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]:54420) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKf-00062t-CF for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:06:58 -0400 Received: by mail-pj1-x102a.google.com with SMTP id mm21so23136pjb.4 for ; Mon, 31 Aug 2020 09:06:56 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=S6laip3Wpd4WZffve1nLJPULOpaH60wT+1ALfz+5yig=; b=RocHciQOFTL4iO2FsUlY0t5JlELO9T6i0w7zuyu8sTk+ekwxdeyueRzz8fTyHduTOP LC96IlkXEVZAvsEkFfOUw6pGhQrfeChWEG4GgH0OozUaAnfTuYnw8SvLuMeT0yQpHCAU tvkRpb2ytjpnvbQU3uJDQaeuGtWawREAri6TFULbwUOl3TDbv/5j5pBUZLg9H/nrQMDy 70FYlxgq9EK5zGt2ApJRTqM5fPco1AFcknea6iUVH3uUsT8wP5bs8AnU4pka8ps06HST 6ClrdtUc9GmC+HlYlngqis+aImIa2GPtkNUcDNOx4OtLDOgbVMbN281k6IjVDgvqxiSe VAcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=S6laip3Wpd4WZffve1nLJPULOpaH60wT+1ALfz+5yig=; b=Euk9untjHn+dBuqxBZenkhlGiRNrRFvQkHSBNTrnyVyxtQqgluCcQyIFuF8jEOdGGu zR8zOXoLXJRvUK1jKR1XO+TrM0jEOMBFx4PDISJk/Rh7RKmEjg+VqyEe2Qmd4lH9t5ih 2MDIsWWrLjtQikjQKhAopqpdihf1PGXQdroWtvCJr8lHmqaYIAGQWpfYVPMW+RYQyJnX i9F2k5ZFAUJslTOmABTxwIQpvif/sQlTaMzFkCHAkMYdnbrFTOYlDT4JDvKdE20lIiNn pdcb0Big9H7bmiqg5ygO22ibuiFqKmkMI3b9nzYuYZ4c19wn8cxsb1GHqoCeWr7Ao88t T88A== X-Gm-Message-State: AOAM531yzQQTgxviFpwxeTv5F/xf4bUho7xgAry3qOx/xK2dDOOshATe box9bqGztYNCtZHaVv/PXH2cz109lE3Ifw== X-Google-Smtp-Source: ABdhPJxgt8dMr3Dpb/rc9mUJbAWrjIOocVL+S43a1bSimXkZdhZYjU5xz69yx5RKY4sw0cJnFCKoFQ== X-Received: by 2002:a17:902:708c:: with SMTP id z12mr1543618plk.258.1598890015725; Mon, 31 Aug 2020 09:06:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 38/76] target/microblaze: Implement cmp and cmpu inline Date: Mon, 31 Aug 2020 09:05:23 -0700 Message-Id: <20200831160601.833692-39-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102a.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" These are simple enough operations; we do not need to call an out-of-line helper. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/helper.h | 2 -- target/microblaze/op_helper.c | 20 -------------------- target/microblaze/translate.c | 24 ++++++++++++++++++++++-- 3 files changed, 22 insertions(+), 24 deletions(-) diff --git a/target/microblaze/helper.h b/target/microblaze/helper.h index 988abf7661..6f7f96421f 100644 --- a/target/microblaze/helper.h +++ b/target/microblaze/helper.h @@ -1,6 +1,4 @@ DEF_HELPER_FLAGS_2(raise_exception, TCG_CALL_NO_WG, noreturn, env, i32) -DEF_HELPER_2(cmp, i32, i32, i32) -DEF_HELPER_2(cmpu, i32, i32, i32) =20 DEF_HELPER_3(divs, i32, env, i32, i32) DEF_HELPER_3(divu, i32, env, i32, i32) diff --git a/target/microblaze/op_helper.c b/target/microblaze/op_helper.c index 9bb6a2ad76..f976d112eb 100644 --- a/target/microblaze/op_helper.c +++ b/target/microblaze/op_helper.c @@ -69,26 +69,6 @@ void helper_raise_exception(CPUMBState *env, uint32_t in= dex) cpu_loop_exit(cs); } =20 -uint32_t helper_cmp(uint32_t a, uint32_t b) -{ - uint32_t t; - - t =3D b + ~a + 1; - if ((b & 0x80000000) ^ (a & 0x80000000)) - t =3D (t & 0x7fffffff) | (b & 0x80000000); - return t; -} - -uint32_t helper_cmpu(uint32_t a, uint32_t b) -{ - uint32_t t; - - t =3D b + ~a + 1; - if ((b & 0x80000000) ^ (a & 0x80000000)) - t =3D (t & 0x7fffffff) | (a & 0x80000000); - return t; -} - static inline int div_prepare(CPUMBState *env, uint32_t a, uint32_t b) { MicroBlazeCPU *cpu =3D env_archcpu(env); diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 0e7d24ddca..8da477457d 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -327,8 +327,28 @@ DO_TYPEBV(addic, true, gen_addc) DO_TYPEBI(addik, false, tcg_gen_addi_i32) DO_TYPEBV(addikc, true, gen_addkc) =20 -DO_TYPEA(cmp, false, gen_helper_cmp) -DO_TYPEA(cmpu, false, gen_helper_cmpu) +static void gen_cmp(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) +{ + TCGv_i32 lt =3D tcg_temp_new_i32(); + + tcg_gen_setcond_i32(TCG_COND_LT, lt, inb, ina); + tcg_gen_sub_i32(out, inb, ina); + tcg_gen_deposit_i32(out, out, lt, 31, 1); + tcg_temp_free_i32(lt); +} + +static void gen_cmpu(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) +{ + TCGv_i32 lt =3D tcg_temp_new_i32(); + + tcg_gen_setcond_i32(TCG_COND_LTU, lt, inb, ina); + tcg_gen_sub_i32(out, inb, ina); + tcg_gen_deposit_i32(out, out, lt, 31, 1); + tcg_temp_free_i32(lt); +} + +DO_TYPEA(cmp, false, gen_cmp) +DO_TYPEA(cmpu, false, gen_cmpu) =20 /* No input carry, but output carry. */ static void gen_rsub(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890915; cv=none; d=zohomail.com; s=zohoarc; b=f6cMl/Xa3MU6KheLwCcnnFr2J5frtjroDLMwrsZRQOeUIEAliITZTHiO2xF8tbAFNu1cnYzHW8h7483qOj7dHuqR+/E6mb9PrHNS6RVhgwV9IoOmbvonRxenVTGYpq2BEBnmiawyCsW1P2htZ73cWWyXWBJrlwGVUS+yl0UMV+s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890915; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=McrdZ6KxrFqHOEaBx6VbvyuikujwerCjRA8qh9K2y7E=; b=n31O9DUiPinQNiw0TUcMo1Z55cJOyb+LE0k9Wu8bbnpDTujhyVP1JvlLrFuaCedSObE17Ys9kQBHxaRR7SAAOZxd1WZERtm4LuDiWSTIzUpGXVgNDZwso9yDR6kq/cdq4kdfq55iVlIkBwtSLKIgP9/htEVNL9oWMowm4TUqWLE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890915609741.5460761756979; Mon, 31 Aug 2020 09:21:55 -0700 (PDT) Received: from localhost ([::1]:44514 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmZ8-0001Xo-Pg for importer@patchew.org; Mon, 31 Aug 2020 12:21:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34180) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKi-00057x-MT for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:00 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]:33657) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKg-00063B-MV for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:00 -0400 Received: by mail-pj1-x1036.google.com with SMTP id np15so179831pjb.0 for ; Mon, 31 Aug 2020 09:06:58 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=McrdZ6KxrFqHOEaBx6VbvyuikujwerCjRA8qh9K2y7E=; b=F5SxQKa3n5qWf1xi6KVvx9P+wP+PGUXBYVzAuXLfprr99h96NeCnLlZFQLZR7mQEwy nFdT8cbQGq7wyUTSBbHWlwKSn+fdQw6hw/62NZDU2sGXHWkY0Ekd+EHSWz/HqHMDYuUI cfaApwf3iEXF0k4NNP0fmFIbSTF82LABLAmMRGlNY2/DGuHdwHxC4ojm1L2RU48Km6lc wt122SXyatOmg7I380v6Pp1cRE7SQclvF5zdi7IgR7MjTgDktHKkP9GVD5HddQ9x92Nn 2K5c3AQhwBn7pwaaj0VH+lXWXoVmq1zHkK1LwxwdwBNz/b7Z7fHPQ1DoX5svMYUtysNm QMMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=McrdZ6KxrFqHOEaBx6VbvyuikujwerCjRA8qh9K2y7E=; b=uiTRhs288Sqkz1r4qZWOolApJmsh2KcjYKhYuRxi3DeS4o4xKOkT6Nk4qvY/D5/srv zi5xLqABuExur4MWEkfebb1ryQvCY2N8DjoDXOIEfoPjQUIGj8PQwqD77H/ztqz3COjv H46T84ZTPOQYyiq0V8KgY3Q+E7xQTyy0+qj797XT3q5p+DSM0A1yTWiYb16h1v0wDaOa /6iax4soCDAyvy8lDqp+sKb3jlnezjpLJuQIYbghDzbfKWBuBIIyHi1LF9KUhr1+adtp XdH0BbxxB4MBnLF8YfnmRkBalF5JBc4KsiJzUKPhUK70L0Q0P5Yl+sgOKodE0b5PQ/wy SAyQ== X-Gm-Message-State: AOAM532KJO58oFiLDhjyBCcvnWiVvYL7s6HZJy5i+4DoU5ng0bMZzGBP jYD4bO/qM53bhhZ47hWHHlOftHowePJBGg== X-Google-Smtp-Source: ABdhPJyB+zY8SK60zUVpCHgEUsg9Wj7d1ekWbt5P4g3w+xhhQmEzn6f8nok5RLkOlBuU4xmWW2ysaw== X-Received: by 2002:a17:90b:2388:: with SMTP id mr8mr62823pjb.161.1598890016919; Mon, 31 Aug 2020 09:06:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 39/76] target/microblaze: Convert dec_pattern to decodetree Date: Mon, 31 Aug 2020 09:05:24 -0700 Message-Id: <20200831160601.833692-40-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/insns.decode | 4 ++ target/microblaze/translate.c | 67 +++++++++------------------------- 2 files changed, 22 insertions(+), 49 deletions(-) diff --git a/target/microblaze/insns.decode b/target/microblaze/insns.decode index a611cc83a7..16519f05dc 100644 --- a/target/microblaze/insns.decode +++ b/target/microblaze/insns.decode @@ -44,6 +44,10 @@ addikc 001110 ..... ..... ................ = @typeb cmp 000101 ..... ..... ..... 000 0000 0001 @typea cmpu 000101 ..... ..... ..... 000 0000 0011 @typea =20 +pcmpbf 100000 ..... ..... ..... 100 0000 0000 @typea +pcmpeq 100010 ..... ..... ..... 100 0000 0000 @typea +pcmpne 100011 ..... ..... ..... 100 0000 0000 @typea + rsub 000001 ..... ..... ..... 000 0000 0000 @typea rsubc 000011 ..... ..... ..... 000 0000 0000 @typea rsubk 000101 ..... ..... ..... 000 0000 0000 @typea diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 8da477457d..7ebf0e1e7d 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -279,6 +279,10 @@ static bool do_typeb_val(DisasContext *dc, arg_typeb *= arg, bool side_effects, static bool trans_##NAME(DisasContext *dc, arg_typea *a) \ { return do_typea(dc, a, SE, FN); } =20 +#define DO_TYPEA_CFG(NAME, CFG, SE, FN) \ + static bool trans_##NAME(DisasContext *dc, arg_typea *a) \ + { return dc->cpu->cfg.CFG && do_typea(dc, a, SE, FN); } + #define DO_TYPEBI(NAME, SE, FNI) \ static bool trans_##NAME(DisasContext *dc, arg_typeb *a) \ { return do_typeb_imm(dc, a, SE, FNI); } @@ -350,6 +354,20 @@ static void gen_cmpu(TCGv_i32 out, TCGv_i32 ina, TCGv_= i32 inb) DO_TYPEA(cmp, false, gen_cmp) DO_TYPEA(cmpu, false, gen_cmpu) =20 +static void gen_pcmpeq(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) +{ + tcg_gen_setcond_i32(TCG_COND_EQ, out, ina, inb); +} + +static void gen_pcmpne(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) +{ + tcg_gen_setcond_i32(TCG_COND_NE, out, ina, inb); +} + +DO_TYPEA_CFG(pcmpbf, use_pcmp_instr, false, gen_helper_pcmpbf) +DO_TYPEA_CFG(pcmpeq, use_pcmp_instr, false, gen_pcmpeq) +DO_TYPEA_CFG(pcmpne, use_pcmp_instr, false, gen_pcmpne) + /* No input carry, but output carry. */ static void gen_rsub(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) { @@ -413,49 +431,10 @@ static bool trans_zero(DisasContext *dc, arg_zero *ar= g) return false; } =20 -static void dec_pattern(DisasContext *dc) -{ - unsigned int mode; - - if (trap_illegal(dc, !dc->cpu->cfg.use_pcmp_instr)) { - return; - } - - mode =3D dc->opcode & 3; - switch (mode) { - case 0: - /* pcmpbf. */ - if (dc->rd) - gen_helper_pcmpbf(cpu_R[dc->rd], cpu_R[dc->ra], cpu_R[dc->= rb]); - break; - case 2: - if (dc->rd) { - tcg_gen_setcond_i32(TCG_COND_EQ, cpu_R[dc->rd], - cpu_R[dc->ra], cpu_R[dc->rb]); - } - break; - case 3: - if (dc->rd) { - tcg_gen_setcond_i32(TCG_COND_NE, cpu_R[dc->rd], - cpu_R[dc->ra], cpu_R[dc->rb]); - } - break; - default: - cpu_abort(CPU(dc->cpu), - "unsupported pattern insn opcode=3D%x\n", dc->opcode= ); - break; - } -} - static void dec_and(DisasContext *dc) { unsigned int not; =20 - if (!dc->type_b && (dc->imm & (1 << 10))) { - dec_pattern(dc); - return; - } - not =3D dc->opcode & (1 << 1); =20 if (!dc->rd) @@ -469,22 +448,12 @@ static void dec_and(DisasContext *dc) =20 static void dec_or(DisasContext *dc) { - if (!dc->type_b && (dc->imm & (1 << 10))) { - dec_pattern(dc); - return; - } - if (dc->rd) tcg_gen_or_i32(cpu_R[dc->rd], cpu_R[dc->ra], *(dec_alu_op_b(dc))); } =20 static void dec_xor(DisasContext *dc) { - if (!dc->type_b && (dc->imm & (1 << 10))) { - dec_pattern(dc); - return; - } - if (dc->rd) tcg_gen_xor_i32(cpu_R[dc->rd], cpu_R[dc->ra], *(dec_alu_op_b(dc))); } --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891078; cv=none; d=zohomail.com; s=zohoarc; b=NRtxQxdFohK7WJDRMAw/dfiONtyWOL+XYzfT79FFNoMu2aI/fWV9CBby5XUnJOQmEDhPagtb4I3FNm6Aq5AcQkpLiRsSvY5rWQEADl9LAtvjY4oVgux5ilSyOGvO4Q52HOBGJaxe99xXHvxp1NIkazrOJ1IFK3rH4tkNGTNFKFw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891078; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=CI+VZXsPGJ7eYoplXgk1haktp6HN35hn5kbwRUCynbg=; b=CEDHMTm2rF7HLRYCpURJxx4+FCRAxFIwu/IZiSpEdnPussxg88Sp5SqpZWoiwA9/mdUxUalqLZxxBdPHCnWn/jmk989ss0RH/P6Kbx1HLq5Dn7hbl2VKOnoXILEDLCpq45gy9mvmvkZeG+UtunZ9l54C4Kk8rAovk47v4s4qRas= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891078805683.3495421932545; Mon, 31 Aug 2020 09:24:38 -0700 (PDT) Received: from localhost ([::1]:33570 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmbl-0008Oz-U2 for importer@patchew.org; Mon, 31 Aug 2020 12:24:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34200) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKk-0005Bh-79 for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:02 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]:52135) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKi-00063T-6t for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:01 -0400 Received: by mail-pj1-x1034.google.com with SMTP id ds1so31667pjb.1 for ; Mon, 31 Aug 2020 09:06:59 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=CI+VZXsPGJ7eYoplXgk1haktp6HN35hn5kbwRUCynbg=; b=FNUYrMxXNrbYjUdXjDPGKvnxeDDnfvKYOLGg4wCSHbkZIATRSpShcPWaPRY7nZFYcA FrHHLtfW1ThJJc6DUjxLpTaNBlxWGSemy/n/Og/QW9TwkxWGYnZyj16Nnfrc1Eao1038 7Y909g33tEJJHk8XaYbYEgpflUsHGNBQ8z+tUZRICtP8oEdvHFizvAbD2GUCVMet/rOR p6j3TDA+3+Dzdlp1gQJcP3Qj8466xX37apf1CG4OWNfqby99u88JF9QVQX9dkdHU3/Sw Nk1EcQupoWjKEa76jEzvEHMi6hQNvgzYYH6GmbrlNiz+q97jYCmBYGJA/EOSFqUdxjkA 7jRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=CI+VZXsPGJ7eYoplXgk1haktp6HN35hn5kbwRUCynbg=; b=P47MfNyN5f131/XfGSDZspIzss6wgbdx5VNI+BZDuZp4Gry83OWdh4eZW3gexg+Jcv AbPz4NbVqMACgWAGCI8J+zevpKMlZTzNnM2BdBqFfpLyG8eU56rwcVEs/y4gB5IrDXmU m0OGwqTdPo6XaWCro0fSavob6X1yyIJMZ7xwQG9UAaPEU9vohGhO6VRoI2MAqdRwUuox PPE9ywCc9AwrT7Wtzq7p7CJmAKGesSGvoNmzb4Jx0zlcjjeYOX5vLK4H1gMgb49xf93g NMfmSjh0gHjD1qsxloUUi7Klvgdu4lXx2J/XVaiHbT98BDTF3ESjMsMJRIQsmCciLsr0 hFbw== X-Gm-Message-State: AOAM530LjsFSrm0SA3N3C69UvHMYtyJANY0hhSXvIN1oXT9eHG19yJFT uyWNdY/d5ebYFA8AAQ5hzP2sqc9y+3xMuQ== X-Google-Smtp-Source: ABdhPJwbNx/ZLWgU/c7PAcQEKEEKSb+ib0FZht0W8jVwLaYj3b6UxGzsC31v2HDkx2eBl+lCa1QTpg== X-Received: by 2002:a17:90a:744c:: with SMTP id o12mr71378pjk.63.1598890018299; Mon, 31 Aug 2020 09:06:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 40/76] target/microblaze: Convert dec_and, dec_or, dec_xor to decodetree Date: Mon, 31 Aug 2020 09:05:25 -0700 Message-Id: <20200831160601.833692-41-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1034.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/insns.decode | 12 +++++++++ target/microblaze/translate.c | 46 ++++++++++++---------------------- 2 files changed, 28 insertions(+), 30 deletions(-) diff --git a/target/microblaze/insns.decode b/target/microblaze/insns.decode index 16519f05dc..93bd51c78b 100644 --- a/target/microblaze/insns.decode +++ b/target/microblaze/insns.decode @@ -41,9 +41,18 @@ addic 001010 ..... ..... ................ = @typeb addik 001100 ..... ..... ................ @typeb addikc 001110 ..... ..... ................ @typeb =20 +and 100001 ..... ..... ..... 000 0000 0000 @typea +andi 101001 ..... ..... ................ @typeb + +andn 100011 ..... ..... ..... 000 0000 0000 @typea +andni 101011 ..... ..... ................ @typeb + cmp 000101 ..... ..... ..... 000 0000 0001 @typea cmpu 000101 ..... ..... ..... 000 0000 0011 @typea =20 +or 100000 ..... ..... ..... 000 0000 0000 @typea +ori 101000 ..... ..... ................ @typeb + pcmpbf 100000 ..... ..... ..... 100 0000 0000 @typea pcmpeq 100010 ..... ..... ..... 100 0000 0000 @typea pcmpne 100011 ..... ..... ..... 100 0000 0000 @typea @@ -57,3 +66,6 @@ rsubi 001001 ..... ..... ................ @= typeb rsubic 001011 ..... ..... ................ @typeb rsubik 001101 ..... ..... ................ @typeb rsubikc 001111 ..... ..... ................ @typeb + +xor 100010 ..... ..... ..... 000 0000 0000 @typea +xori 101010 ..... ..... ................ @typeb diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 7ebf0e1e7d..a143f17e9d 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -331,6 +331,16 @@ DO_TYPEBV(addic, true, gen_addc) DO_TYPEBI(addik, false, tcg_gen_addi_i32) DO_TYPEBV(addikc, true, gen_addkc) =20 +static void gen_andni(TCGv_i32 out, TCGv_i32 ina, int32_t imm) +{ + tcg_gen_andi_i32(out, ina, ~imm); +} + +DO_TYPEA(and, false, tcg_gen_and_i32) +DO_TYPEBI(andi, false, tcg_gen_andi_i32) +DO_TYPEA(andn, false, tcg_gen_andc_i32) +DO_TYPEBI(andni, false, gen_andni) + static void gen_cmp(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) { TCGv_i32 lt =3D tcg_temp_new_i32(); @@ -354,6 +364,9 @@ static void gen_cmpu(TCGv_i32 out, TCGv_i32 ina, TCGv_i= 32 inb) DO_TYPEA(cmp, false, gen_cmp) DO_TYPEA(cmpu, false, gen_cmpu) =20 +DO_TYPEA(or, false, tcg_gen_or_i32) +DO_TYPEBI(ori, false, tcg_gen_ori_i32) + static void gen_pcmpeq(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) { tcg_gen_setcond_i32(TCG_COND_EQ, out, ina, inb); @@ -417,6 +430,9 @@ DO_TYPEBV(rsubic, true, gen_rsubc) DO_TYPEBV(rsubik, false, gen_rsubk) DO_TYPEBV(rsubikc, true, gen_rsubkc) =20 +DO_TYPEA(xor, false, tcg_gen_xor_i32) +DO_TYPEBI(xori, false, tcg_gen_xori_i32) + static bool trans_zero(DisasContext *dc, arg_zero *arg) { /* If opcode_0_illegal, trap. */ @@ -431,33 +447,6 @@ static bool trans_zero(DisasContext *dc, arg_zero *arg) return false; } =20 -static void dec_and(DisasContext *dc) -{ - unsigned int not; - - not =3D dc->opcode & (1 << 1); - - if (!dc->rd) - return; - - if (not) { - tcg_gen_andc_i32(cpu_R[dc->rd], cpu_R[dc->ra], *(dec_alu_op_b(dc))= ); - } else - tcg_gen_and_i32(cpu_R[dc->rd], cpu_R[dc->ra], *(dec_alu_op_b(dc))); -} - -static void dec_or(DisasContext *dc) -{ - if (dc->rd) - tcg_gen_or_i32(cpu_R[dc->rd], cpu_R[dc->ra], *(dec_alu_op_b(dc))); -} - -static void dec_xor(DisasContext *dc) -{ - if (dc->rd) - tcg_gen_xor_i32(cpu_R[dc->rd], cpu_R[dc->ra], *(dec_alu_op_b(dc))); -} - static void msr_read(DisasContext *dc, TCGv_i32 d) { TCGv_i32 t; @@ -1581,9 +1570,6 @@ static struct decoder_info { }; void (*dec)(DisasContext *dc); } decinfo[] =3D { - {DEC_AND, dec_and}, - {DEC_XOR, dec_xor}, - {DEC_OR, dec_or}, {DEC_BIT, dec_bit}, {DEC_BARREL, dec_barrel}, {DEC_LD, dec_load}, --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890997; cv=none; d=zohomail.com; s=zohoarc; b=iUehORU9/bGBoCkgLMpzt28f4XPwetY4OLZwNAnx8PbnkYEem593iS1WjGZpq/F2kxJfoJjPScSUNYxn8qmW+raxvnFAlzXOc6J2n8QB0AiSLdWF42CT+vf14ppzPd27fS+Gtw/7Spg7UEIDEmEfcYxGJLf7McgxHjFJopC6qIQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890997; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=EI+R+4tP0x4knj3otgEq+jCMs+pFcf+NyvuwzVQpXIE=; b=e/iusS0unrYdZW9WACgW6Mly4FX2Vb3QsewZI3T9L/eGkSMNIMEbX/uulQ0a3TA7ciMD9T4OTXCBO744K3uIVUxizQAmOvfCMABdaZHK7oi/AB8yrhOBGJ2PU4Xh7BRl8Z1ziaEn9gzgoBawXXjkwzHxyiFE1myRqJx1BolKm6g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890997165115.3961690372114; Mon, 31 Aug 2020 09:23:17 -0700 (PDT) Received: from localhost ([::1]:52966 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmaS-0004sM-7a for importer@patchew.org; Mon, 31 Aug 2020 12:23:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34238) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKm-0005Hl-KI for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:04 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]:33646) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKj-00063e-Gz for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:04 -0400 Received: by mail-pj1-x102a.google.com with SMTP id np15so179866pjb.0 for ; Mon, 31 Aug 2020 09:07:01 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:06:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=EI+R+4tP0x4knj3otgEq+jCMs+pFcf+NyvuwzVQpXIE=; b=LTfocQDJ5u07X2Wa1qppcpeAo9gjdFJZotwqEDmCYgSXk7VXF1aP5+O5+0Y8vHN1Ie sI8upcUbTY0yNb3f2AlTRRIMztnxHUg3LZNbZzD3dRqsslvYe1gDNIlooVjwW8B2LTUY aq/akQXn7GuAT72sxUS3jZNLV4IxdFrVYmyx8jcLe+qCqurIZHVrH7xiST8xRhHW3GuS oRBdZHw+6X12VZDJcEDPPIwjZMueY9chw/SgNNNB7X+iziz7S6b6KnWIeiN8GhC3drKn 4ulINwb8D2ByUsCJs2hpHltpA2gOCGdHKaS9aDCcWTD1X81IduchM7IEjqBjdn/BJBfW WY4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=EI+R+4tP0x4knj3otgEq+jCMs+pFcf+NyvuwzVQpXIE=; b=aMBAu3LPizcO0gChoe1D2Os1RZlawMuiyO/AQnk6kfBXqSNon+SOgydxeXf6yYZgSb A1vDwIs95BzBLSSTTULNxuUYh+ceTfWjm/lWjorKMi4h2JKBJEiiWlfiWdQEwfHzQwWy UPK1wQz8o/LYZl/jlqeg1CclhGaS0wQbiEpgg5XBU/CEGORsNfKMurHo9eMl0kq4rV9S 9Y0MBh2dHEpnFgnkpOcqlj2XFvOD1Zj47hm7XpfOXzaMnvERfJ6UFZmtpVP1xZm3tAj3 BERJ9PHXcxm+pXQjDfRxVuDCSlCx2Hu/B58FOtBul0iyhuP5WuxtUdznr3LVfO0L1sWE XKEg== X-Gm-Message-State: AOAM532CJ4VXzEiq8I4lU2lzX/bVVFEVd1nfSb3OHbKGKQMPJUwDITR5 o9cgsMzAvzrSO7BX7DdVWyR7IZ5NgTI/fQ== X-Google-Smtp-Source: ABdhPJxSQ4hkTbCVwdXWubraq1s8aFldA8QMjrXDszXZAdNcazg0Cy2QxvNeIIZ4boI6u8vKAtMc+g== X-Received: by 2002:a17:90a:384c:: with SMTP id l12mr73115pjf.27.1598890019651; Mon, 31 Aug 2020 09:06:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 41/76] target/microblaze: Convert dec_mul to decodetree Date: Mon, 31 Aug 2020 09:05:26 -0700 Message-Id: <20200831160601.833692-42-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102a.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/insns.decode | 6 +++ target/microblaze/translate.c | 77 ++++++++++++++-------------------- 2 files changed, 37 insertions(+), 46 deletions(-) diff --git a/target/microblaze/insns.decode b/target/microblaze/insns.decode index 93bd51c78b..1a2e22e44a 100644 --- a/target/microblaze/insns.decode +++ b/target/microblaze/insns.decode @@ -50,6 +50,12 @@ andni 101011 ..... ..... ................ = @typeb cmp 000101 ..... ..... ..... 000 0000 0001 @typea cmpu 000101 ..... ..... ..... 000 0000 0011 @typea =20 +mul 010000 ..... ..... ..... 000 0000 0000 @typea +mulh 010000 ..... ..... ..... 000 0000 0001 @typea +mulhu 010000 ..... ..... ..... 000 0000 0011 @typea +mulhsu 010000 ..... ..... ..... 000 0000 0010 @typea +muli 011000 ..... ..... ................ @typeb + or 100000 ..... ..... ..... 000 0000 0000 @typea ori 101000 ..... ..... ................ @typeb =20 diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index a143f17e9d..617e208583 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -287,6 +287,10 @@ static bool do_typeb_val(DisasContext *dc, arg_typeb *= arg, bool side_effects, static bool trans_##NAME(DisasContext *dc, arg_typeb *a) \ { return do_typeb_imm(dc, a, SE, FNI); } =20 +#define DO_TYPEBI_CFG(NAME, CFG, SE, FNI) \ + static bool trans_##NAME(DisasContext *dc, arg_typeb *a) \ + { return dc->cpu->cfg.CFG && do_typeb_imm(dc, a, SE, FNI); } + #define DO_TYPEBV(NAME, SE, FN) \ static bool trans_##NAME(DisasContext *dc, arg_typeb *a) \ { return do_typeb_val(dc, a, SE, FN); } @@ -364,6 +368,33 @@ static void gen_cmpu(TCGv_i32 out, TCGv_i32 ina, TCGv_= i32 inb) DO_TYPEA(cmp, false, gen_cmp) DO_TYPEA(cmpu, false, gen_cmpu) =20 +static void gen_mulh(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) +{ + TCGv_i32 tmp =3D tcg_temp_new_i32(); + tcg_gen_muls2_i32(tmp, out, ina, inb); + tcg_temp_free_i32(tmp); +} + +static void gen_mulhu(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) +{ + TCGv_i32 tmp =3D tcg_temp_new_i32(); + tcg_gen_mulu2_i32(tmp, out, ina, inb); + tcg_temp_free_i32(tmp); +} + +static void gen_mulhsu(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) +{ + TCGv_i32 tmp =3D tcg_temp_new_i32(); + tcg_gen_mulsu2_i32(tmp, out, ina, inb); + tcg_temp_free_i32(tmp); +} + +DO_TYPEA_CFG(mul, use_hw_mul, false, tcg_gen_mul_i32) +DO_TYPEA_CFG(mulh, use_hw_mul >=3D 2, false, gen_mulh) +DO_TYPEA_CFG(mulhu, use_hw_mul >=3D 2, false, gen_mulhu) +DO_TYPEA_CFG(mulhsu, use_hw_mul >=3D 2, false, gen_mulhsu) +DO_TYPEBI_CFG(muli, use_hw_mul, false, tcg_gen_muli_i32) + DO_TYPEA(or, false, tcg_gen_or_i32) DO_TYPEBI(ori, false, tcg_gen_ori_i32) =20 @@ -652,51 +683,6 @@ static void dec_msr(DisasContext *dc) } } =20 -/* Multiplier unit. */ -static void dec_mul(DisasContext *dc) -{ - TCGv_i32 tmp; - unsigned int subcode; - - if (trap_illegal(dc, !dc->cpu->cfg.use_hw_mul)) { - return; - } - - subcode =3D dc->imm & 3; - - if (dc->type_b) { - tcg_gen_mul_i32(cpu_R[dc->rd], cpu_R[dc->ra], *(dec_alu_op_b(dc))); - return; - } - - /* mulh, mulhsu and mulhu are not available if C_USE_HW_MUL is < 2. */ - if (subcode >=3D 1 && subcode <=3D 3 && dc->cpu->cfg.use_hw_mul < 2) { - /* nop??? */ - } - - tmp =3D tcg_temp_new_i32(); - switch (subcode) { - case 0: - tcg_gen_mul_i32(cpu_R[dc->rd], cpu_R[dc->ra], cpu_R[dc->rb]); - break; - case 1: - tcg_gen_muls2_i32(tmp, cpu_R[dc->rd], - cpu_R[dc->ra], cpu_R[dc->rb]); - break; - case 2: - tcg_gen_mulsu2_i32(tmp, cpu_R[dc->rd], - cpu_R[dc->ra], cpu_R[dc->rb]); - break; - case 3: - tcg_gen_mulu2_i32(tmp, cpu_R[dc->rd], cpu_R[dc->ra], cpu_R[dc-= >rb]); - break; - default: - cpu_abort(CPU(dc->cpu), "unknown MUL insn %x\n", subcode); - break; - } - tcg_temp_free_i32(tmp); -} - /* Div unit. */ static void dec_div(DisasContext *dc) { @@ -1579,7 +1565,6 @@ static struct decoder_info { {DEC_BCC, dec_bcc}, {DEC_RTS, dec_rts}, {DEC_FPU, dec_fpu}, - {DEC_MUL, dec_mul}, {DEC_DIV, dec_div}, {DEC_MSR, dec_msr}, {DEC_STREAM, dec_stream}, --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891074; cv=none; d=zohomail.com; s=zohoarc; b=LojdwJnvFaKtgqNyEN3BZC6ZqYMhJC5KoplxkALahffqs5t8gHJGs6VPdRZYwMmDxNAebaQQK8C5XcHRNACJbWkhzPVRbWibjcWkrAMQFCy+wD4Y4s5kI/9SkvkLuN3WLygBVAhQ40iwmrUx5CXJuheiv9AJAoIdzHzP0rUhnxw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891074; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=rWOc9BwUZsVi//eDSn3YgBVyZRgNAuFh68+VKq4fp/Q=; b=R9rchMm9IIZmeDjc4r3hSCrDUqxnuWdi/ftmTHQfe0Z9d4XcuaQxscNcz7Obs/gycda8QYPQeAwe0OXobCiV2DCNNG1jIEidcFkpDYT2vm0+WXkKjKZyzGpsTARCg94PnzmrW2fo3iqPf9bn9+nc06vurLSlK0/p3mJrpFxgSrU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891074517136.85473445204047; Mon, 31 Aug 2020 09:24:34 -0700 (PDT) Received: from localhost ([::1]:33156 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmbh-0008Eo-PO for importer@patchew.org; Mon, 31 Aug 2020 12:24:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34248) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKn-0005JQ-Ci for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:05 -0400 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]:40973) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKk-00063n-Mm for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:05 -0400 Received: by mail-pf1-x42a.google.com with SMTP id t9so805511pfq.8 for ; Mon, 31 Aug 2020 09:07:02 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.06.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rWOc9BwUZsVi//eDSn3YgBVyZRgNAuFh68+VKq4fp/Q=; b=LD+/DsM68XC5buvs7Xbjn9dT4H3XqujGlPzBqjCCljAsvMWOlBzBtxKiJblJV9bxeb DHu9OneExkDDpo7P6UzWJ1a6b3gN5Z5S4GmicVGazw9yPeRqkWxG9qeF+VcO5vBMSwSH smoQ2+vknkB6VcVaW3twQTzocKwZk34FeHXGs/5pd9OijKBT08ge+J7wyqwW9L91la9i YklEKvbhbCku64qbemYdcSmAJMF8AVDCSXNtUHRnmHF2Bqzw7MUAdC9QP8bD9xy4Dl2U ufA+UYNv+q2j6FSdPCU7doAmD6n1NbCQhColaZI4Z+1ARmrcFv51kYJwyJZ+FE4NuC1m 2Svg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rWOc9BwUZsVi//eDSn3YgBVyZRgNAuFh68+VKq4fp/Q=; b=fiBi9AmD5s7dtm4rGthFvHhYFhD8umDZ7EyyNWgrhBAay2/JCWtIRru55osHMIX4IW wEPX8ybsnVXkN8m3BOZxNfKH9swR9oajPxE44UKPUuhUAh/QsEEqcaeiSjoUxa/KOcaA TEXgJkK/ZYwiH1eoQcNqrtmXpLEfQJzvE09+Yp8it1dCSuIMxiuTWwUFh2iGHnhMI5nw nZLIKVH5sXkaoVOhmUwueCARZpkrtp9QdA3z1vIc7W1ff3PGy4afG4y0mx7OgIXi3/Aa ETBkZgzQeqTUDTDwc+Ue0/4cEIS2FfFW5Uep0arkb+SUHD0l4waLuHNDnI6MpRQ4U4Js xFlA== X-Gm-Message-State: AOAM530gSuqxKJnyFD2Szs5v1WAC81C5XRnTXvDjxSElH9BkLMi9i60c JuBQ7UXt+S1d+nSIC2MfnrYQEJPA5Ntpig== X-Google-Smtp-Source: ABdhPJxn3G7rL/Mvq5vfAM+WLA+6aQ3OSmJd6YS3qazc7FSu3UvMH59KeTZIiJZMs4YKKOEDWIlEFw== X-Received: by 2002:a63:4b61:: with SMTP id k33mr1708075pgl.195.1598890020925; Mon, 31 Aug 2020 09:07:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 42/76] target/microblaze: Convert dec_div to decodetree Date: Mon, 31 Aug 2020 09:05:27 -0700 Message-Id: <20200831160601.833692-43-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42a; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42a.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/insns.decode | 3 +++ target/microblaze/translate.c | 35 +++++++++++++--------------------- 2 files changed, 16 insertions(+), 22 deletions(-) diff --git a/target/microblaze/insns.decode b/target/microblaze/insns.decode index 1a2e22e44a..b2dcbdf784 100644 --- a/target/microblaze/insns.decode +++ b/target/microblaze/insns.decode @@ -50,6 +50,9 @@ andni 101011 ..... ..... ................ @= typeb cmp 000101 ..... ..... ..... 000 0000 0001 @typea cmpu 000101 ..... ..... ..... 000 0000 0011 @typea =20 +idiv 010010 ..... ..... ..... 000 0000 0000 @typea +idivu 010010 ..... ..... ..... 000 0000 0010 @typea + mul 010000 ..... ..... ..... 000 0000 0000 @typea mulh 010000 ..... ..... ..... 000 0000 0001 @typea mulhu 010000 ..... ..... ..... 000 0000 0011 @typea diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 617e208583..9763b9d77c 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -368,6 +368,19 @@ static void gen_cmpu(TCGv_i32 out, TCGv_i32 ina, TCGv_= i32 inb) DO_TYPEA(cmp, false, gen_cmp) DO_TYPEA(cmpu, false, gen_cmpu) =20 +static void gen_idiv(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) +{ + gen_helper_divs(out, cpu_env, inb, ina); +} + +static void gen_idivu(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) +{ + gen_helper_divu(out, cpu_env, inb, ina); +} + +DO_TYPEA_CFG(idiv, use_div, true, gen_idiv) +DO_TYPEA_CFG(idivu, use_div, true, gen_idivu) + static void gen_mulh(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) { TCGv_i32 tmp =3D tcg_temp_new_i32(); @@ -683,27 +696,6 @@ static void dec_msr(DisasContext *dc) } } =20 -/* Div unit. */ -static void dec_div(DisasContext *dc) -{ - unsigned int u; - - u =3D dc->imm & 2;=20 - - if (trap_illegal(dc, !dc->cpu->cfg.use_div)) { - return; - } - - if (u) - gen_helper_divu(cpu_R[dc->rd], cpu_env, *(dec_alu_op_b(dc)), - cpu_R[dc->ra]); - else - gen_helper_divs(cpu_R[dc->rd], cpu_env, *(dec_alu_op_b(dc)), - cpu_R[dc->ra]); - if (!dc->rd) - tcg_gen_movi_i32(cpu_R[dc->rd], 0); -} - static void dec_barrel(DisasContext *dc) { TCGv_i32 t0; @@ -1565,7 +1557,6 @@ static struct decoder_info { {DEC_BCC, dec_bcc}, {DEC_RTS, dec_rts}, {DEC_FPU, dec_fpu}, - {DEC_DIV, dec_div}, {DEC_MSR, dec_msr}, {DEC_STREAM, dec_stream}, {{0, 0}, dec_null} --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890873; cv=none; d=zohomail.com; s=zohoarc; b=UcIWGSIMuo+KVtCdM+GhfQy4fvH7l6xdjBmllo/M0aBpYpyo0mBcZ4fZ53dKL7mmsdX0vKiAJH0vx6vl7wQe++ittDkQ4SdFfoLsblPO3/bHqpoHqjVD8e2OXwqEl96Kne14xl5jKSRo7n9Etr+TONMFaR3g7IiJKbgi7dNB/rI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890873; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=MvUJVsNPWoeKhWUV8ldYPjhJGjA7j8IztAPyoO2B77I=; b=LUbfRSF+lG9NkkwKuOLmOGCRdDxn5uwidEtC+AbMiptB//wOzppgs305hiljjSkjWIF03GNCRF0dDomkkmShq8lsksVt8uHawxz1nh2A3z4iyjZMoij1vLQ/yhxFJiiXTYv7cj5nkYe8ycUOyci/cZ7WchQy1RTPHQtftLfmdPU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598890873314771.3951412865022; Mon, 31 Aug 2020 09:21:13 -0700 (PDT) Received: from localhost ([::1]:40738 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmYR-0008Sd-Qb for importer@patchew.org; Mon, 31 Aug 2020 12:21:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34258) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKo-0005LS-6h for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:06 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]:33295) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKm-000644-F2 for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:05 -0400 Received: by mail-pl1-x62a.google.com with SMTP id h2so3257503plr.0 for ; Mon, 31 Aug 2020 09:07:03 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=MvUJVsNPWoeKhWUV8ldYPjhJGjA7j8IztAPyoO2B77I=; b=QWjYyzpkXE546IWmGaBX2ohT/h97DP9toSleezV5UkZsbg1OkyjUL5iERFX0NQCdvA Co+rjX9X06vlGv5dLzUiDJqBlfeyKun8zbzo+wzcMAnpj9YKoqlxAPLcrPVfd+sOymeO 1rl1UtJ5GGjs1vNTn8Ci5LbY9sXY4sBaZbbSjKgQpUgGFwNOzFBMMoPXurTdyjpJ1+9L kJ1k4d4kH79sTdp1KzeEISbSPW/NE5mPaeqVCOwDSa7ooXCTWHERR4iGEkog/rh/sMv0 XfU5bdCgXxpaecAh7w9SZzaaI4dr01mLjTmiQZ5YO42UcqdaFlGij6hfarNPsyiYsSDe jWJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=MvUJVsNPWoeKhWUV8ldYPjhJGjA7j8IztAPyoO2B77I=; b=AxFwuLXpZrRIjx6tsoCaScUTNw06P3uP8iIIpV41kafwkQsvshCuIqOrp3NOGO2Yz9 ehV+UJJ2FmpeEPP4nHHVTXkGD+nthtlwY50RfmyLVRiHOeBPxAxG30k63pi4dYsHenWH im9676vrbkb3mZdhQd/eNCXg/JFfVeXsJddIFhYAz07EIYqQkMfNbKox9fty1onKioWR sRBjuHrdBQyC2/iNR8VTaIv25sZ87aSCDfLf1u4zFX3B2wWteeU4ZNw9II1i8bVaAtOM SjcZ1ZMIt6ta+/F/ssz+qUIfOo5GGDi2rOQ4S5SjrCj8jF9MgNjWZPHS3jcBkzgvc8y3 QHdQ== X-Gm-Message-State: AOAM533hDTyOKTPn8SV1UXQXASBuubd1oHqA28i22evX8mNP0hfGo96g Vv+yDUeHJZeXotc/tRHCDAblusYNmBqy+w== X-Google-Smtp-Source: ABdhPJx9nwMaYOhGD4nkqqRF3aWcCln4aLW5ffiKGmhVpFyHh9txnNNLoS7zpLrhNRZ3IyPB1XHghw== X-Received: by 2002:a17:90a:d496:: with SMTP id s22mr61847pju.167.1598890022534; Mon, 31 Aug 2020 09:07:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 43/76] target/microblaze: Unwind properly when raising divide-by-zero Date: Mon, 31 Aug 2020 09:05:28 -0700 Message-Id: <20200831160601.833692-44-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Restore the correct pc when raising divide-by-zero. Also, the MSR[DZO] bit is sticky -- it is not cleared with a successful divide. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/helper.h | 4 ++-- target/microblaze/op_helper.c | 23 ++++++++++++----------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/target/microblaze/helper.h b/target/microblaze/helper.h index 6f7f96421f..79e1e8ecc7 100644 --- a/target/microblaze/helper.h +++ b/target/microblaze/helper.h @@ -1,7 +1,7 @@ DEF_HELPER_FLAGS_2(raise_exception, TCG_CALL_NO_WG, noreturn, env, i32) =20 -DEF_HELPER_3(divs, i32, env, i32, i32) -DEF_HELPER_3(divu, i32, env, i32, i32) +DEF_HELPER_FLAGS_3(divs, TCG_CALL_NO_WG, i32, env, i32, i32) +DEF_HELPER_FLAGS_3(divu, TCG_CALL_NO_WG, i32, env, i32, i32) =20 DEF_HELPER_3(fadd, i32, env, i32, i32) DEF_HELPER_3(frsub, i32, env, i32, i32) diff --git a/target/microblaze/op_helper.c b/target/microblaze/op_helper.c index f976d112eb..d99d98051a 100644 --- a/target/microblaze/op_helper.c +++ b/target/microblaze/op_helper.c @@ -69,26 +69,27 @@ void helper_raise_exception(CPUMBState *env, uint32_t i= ndex) cpu_loop_exit(cs); } =20 -static inline int div_prepare(CPUMBState *env, uint32_t a, uint32_t b) +static bool check_divz(CPUMBState *env, uint32_t a, uint32_t b, uintptr_t = ra) { - MicroBlazeCPU *cpu =3D env_archcpu(env); - - if (b =3D=3D 0) { + if (unlikely(b =3D=3D 0)) { env->msr |=3D MSR_DZ; =20 - if ((env->msr & MSR_EE) && cpu->cfg.div_zero_exception) { + if ((env->msr & MSR_EE) && + env_archcpu(env)->cfg.div_zero_exception) { + CPUState *cs =3D env_cpu(env); + env->esr =3D ESR_EC_DIVZERO; - helper_raise_exception(env, EXCP_HW_EXCP); + cs->exception_index =3D EXCP_HW_EXCP; + cpu_loop_exit_restore(cs, ra); } - return 0; + return false; } - env->msr &=3D ~MSR_DZ; - return 1; + return true; } =20 uint32_t helper_divs(CPUMBState *env, uint32_t a, uint32_t b) { - if (!div_prepare(env, a, b)) { + if (!check_divz(env, a, b, GETPC())) { return 0; } return (int32_t)a / (int32_t)b; @@ -96,7 +97,7 @@ uint32_t helper_divs(CPUMBState *env, uint32_t a, uint32_= t b) =20 uint32_t helper_divu(CPUMBState *env, uint32_t a, uint32_t b) { - if (!div_prepare(env, a, b)) { + if (!check_divz(env, a, b, GETPC())) { return 0; } return a / b; --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891189; cv=none; d=zohomail.com; s=zohoarc; b=J58zQvH6gtbXcZRn3yFvM56OBrUnyPTKF8LAt65y26ThEMVlzz8RNFd3i+8EUGfJUuO+Ju79uG2zg+iz7hZKEhXg+LrZr7sTr9jIz4gVE4+0vAwMG6IBzJFBeW4IA/4ODA6qbjqHT5HQGgkm/VR/+YdWp9g6Aeu0UgJ5tnNwOjo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891189; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=POrx1e7tQeBQnqQjkRXe3vAU3cEgwFbJYpvJaAU7rEQ=; b=SAVl/OJPX450puwQzvbwfy7ld+fLi93wwxmnTRRZvr2gvSmSj27YbyFrMbXQqdcSDf7OUmmlGu6tUXiuE+SLAlf22sAnxofpUmrq2qFgl4fv/ThGKN72ELvX/Sq84VU9DzeSp/oDf/3m5LMz5GdNODFMxmMZgD8Oh7BeQm/OpLY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891189181665.5924673285814; Mon, 31 Aug 2020 09:26:29 -0700 (PDT) Received: from localhost ([::1]:41950 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmdY-0003Qb-An for importer@patchew.org; Mon, 31 Aug 2020 12:26:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34280) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKp-0005Qz-Vc for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:08 -0400 Received: from mail-pg1-x534.google.com ([2607:f8b0:4864:20::534]:34010) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKn-00064I-Ju for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:07 -0400 Received: by mail-pg1-x534.google.com with SMTP id i10so844692pgk.1 for ; Mon, 31 Aug 2020 09:07:05 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=POrx1e7tQeBQnqQjkRXe3vAU3cEgwFbJYpvJaAU7rEQ=; b=p5VrgDqrVMExsNUnoiIeacABBU5mxouJ1ILFIRpXCI/He22+Sd0STMTsaHc7qe6xUp m1xmSsaKqZFplIWYQYXsMBOrt9Yu/jcU0cLR5bqjTkNK6iYwRBuN8zdvHlFYd/aEIuPw 7qhpx7hx5qtOj3vrTXZPe+jXkDADTneUIcOz9jN2o1dAnvP7KzdqetY1dsV0V14oMZ10 6qj5cD7lmzy/ZrxRbsZhthZpbjY8svDw83zgQRFfk8RkyR16szJrt4rtXbJgp6h8AO55 vg7qivawIJ6GsERWqKFj7eN5TbgaVxeCs72xsY1bHhUes/3HCGEzHtSOa+7lIUv3B1R1 ub2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=POrx1e7tQeBQnqQjkRXe3vAU3cEgwFbJYpvJaAU7rEQ=; b=txMeI3POpr0+mAxyQ/uxOFnuzTtZIlxBN5n4VtGDUupRKudYD8PFrsHa+q8N3M4bVd 1ucZI6QI7qSCjy3FOrnXEZiefjAluNnIhuruccuDjIagIK5pFnJfpuJEF6a43GI0iBcT F51xNfjwnxGOhHW9YPsg2mRgKXw0Lyfffucgb25eZbmm35ZO7h95gHkhyJHgtLj0zF+T u+4weDc5nVkdfvhT4jnKB0ZmfZgMV8Zbg0Dbz11E1y8NtTg7mLTVPlMw3LtrgMldgum+ JEyL2XNfFh+FS26l5X9j3FXvbftcfaSiZ4dCo38avnVoCvRONsOk7ovgIjrVVKYbOQdJ +h3Q== X-Gm-Message-State: AOAM533DkIvm9WYIP+JHkgdi8XGI5RyPrpL1AXIEw8eic7WtlCBn4fbN RF8wyEvsH+71tRC13lhI8B8aDxAvRpbN6g== X-Google-Smtp-Source: ABdhPJwWJPKCQkjWey0nywQ//x6Ll9GNWxw0qf0sFpGiPRupB4HT9mCPxc4MhUzrXR2Kq9k/xc79vg== X-Received: by 2002:a63:c551:: with SMTP id g17mr1711857pgd.399.1598890023755; Mon, 31 Aug 2020 09:07:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 44/76] target/microblaze: Convert dec_bit to decodetree Date: Mon, 31 Aug 2020 09:05:29 -0700 Message-Id: <20200831160601.833692-45-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::534; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x534.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/insns.decode | 20 +++++ target/microblaze/translate.c | 148 +++++++++++++++++---------------- 2 files changed, 95 insertions(+), 73 deletions(-) diff --git a/target/microblaze/insns.decode b/target/microblaze/insns.decode index b2dcbdf784..d265e36044 100644 --- a/target/microblaze/insns.decode +++ b/target/microblaze/insns.decode @@ -17,6 +17,7 @@ # License along with this library; if not, see . # =20 +&typea0 rd ra &typea rd ra rb &typeb rd ra imm =20 @@ -26,6 +27,9 @@ @typea ...... rd:5 ra:5 rb:5 ... .... .... &typea @typeb ...... rd:5 ra:5 ................ &typeb imm=3D%exti= mm =20 +# Officially typea, but with rb=3D=3D0, which is not used. +@typea0 ...... rd:5 ra:5 ................ &typea0 + ### =20 { @@ -47,6 +51,8 @@ andi 101001 ..... ..... ................ @= typeb andn 100011 ..... ..... ..... 000 0000 0000 @typea andni 101011 ..... ..... ................ @typeb =20 +clz 100100 ..... ..... 00000 000 1110 0000 @typea0 + cmp 000101 ..... ..... ..... 000 0000 0001 @typea cmpu 000101 ..... ..... ..... 000 0000 0011 @typea =20 @@ -76,5 +82,19 @@ rsubic 001011 ..... ..... ................ = @typeb rsubik 001101 ..... ..... ................ @typeb rsubikc 001111 ..... ..... ................ @typeb =20 +sext8 100100 ..... ..... 00000 000 0110 0000 @typea0 +sext16 100100 ..... ..... 00000 000 0110 0001 @typea0 + +sra 100100 ..... ..... 00000 000 0000 0001 @typea0 +src 100100 ..... ..... 00000 000 0010 0001 @typea0 +srl 100100 ..... ..... 00000 000 0100 0001 @typea0 + +swapb 100100 ..... ..... 00000 001 1110 0000 @typea0 +swaph 100100 ..... ..... 00000 001 1110 0010 @typea0 + +# Cache operations have no effect in qemu: discard the arguments. +wdic 100100 00000 ----- ----- -00 -11- 01-0 # wdc +wdic 100100 00000 ----- ----- 000 0110 1000 # wic + xor 100010 ..... ..... ..... 000 0000 0000 @typea xori 101010 ..... ..... ................ @typeb diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 9763b9d77c..2d57f76548 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -241,6 +241,21 @@ static bool do_typea(DisasContext *dc, arg_typea *arg,= bool side_effects, return true; } =20 +static bool do_typea0(DisasContext *dc, arg_typea0 *arg, bool side_effects, + void (*fn)(TCGv_i32, TCGv_i32)) +{ + TCGv_i32 rd, ra; + + if (arg->rd =3D=3D 0 && !side_effects) { + return true; + } + + rd =3D reg_for_write(dc, arg->rd); + ra =3D reg_for_read(dc, arg->ra); + fn(rd, ra); + return true; +} + static bool do_typeb_imm(DisasContext *dc, arg_typeb *arg, bool side_effec= ts, void (*fni)(TCGv_i32, TCGv_i32, int32_t)) { @@ -283,6 +298,14 @@ static bool do_typeb_val(DisasContext *dc, arg_typeb *= arg, bool side_effects, static bool trans_##NAME(DisasContext *dc, arg_typea *a) \ { return dc->cpu->cfg.CFG && do_typea(dc, a, SE, FN); } =20 +#define DO_TYPEA0(NAME, SE, FN) \ + static bool trans_##NAME(DisasContext *dc, arg_typea0 *a) \ + { return do_typea0(dc, a, SE, FN); } + +#define DO_TYPEA0_CFG(NAME, CFG, SE, FN) \ + static bool trans_##NAME(DisasContext *dc, arg_typea0 *a) \ + { return dc->cpu->cfg.CFG && do_typea0(dc, a, SE, FN); } + #define DO_TYPEBI(NAME, SE, FNI) \ static bool trans_##NAME(DisasContext *dc, arg_typeb *a) \ { return do_typeb_imm(dc, a, SE, FNI); } @@ -345,6 +368,13 @@ DO_TYPEBI(andi, false, tcg_gen_andi_i32) DO_TYPEA(andn, false, tcg_gen_andc_i32) DO_TYPEBI(andni, false, gen_andni) =20 +static void gen_clz(TCGv_i32 out, TCGv_i32 ina) +{ + tcg_gen_clzi_i32(out, ina, 32); +} + +DO_TYPEA0_CFG(clz, use_pcmp_instr, false, gen_clz) + static void gen_cmp(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) { TCGv_i32 lt =3D tcg_temp_new_i32(); @@ -474,6 +504,51 @@ DO_TYPEBV(rsubic, true, gen_rsubc) DO_TYPEBV(rsubik, false, gen_rsubk) DO_TYPEBV(rsubikc, true, gen_rsubkc) =20 +DO_TYPEA0(sext8, false, tcg_gen_ext8s_i32) +DO_TYPEA0(sext16, false, tcg_gen_ext16s_i32) + +static void gen_sra(TCGv_i32 out, TCGv_i32 ina) +{ + tcg_gen_andi_i32(cpu_msr_c, ina, 1); + tcg_gen_sari_i32(out, ina, 1); +} + +static void gen_src(TCGv_i32 out, TCGv_i32 ina) +{ + TCGv_i32 tmp =3D tcg_temp_new_i32(); + + tcg_gen_mov_i32(tmp, cpu_msr_c); + tcg_gen_andi_i32(cpu_msr_c, ina, 1); + tcg_gen_extract2_i32(out, ina, tmp, 1); + + tcg_temp_free_i32(tmp); +} + +static void gen_srl(TCGv_i32 out, TCGv_i32 ina) +{ + tcg_gen_andi_i32(cpu_msr_c, ina, 1); + tcg_gen_shri_i32(out, ina, 1); +} + +DO_TYPEA0(sra, false, gen_sra) +DO_TYPEA0(src, false, gen_src) +DO_TYPEA0(srl, false, gen_srl) + +static void gen_swaph(TCGv_i32 out, TCGv_i32 ina) +{ + tcg_gen_rotri_i32(out, ina, 16); +} + +DO_TYPEA0(swapb, false, tcg_gen_bswap32_i32) +DO_TYPEA0(swaph, false, gen_swaph) + +static bool trans_wdic(DisasContext *dc, arg_wdic *a) +{ + /* Cache operations are nops: only check for supervisor mode. */ + trap_userspace(dc, true); + return true; +} + DO_TYPEA(xor, false, tcg_gen_xor_i32) DO_TYPEBI(xori, false, tcg_gen_xori_i32) =20 @@ -754,78 +829,6 @@ static void dec_barrel(DisasContext *dc) } } =20 -static void dec_bit(DisasContext *dc) -{ - CPUState *cs =3D CPU(dc->cpu); - TCGv_i32 t0; - unsigned int op; - - op =3D dc->ir & ((1 << 9) - 1); - switch (op) { - case 0x21: - /* src. */ - t0 =3D tcg_temp_new_i32(); - - tcg_gen_shli_i32(t0, cpu_msr_c, 31); - tcg_gen_andi_i32(cpu_msr_c, cpu_R[dc->ra], 1); - if (dc->rd) { - tcg_gen_shri_i32(cpu_R[dc->rd], cpu_R[dc->ra], 1); - tcg_gen_or_i32(cpu_R[dc->rd], cpu_R[dc->rd], t0); - } - tcg_temp_free_i32(t0); - break; - - case 0x1: - case 0x41: - /* srl. */ - tcg_gen_andi_i32(cpu_msr_c, cpu_R[dc->ra], 1); - if (dc->rd) { - if (op =3D=3D 0x41) - tcg_gen_shri_i32(cpu_R[dc->rd], cpu_R[dc->ra], 1); - else - tcg_gen_sari_i32(cpu_R[dc->rd], cpu_R[dc->ra], 1); - } - break; - case 0x60: - tcg_gen_ext8s_i32(cpu_R[dc->rd], cpu_R[dc->ra]); - break; - case 0x61: - tcg_gen_ext16s_i32(cpu_R[dc->rd], cpu_R[dc->ra]); - break; - case 0x64: - case 0x66: - case 0x74: - case 0x76: - /* wdc. */ - trap_userspace(dc, true); - break; - case 0x68: - /* wic. */ - trap_userspace(dc, true); - break; - case 0xe0: - if (trap_illegal(dc, !dc->cpu->cfg.use_pcmp_instr)) { - return; - } - if (dc->cpu->cfg.use_pcmp_instr) { - tcg_gen_clzi_i32(cpu_R[dc->rd], cpu_R[dc->ra], 32); - } - break; - case 0x1e0: - /* swapb */ - tcg_gen_bswap32_i32(cpu_R[dc->rd], cpu_R[dc->ra]); - break; - case 0x1e2: - /*swaph */ - tcg_gen_rotri_i32(cpu_R[dc->rd], cpu_R[dc->ra], 16); - break; - default: - cpu_abort(cs, "unknown bit oc=3D%x op=3D%x rd=3D%d ra=3D%d rb= =3D%d\n", - (uint32_t)dc->base.pc_next, op, dc->rd, dc->ra, dc->= rb); - break; - } -} - static inline void sync_jmpstate(DisasContext *dc) { if (dc->jmp =3D=3D JMP_DIRECT || dc->jmp =3D=3D JMP_DIRECT_CC) { @@ -1548,7 +1551,6 @@ static struct decoder_info { }; void (*dec)(DisasContext *dc); } decinfo[] =3D { - {DEC_BIT, dec_bit}, {DEC_BARREL, dec_barrel}, {DEC_LD, dec_load}, {DEC_ST, dec_store}, --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891189; cv=none; d=zohomail.com; s=zohoarc; b=PBE9rH3nWF4NNM0jrnlCLrSYCLQBxkljtQAsUrYsSfMxCCgqUNy+VSIonx89mik4Tx5QP1+bNYC1YyLfPSp9b4DidSGNExRtZGl5OKfd/8u/jhWVY17eepS0wPwZfcqiJ+hYbYFalIVRAyytaUiZIrjx7iS3GZmmW1y4fPAYqlI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891189; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=boMbO6km7ZH1ifgSfM6KBDE3N/c3naFOieEgFbgkqCw=; b=l5VQ6UjOusvlXLNm8do7yfrzg8GcVPKvrj9qdz1eporGoIn6ICmfEE++HjRPMPy5Ru4q3meJNK4C0a4DAI9FH5pJ6xilsB56At5LeQzeYrh7+Qs07zekrM84YAJOUh/fIw4Ov7wiFCgrtFYVRjHisrfxlxGTQUNA1UwADOZUDQc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891189875908.372323489569; Mon, 31 Aug 2020 09:26:29 -0700 (PDT) Received: from localhost ([::1]:42062 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmdZ-0003T2-3V for importer@patchew.org; Mon, 31 Aug 2020 12:26:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34300) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKr-0005U0-3d for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:09 -0400 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]:46343) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKo-00064X-Sj for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:08 -0400 Received: by mail-pg1-x52a.google.com with SMTP id 31so820845pgy.13 for ; Mon, 31 Aug 2020 09:07:06 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=boMbO6km7ZH1ifgSfM6KBDE3N/c3naFOieEgFbgkqCw=; b=cHO5yCkuBOWbFXJQXqrz7JbebRc7y87TEDic6GXxgTky35LenCwdJ7Kll8XHr2q+hv P8QIjJ/+xu7DYYI3nKMNPfE4pEg3IXkkQ7YTapvYTuu6dtyrutqeKkRkoLIZ2eNBaqHj 9c4HuXLfxoXBUW5+RON+OjsZAdJ2bkqxYYo+Iii6LDGk7DJhyUu04HGRa6Z8SiU7n1ak kpCXCM5qCE6mZHow/unvFYNGP7OhosoSCLKaohXXUgDLwAueDKdcCeP2exSG6NfwwiQR PjOVLf7coAx+IXq1Lw+CiSqCa18aZJfGzQ002Z/MuZ0W1ym/3tCY10e82tk8b3gwy+VV EMaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=boMbO6km7ZH1ifgSfM6KBDE3N/c3naFOieEgFbgkqCw=; b=Wq1Z+NjtFgM15Xhq+Ij0CmurSkFNBWuBdnHqsyg/mjOgrCY/iyoQW0PN/1nUW4iz7t jsDA5lCcFTF2d4GIKt00KmnZhdJszrYQD60kQRpXRcGwHaFai3Yi59RSgeDeGcSd0lo1 AzqeCd9/v9OQiAUdYcWny4dqe8jomqWzyjKWqbqzqTF7XB6y3It0+5QETnHHtkN7XKq0 HpQtItpHRI38aOA7v2M40Ym9HgntK7Nx2Ac66iMzdcVb5SRO01GTkJ4g9ktlRXeOjZ3+ SeqzAbSkQVivMeOe84nNVzRoZLntiIrO9wJj5s9X9kJO7jIIbol/nBONNPfqQU08rgo2 kEHg== X-Gm-Message-State: AOAM5314zQRwdwhSIAAuLhq2zh79zGV1dlA66bDdYRvcSulorrbZC9Y9 EEJHHp5MPvp1bNGadx7s6JJ9zCtTFvaqzQ== X-Google-Smtp-Source: ABdhPJwzk2BsN4Lv4JpbcfUX+EEQ6BLS7TjirFcBkNikw03ebp0Ar8AmxYHI1e1QOsMAN0akWiT4VQ== X-Received: by 2002:aa7:9219:: with SMTP id 25mr1781045pfo.4.1598890025136; Mon, 31 Aug 2020 09:07:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 45/76] target/microblaze: Convert dec_barrel to decodetree Date: Mon, 31 Aug 2020 09:05:30 -0700 Message-Id: <20200831160601.833692-46-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52a; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52a.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/insns.decode | 20 ++++++ target/microblaze/translate.c | 125 +++++++++++++++++---------------- 2 files changed, 86 insertions(+), 59 deletions(-) diff --git a/target/microblaze/insns.decode b/target/microblaze/insns.decode index d265e36044..4644defbfe 100644 --- a/target/microblaze/insns.decode +++ b/target/microblaze/insns.decode @@ -30,6 +30,15 @@ # Officially typea, but with rb=3D=3D0, which is not used. @typea0 ...... rd:5 ra:5 ................ &typea0 =20 +# Officially typeb, but any immediate extension is unused. +@typeb_bs ...... rd:5 ra:5 ..... ...... imm:5 &typeb + +# For convenience, extract the two imm_w/imm_s fields, then pack +# them back together as "imm". Doing this makes it easiest to +# match the required zero at bit 5. +%ieimm 6:5 0:5 +@typeb_ie ...... rd:5 ra:5 ..... ..... . ..... &typeb imm=3D%ieimm + ### =20 { @@ -51,6 +60,17 @@ andi 101001 ..... ..... ................ = @typeb andn 100011 ..... ..... ..... 000 0000 0000 @typea andni 101011 ..... ..... ................ @typeb =20 +bsrl 010001 ..... ..... ..... 000 0000 0000 @typea +bsra 010001 ..... ..... ..... 010 0000 0000 @typea +bsll 010001 ..... ..... ..... 100 0000 0000 @typea + +bsrli 011001 ..... ..... 00000 000000 ..... @typeb_bs +bsrai 011001 ..... ..... 00000 010000 ..... @typeb_bs +bslli 011001 ..... ..... 00000 100000 ..... @typeb_bs + +bsefi 011001 ..... ..... 01000 .....0 ..... @typeb_ie +bsifi 011001 ..... ..... 10000 .....0 ..... @typeb_ie + clz 100100 ..... ..... 00000 000 1110 0000 @typea0 =20 cmp 000101 ..... ..... ..... 000 0000 0001 @typea diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 2d57f76548..964525f75e 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -368,6 +368,72 @@ DO_TYPEBI(andi, false, tcg_gen_andi_i32) DO_TYPEA(andn, false, tcg_gen_andc_i32) DO_TYPEBI(andni, false, gen_andni) =20 +static void gen_bsra(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) +{ + TCGv_i32 tmp =3D tcg_temp_new_i32(); + tcg_gen_andi_i32(tmp, inb, 31); + tcg_gen_sar_i32(out, ina, tmp); + tcg_temp_free_i32(tmp); +} + +static void gen_bsrl(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) +{ + TCGv_i32 tmp =3D tcg_temp_new_i32(); + tcg_gen_andi_i32(tmp, inb, 31); + tcg_gen_shr_i32(out, ina, tmp); + tcg_temp_free_i32(tmp); +} + +static void gen_bsll(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) +{ + TCGv_i32 tmp =3D tcg_temp_new_i32(); + tcg_gen_andi_i32(tmp, inb, 31); + tcg_gen_shl_i32(out, ina, tmp); + tcg_temp_free_i32(tmp); +} + +static void gen_bsefi(TCGv_i32 out, TCGv_i32 ina, int32_t imm) +{ + /* Note that decodetree has extracted and reassembled imm_w/imm_s. */ + int imm_w =3D extract32(imm, 5, 5); + int imm_s =3D extract32(imm, 0, 5); + + if (imm_w + imm_s > 32 || imm_w =3D=3D 0) { + /* These inputs have an undefined behavior. */ + qemu_log_mask(LOG_GUEST_ERROR, "bsefi: Bad input w=3D%d s=3D%d\n", + imm_w, imm_s); + } else { + tcg_gen_extract_i32(out, ina, imm_s, imm_w); + } +} + +static void gen_bsifi(TCGv_i32 out, TCGv_i32 ina, int32_t imm) +{ + /* Note that decodetree has extracted and reassembled imm_w/imm_s. */ + int imm_w =3D extract32(imm, 5, 5); + int imm_s =3D extract32(imm, 0, 5); + int width =3D imm_w - imm_s + 1; + + if (imm_w < imm_s) { + /* These inputs have an undefined behavior. */ + qemu_log_mask(LOG_GUEST_ERROR, "bsifi: Bad input w=3D%d s=3D%d\n", + imm_w, imm_s); + } else { + tcg_gen_deposit_i32(out, out, ina, imm_s, width); + } +} + +DO_TYPEA_CFG(bsra, use_barrel, false, gen_bsra) +DO_TYPEA_CFG(bsrl, use_barrel, false, gen_bsrl) +DO_TYPEA_CFG(bsll, use_barrel, false, gen_bsll) + +DO_TYPEBI_CFG(bsrai, use_barrel, false, tcg_gen_sari_i32) +DO_TYPEBI_CFG(bsrli, use_barrel, false, tcg_gen_shri_i32) +DO_TYPEBI_CFG(bslli, use_barrel, false, tcg_gen_shli_i32) + +DO_TYPEBI_CFG(bsefi, use_barrel, false, gen_bsefi) +DO_TYPEBI_CFG(bsifi, use_barrel, false, gen_bsifi) + static void gen_clz(TCGv_i32 out, TCGv_i32 ina) { tcg_gen_clzi_i32(out, ina, 32); @@ -771,64 +837,6 @@ static void dec_msr(DisasContext *dc) } } =20 -static void dec_barrel(DisasContext *dc) -{ - TCGv_i32 t0; - unsigned int imm_w, imm_s; - bool s, t, e =3D false, i =3D false; - - if (trap_illegal(dc, !dc->cpu->cfg.use_barrel)) { - return; - } - - if (dc->type_b) { - /* Insert and extract are only available in immediate mode. */ - i =3D extract32(dc->imm, 15, 1); - e =3D extract32(dc->imm, 14, 1); - } - s =3D extract32(dc->imm, 10, 1); - t =3D extract32(dc->imm, 9, 1); - imm_w =3D extract32(dc->imm, 6, 5); - imm_s =3D extract32(dc->imm, 0, 5); - - if (e) { - if (imm_w + imm_s > 32 || imm_w =3D=3D 0) { - /* These inputs have an undefined behavior. */ - qemu_log_mask(LOG_GUEST_ERROR, "bsefi: Bad input w=3D%d s=3D%d= \n", - imm_w, imm_s); - } else { - tcg_gen_extract_i32(cpu_R[dc->rd], cpu_R[dc->ra], imm_s, imm_w= ); - } - } else if (i) { - int width =3D imm_w - imm_s + 1; - - if (imm_w < imm_s) { - /* These inputs have an undefined behavior. */ - qemu_log_mask(LOG_GUEST_ERROR, "bsifi: Bad input w=3D%d s=3D%d= \n", - imm_w, imm_s); - } else { - tcg_gen_deposit_i32(cpu_R[dc->rd], cpu_R[dc->rd], cpu_R[dc->ra= ], - imm_s, width); - } - } else { - t0 =3D tcg_temp_new_i32(); - - tcg_gen_mov_i32(t0, *(dec_alu_op_b(dc))); - tcg_gen_andi_i32(t0, t0, 31); - - if (s) { - tcg_gen_shl_i32(cpu_R[dc->rd], cpu_R[dc->ra], t0); - } else { - if (t) { - tcg_gen_sar_i32(cpu_R[dc->rd], cpu_R[dc->ra], t0); - } else { - tcg_gen_shr_i32(cpu_R[dc->rd], cpu_R[dc->ra], t0); - } - } - tcg_temp_free_i32(t0); - } -} - static inline void sync_jmpstate(DisasContext *dc) { if (dc->jmp =3D=3D JMP_DIRECT || dc->jmp =3D=3D JMP_DIRECT_CC) { @@ -1551,7 +1559,6 @@ static struct decoder_info { }; void (*dec)(DisasContext *dc); } decinfo[] =3D { - {DEC_BARREL, dec_barrel}, {DEC_LD, dec_load}, {DEC_ST, dec_store}, {DEC_IMM, dec_imm}, --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891184; cv=none; d=zohomail.com; s=zohoarc; b=O3YigrEOCZp56hXIRaa65nL+zNxybOTYe8dr3SmgKJNne7MK5EfFxkMKSuZEJqJjGqP10oM4TrkN29sTcY253mtUkrovFyE6UpFlBPqhRN6y+rk8MFtgXlKRnmNhSqCELzAavNdHmLa4kcRRnWTJd61mu1uKyS4isXiLjT62dQY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891184; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Jni1aHgtz1xoXSckuiw7DlpTrv9tJ1hfnOPizu6DAmk=; b=YfSVnTIfjAxIi5uUECtf+GKK8O2KAfhwHsL1xau15WhtNlI0Y79ERWmahqlhNkQ27ezLdy4NwabqFglZcFMu+T50KnnehqQ5S56K8/7CHtj0BOPKqi3BDdT2eYZMZ0QsQ4S4AZif/jT1/PtSyTe9xllaHP4ydWN7yVnoaTa/RtM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891184741897.9195460690597; Mon, 31 Aug 2020 09:26:24 -0700 (PDT) Received: from localhost ([::1]:41554 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmdT-0003Gq-2E for importer@patchew.org; Mon, 31 Aug 2020 12:26:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34306) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKr-0005Vo-Tj for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:09 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]:52760) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKq-00064n-3N for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:09 -0400 Received: by mail-pj1-x1029.google.com with SMTP id o16so29089pjr.2 for ; Mon, 31 Aug 2020 09:07:07 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Jni1aHgtz1xoXSckuiw7DlpTrv9tJ1hfnOPizu6DAmk=; b=ckY9sN+WUn7AlY2+rkuto/4pq/OVmB/rjI0nPhU7+NDoyvJGcyGv2ufNF+xR6v0WiW 6Oda1WzW+a8y9059m1EAw6CgMPYYg9+42YqPMMdtLd8BU41+DfOHNLSQAT3JLJDPXdF3 BbbhEzW7HWe5Djwn5s0F9ueA7aZO3GLDNiXjiegfxRH7BQmI7SJMqgUbuvikf6B7MgIS zrgNhOgKqs92wqNDE5Wvc33NVAN8F6ZnCd2xWqAqutwIjCBxIvVSc+L0N0V4TIs/ZHCn 7CfNCL+YhvQhwjrRHkfrwZiRR2TyRaVGU4oK45dURI4fR/x/dV8pgyoALsVa9xvGiaa4 OP6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Jni1aHgtz1xoXSckuiw7DlpTrv9tJ1hfnOPizu6DAmk=; b=DJ8EPwjLL6q9S/HWtDg6j4eUYCbjnx5HNTrzM+qSaObFE0FTogzkSyX+XRbI0LU7W2 VIpwWM513yUWVtpjnzgj8FhDn90je2ocp8J8sH3Jnv3kXINO/18z98AT/SEKuNaxZW6S s/jjcH8TITSEXFA8KaZPhBeYPQK8dYrkYw1ggZ1pdYjZJUkYT8HyranrEJVPoulAfHBB 7uUOGXFjdvMpy0f81e09HKGSnIoUpiFBjFMKX2kLamfbvcjbefBh/FpJjkGvsWPXFOr3 2qcKBzw78koTNCmPF8RZBo5LDbCfI8tFM2u5w3Z07aXFabP29SwAW+0p5eNQpe8kEEnK xWdw== X-Gm-Message-State: AOAM531i3gm3WkpGBcpZkrMLepjn7AoO6t5Q3md9Hr6zmZ2yqskSVhZT 11lhxiMBL+iAAqHIMJgAf+k61dpmtP0g8w== X-Google-Smtp-Source: ABdhPJxoHY3OYpr0HSn+WzPeZBnnPSTXlS029PIiM7ED8Jhi0A6aytj/tPq4TXBNt/nVXL4Qkhk07g== X-Received: by 2002:a17:90a:5a48:: with SMTP id m8mr64011pji.181.1598890026338; Mon, 31 Aug 2020 09:07:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 46/76] target/microblaze: Convert dec_imm to decodetree Date: Mon, 31 Aug 2020 09:05:31 -0700 Message-Id: <20200831160601.833692-47-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1029.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/insns.decode | 2 ++ target/microblaze/translate.c | 18 +++++++++--------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/target/microblaze/insns.decode b/target/microblaze/insns.decode index 4644defbfe..ad15c16f9b 100644 --- a/target/microblaze/insns.decode +++ b/target/microblaze/insns.decode @@ -79,6 +79,8 @@ cmpu 000101 ..... ..... ..... 000 0000 0011 @= typea idiv 010010 ..... ..... ..... 000 0000 0000 @typea idivu 010010 ..... ..... ..... 000 0000 0010 @typea =20 +imm 101100 00000 00000 imm:16 + mul 010000 ..... ..... ..... 000 0000 0000 @typea mulh 010000 ..... ..... ..... 000 0000 0001 @typea mulhu 010000 ..... ..... ..... 000 0000 0011 @typea diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 964525f75e..54de136a16 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -477,6 +477,15 @@ static void gen_idivu(TCGv_i32 out, TCGv_i32 ina, TCGv= _i32 inb) DO_TYPEA_CFG(idiv, use_div, true, gen_idiv) DO_TYPEA_CFG(idivu, use_div, true, gen_idivu) =20 +static bool trans_imm(DisasContext *dc, arg_imm *arg) +{ + dc->ext_imm =3D arg->imm << 16; + tcg_gen_movi_i32(cpu_imm, dc->ext_imm); + dc->tb_flags |=3D IMM_FLAG; + dc->clear_imm =3D 0; + return true; +} + static void gen_mulh(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) { TCGv_i32 tmp =3D tcg_temp_new_i32(); @@ -848,14 +857,6 @@ static inline void sync_jmpstate(DisasContext *dc) } } =20 -static void dec_imm(DisasContext *dc) -{ - dc->ext_imm =3D dc->imm << 16; - tcg_gen_movi_i32(cpu_imm, dc->ext_imm); - dc->tb_flags |=3D IMM_FLAG; - dc->clear_imm =3D 0; -} - static inline void compute_ldst_addr(DisasContext *dc, bool ea, TCGv t) { /* Should be set to true if r1 is used by loadstores. */ @@ -1561,7 +1562,6 @@ static struct decoder_info { } decinfo[] =3D { {DEC_LD, dec_load}, {DEC_ST, dec_store}, - {DEC_IMM, dec_imm}, {DEC_BR, dec_br}, {DEC_BCC, dec_bcc}, {DEC_RTS, dec_rts}, --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891264; cv=none; d=zohomail.com; s=zohoarc; b=GSegNy1BwtF7W684G6lAYOA6Vefqqs1HhmYuAm/zDtkQWBPqpp5R+MIY9/5HKdHI553iJsszObcq7mEVnmRDlohMKTZlpQiMVO6+Z2XZQOoIjQW+GkljyCXhpWtXF8WS6cLZM3F6PEDtUA6SdtJrQgbKOPUCj0WYcNxlEElpB0Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891264; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=CtMYJ7CIPlKie9ABXlTJ3VIrDUZQvNuQ4dYjI8dHmfc=; b=U3J9vh5Ky733LOYRknrQhDnKuhwmZ8TcQCgmBlhIc5OPFDNeKI4qwVfEKd9X4Bf9AoIxUYyY6BARpErnaPR0f3PutLhvldrHy7rQVsOBTx94pyTjOic/xE4ZxY61c6n5sIfgyL4oHgrIM9X9SKg2zZ2Qex3MClSt+6SzDBfazQo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 159889126453223.208771016154515; Mon, 31 Aug 2020 09:27:44 -0700 (PDT) Received: from localhost ([::1]:50022 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmel-0006fN-La for importer@patchew.org; Mon, 31 Aug 2020 12:27:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34334) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKt-0005bP-Un for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:11 -0400 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]:35760) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKr-000654-K5 for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:11 -0400 Received: by mail-pg1-x52d.google.com with SMTP id g29so843086pgl.2 for ; Mon, 31 Aug 2020 09:07:09 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=CtMYJ7CIPlKie9ABXlTJ3VIrDUZQvNuQ4dYjI8dHmfc=; b=dh6R+LfjdJqDhGXWo7LQaLRwlevGDvTHWBhg4MML3A+vfvJJzMQ11kBUckAJRU9G+k x3PEmew8b4XV3ph6cGyUa0ysifSNB5T4sXw0Sx+p/r/ui5OxUkU+8UngXXNMudXxxSue 9M2XVjwAdgqYrMGzO60uLosJkAFk17TrB67jBiAURxSGThk7mO/bCCRmsbSQM1skAPk+ Mlodk3rskpubHQ3IsDtHwrW+peygbVYDZ13BIonVegwFB3A3yyuDRzZJ8GuN3OPUZBzJ RRTs6mCe76H4/a1Grhvd768lozgvYAajvAT198CtlUS9wwZtaztKDU7cJ+bRNE+sjKF4 f0Iw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=CtMYJ7CIPlKie9ABXlTJ3VIrDUZQvNuQ4dYjI8dHmfc=; b=E/LAY+3YYH3P2zpPCXsKCZEWh1fg7FQU/5UZyQoNWK/SCms93uO1hVM/5hkHVuVnl9 A29uJF/cfIrcGqGj8t7lW94LBFzDIdt9GGOczTTUgeQCPNCWq3Di17RkES0H75fhDbcn 2OzHOCStPDhrPBBiNSjvQb1CcVZrXsrtqbBZekHV+06ROW3BqD7xY246u69C4xzJDrJ1 cavMMjwDRgO+Hw5VinuiyXOMUXgD7fzCa4UWLGC5lCi5Sut4aHDo6WZdMNZ32lB00RSe 9RdZ/yzJUO/2e3EKrCk3ybPREic4fM5IBSE8IqwmCTqc8+n5wXR1ZokBuMosgt7xDirF lwOg== X-Gm-Message-State: AOAM531IgjIpQS6H0HHKpl4NvToM+Gu1SVuJs+TQfWn8B2dASmAPBGCI L6PlI+FQEdf6VjLfOCnP6HMKTUngzSrQUw== X-Google-Smtp-Source: ABdhPJwf2bW++N7J2ihNwn7Co9YMc9h42p1B7dQGfVDTH0EMd4Q0SdkigDNvxRTgwsqKZ61JSzRICg== X-Received: by 2002:a63:e157:: with SMTP id h23mr1829095pgk.239.1598890027597; Mon, 31 Aug 2020 09:07:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 47/76] target/microblaze: Convert dec_fpu to decodetree Date: Mon, 31 Aug 2020 09:05:32 -0700 Message-Id: <20200831160601.833692-48-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52d; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52d.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The current dec_check_fpuv2 test, raising an FPU exception for an unimplemented instruction, appears to be contradictory to the manual. Drop that and merely check use_fpu =3D=3D 2. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/insns.decode | 19 +++++ target/microblaze/translate.c | 152 +++++++++------------------------ 2 files changed, 60 insertions(+), 111 deletions(-) diff --git a/target/microblaze/insns.decode b/target/microblaze/insns.decode index ad15c16f9b..87e8f5679b 100644 --- a/target/microblaze/insns.decode +++ b/target/microblaze/insns.decode @@ -76,6 +76,25 @@ clz 100100 ..... ..... 00000 000 1110 0000 = @typea0 cmp 000101 ..... ..... ..... 000 0000 0001 @typea cmpu 000101 ..... ..... ..... 000 0000 0011 @typea =20 +fadd 010110 ..... ..... ..... 0000 000 0000 @typea +frsub 010110 ..... ..... ..... 0001 000 0000 @typea +fmul 010110 ..... ..... ..... 0010 000 0000 @typea +fdiv 010110 ..... ..... ..... 0011 000 0000 @typea +fcmp_un 010110 ..... ..... ..... 0100 000 0000 @typea +fcmp_lt 010110 ..... ..... ..... 0100 001 0000 @typea +fcmp_eq 010110 ..... ..... ..... 0100 010 0000 @typea +fcmp_le 010110 ..... ..... ..... 0100 011 0000 @typea +fcmp_gt 010110 ..... ..... ..... 0100 100 0000 @typea +fcmp_ne 010110 ..... ..... ..... 0100 101 0000 @typea +fcmp_ge 010110 ..... ..... ..... 0100 110 0000 @typea + +# Note that flt and fint, unlike fsqrt, are documented as having the RB +# operand which is unused. So allow the field to be non-zero but discard +# the value and treat as 2-operand insns. +flt 010110 ..... ..... ----- 0101 000 0000 @typea0 +fint 010110 ..... ..... ----- 0110 000 0000 @typea0 +fsqrt 010110 ..... ..... 00000 0111 000 0000 @typea0 + idiv 010010 ..... ..... ..... 000 0000 0000 @typea idivu 010010 ..... ..... ..... 000 0000 0010 @typea =20 diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 54de136a16..72541905ec 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -318,6 +318,14 @@ static bool do_typeb_val(DisasContext *dc, arg_typeb *= arg, bool side_effects, static bool trans_##NAME(DisasContext *dc, arg_typeb *a) \ { return do_typeb_val(dc, a, SE, FN); } =20 +#define ENV_WRAPPER2(NAME, HELPER) \ + static void NAME(TCGv_i32 out, TCGv_i32 ina) \ + { HELPER(out, cpu_env, ina); } + +#define ENV_WRAPPER3(NAME, HELPER) \ + static void NAME(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) \ + { HELPER(out, cpu_env, ina, inb); } + /* No input carry, but output carry. */ static void gen_add(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) { @@ -464,6 +472,39 @@ static void gen_cmpu(TCGv_i32 out, TCGv_i32 ina, TCGv_= i32 inb) DO_TYPEA(cmp, false, gen_cmp) DO_TYPEA(cmpu, false, gen_cmpu) =20 +ENV_WRAPPER3(gen_fadd, gen_helper_fadd) +ENV_WRAPPER3(gen_frsub, gen_helper_frsub) +ENV_WRAPPER3(gen_fmul, gen_helper_fmul) +ENV_WRAPPER3(gen_fdiv, gen_helper_fdiv) +ENV_WRAPPER3(gen_fcmp_un, gen_helper_fcmp_un) +ENV_WRAPPER3(gen_fcmp_lt, gen_helper_fcmp_lt) +ENV_WRAPPER3(gen_fcmp_eq, gen_helper_fcmp_eq) +ENV_WRAPPER3(gen_fcmp_le, gen_helper_fcmp_le) +ENV_WRAPPER3(gen_fcmp_gt, gen_helper_fcmp_gt) +ENV_WRAPPER3(gen_fcmp_ne, gen_helper_fcmp_ne) +ENV_WRAPPER3(gen_fcmp_ge, gen_helper_fcmp_ge) + +DO_TYPEA_CFG(fadd, use_fpu, true, gen_fadd) +DO_TYPEA_CFG(frsub, use_fpu, true, gen_frsub) +DO_TYPEA_CFG(fmul, use_fpu, true, gen_fmul) +DO_TYPEA_CFG(fdiv, use_fpu, true, gen_fdiv) +DO_TYPEA_CFG(fcmp_un, use_fpu, true, gen_fcmp_un) +DO_TYPEA_CFG(fcmp_lt, use_fpu, true, gen_fcmp_lt) +DO_TYPEA_CFG(fcmp_eq, use_fpu, true, gen_fcmp_eq) +DO_TYPEA_CFG(fcmp_le, use_fpu, true, gen_fcmp_le) +DO_TYPEA_CFG(fcmp_gt, use_fpu, true, gen_fcmp_gt) +DO_TYPEA_CFG(fcmp_ne, use_fpu, true, gen_fcmp_ne) +DO_TYPEA_CFG(fcmp_ge, use_fpu, true, gen_fcmp_ge) + +ENV_WRAPPER2(gen_flt, gen_helper_flt) +ENV_WRAPPER2(gen_fint, gen_helper_fint) +ENV_WRAPPER2(gen_fsqrt, gen_helper_fsqrt) + +DO_TYPEA0_CFG(flt, use_fpu >=3D 2, true, gen_flt) +DO_TYPEA0_CFG(fint, use_fpu >=3D 2, true, gen_fint) +DO_TYPEA0_CFG(fsqrt, use_fpu >=3D 2, true, gen_fsqrt) + +/* Does not use ENV_WRAPPER3, because arguments are swapped as well. */ static void gen_idiv(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) { gen_helper_divs(out, cpu_env, inb, ina); @@ -1403,116 +1444,6 @@ static void dec_rts(DisasContext *dc) tcg_gen_add_i32(cpu_btarget, cpu_R[dc->ra], *dec_alu_op_b(dc)); } =20 -static int dec_check_fpuv2(DisasContext *dc) -{ - if ((dc->cpu->cfg.use_fpu !=3D 2) && (dc->tb_flags & MSR_EE_FLAG)) { - gen_raise_hw_excp(dc, ESR_EC_FPU); - } - return (dc->cpu->cfg.use_fpu =3D=3D 2) ? PVR2_USE_FPU2_MASK : 0; -} - -static void dec_fpu(DisasContext *dc) -{ - unsigned int fpu_insn; - - if (trap_illegal(dc, !dc->cpu->cfg.use_fpu)) { - return; - } - - fpu_insn =3D (dc->ir >> 7) & 7; - - switch (fpu_insn) { - case 0: - gen_helper_fadd(cpu_R[dc->rd], cpu_env, cpu_R[dc->ra], - cpu_R[dc->rb]); - break; - - case 1: - gen_helper_frsub(cpu_R[dc->rd], cpu_env, cpu_R[dc->ra], - cpu_R[dc->rb]); - break; - - case 2: - gen_helper_fmul(cpu_R[dc->rd], cpu_env, cpu_R[dc->ra], - cpu_R[dc->rb]); - break; - - case 3: - gen_helper_fdiv(cpu_R[dc->rd], cpu_env, cpu_R[dc->ra], - cpu_R[dc->rb]); - break; - - case 4: - switch ((dc->ir >> 4) & 7) { - case 0: - gen_helper_fcmp_un(cpu_R[dc->rd], cpu_env, - cpu_R[dc->ra], cpu_R[dc->rb]); - break; - case 1: - gen_helper_fcmp_lt(cpu_R[dc->rd], cpu_env, - cpu_R[dc->ra], cpu_R[dc->rb]); - break; - case 2: - gen_helper_fcmp_eq(cpu_R[dc->rd], cpu_env, - cpu_R[dc->ra], cpu_R[dc->rb]); - break; - case 3: - gen_helper_fcmp_le(cpu_R[dc->rd], cpu_env, - cpu_R[dc->ra], cpu_R[dc->rb]); - break; - case 4: - gen_helper_fcmp_gt(cpu_R[dc->rd], cpu_env, - cpu_R[dc->ra], cpu_R[dc->rb]); - break; - case 5: - gen_helper_fcmp_ne(cpu_R[dc->rd], cpu_env, - cpu_R[dc->ra], cpu_R[dc->rb]); - break; - case 6: - gen_helper_fcmp_ge(cpu_R[dc->rd], cpu_env, - cpu_R[dc->ra], cpu_R[dc->rb]); - break; - default: - qemu_log_mask(LOG_UNIMP, - "unimplemented fcmp fpu_insn=3D%x pc=3D%= x" - " opc=3D%x\n", - fpu_insn, (uint32_t)dc->base.pc_next, - dc->opcode); - dc->abort_at_next_insn =3D 1; - break; - } - break; - - case 5: - if (!dec_check_fpuv2(dc)) { - return; - } - gen_helper_flt(cpu_R[dc->rd], cpu_env, cpu_R[dc->ra]); - break; - - case 6: - if (!dec_check_fpuv2(dc)) { - return; - } - gen_helper_fint(cpu_R[dc->rd], cpu_env, cpu_R[dc->ra]); - break; - - case 7: - if (!dec_check_fpuv2(dc)) { - return; - } - gen_helper_fsqrt(cpu_R[dc->rd], cpu_env, cpu_R[dc->ra]); - break; - - default: - qemu_log_mask(LOG_UNIMP, "unimplemented FPU insn fpu_insn=3D%x= pc=3D%x" - " opc=3D%x\n", - fpu_insn, (uint32_t)dc->base.pc_next, dc->opcode= ); - dc->abort_at_next_insn =3D 1; - break; - } -} - static void dec_null(DisasContext *dc) { if (trap_illegal(dc, true)) { @@ -1565,7 +1496,6 @@ static struct decoder_info { {DEC_BR, dec_br}, {DEC_BCC, dec_bcc}, {DEC_RTS, dec_rts}, - {DEC_FPU, dec_fpu}, {DEC_MSR, dec_msr}, {DEC_STREAM, dec_stream}, {{0, 0}, dec_null} --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891358; cv=none; d=zohomail.com; s=zohoarc; b=i/x/mN7l7vZaCUeVdCGpdWYC9QA4fB6NfaRDOeXqoTN9ESBw2N/Nxl2co8FwtxxkUDxA0Xekoh2F5yHp82Nn4/Ms86WNG77EVEDfyCKttqlXz312SrF17iPZQaX9qzhWAEPyxBaYifIdnVyqitBQ6ThgeaX1YLlP0ghiHK6BNSI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891358; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=5MvRykgMTcIF07iOKyUuKHIQ1MzsLcRrDLZyuwy1N1o=; b=TYxCnKey6ciZySrdAIXBsHC5F5fKKBZd9A+MVRPIXDsvPIJ0clxBHs+dtHMZDY6+xtMti0RqHmrgd3ND+yyWpbVFnCf4Y+HUooMaZr/Gqn40iDOyhTo3xx7skCQUJ5ndjPVyieWQ4RmYrQ4EcxJ/ANHdV9STrfFoJO2XgRxjXQc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891358341831.463679694442; Mon, 31 Aug 2020 09:29:18 -0700 (PDT) Received: from localhost ([::1]:58500 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmgH-0001co-Gw for importer@patchew.org; Mon, 31 Aug 2020 12:29:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34356) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKu-0005cv-HE for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:12 -0400 Received: from mail-pf1-x444.google.com ([2607:f8b0:4864:20::444]:44787) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKs-00065E-Jr for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:12 -0400 Received: by mail-pf1-x444.google.com with SMTP id o20so799450pfp.11 for ; Mon, 31 Aug 2020 09:07:10 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5MvRykgMTcIF07iOKyUuKHIQ1MzsLcRrDLZyuwy1N1o=; b=RxGguRanxxr7PBvN+flPPZ6N76nr8f1ySYtzxzmOkIJJKYBVY5WqBePv5abjHjRArZ 2U7hZTY2VyaMqAE0pQtKMC8IYhMfKK4rb4n7NjTzjNq8SQS3on5F3vYH3uhQii5x/PfJ izFgZyc0blhaQniolgXg3U1bxbhbpUfbU0+YZRUG1ZEEciJoXn5Uw4WUDjq9qMhu0ymx axDbHeI2CGNK0OWeQdoXW/bzrbb/M1ZAqwDD4+qzKU1MySMHwz2+5lyxe1MJ9AZjYz4a zy4xtI2FMUNIx4EXTXgVqpR41Ni/SQSNiubFdLGiBjoVnfQPt59ECVhKbT2wYlAtvNQE /H+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5MvRykgMTcIF07iOKyUuKHIQ1MzsLcRrDLZyuwy1N1o=; b=a3WxBo+2/44HOQIojpHsR+xIeXWm62QvzFoBtSiEdZ3/UD48Vm0SKORcfgbe8+eUW+ GhTEKNGrMpg1+J8JiHLRZ3YAYsNWsbstMeA6GdHxBEEaEtUs2SLeON2amofW4rgzdzcJ ZF6yyxXAeu9N76zKQV893b9zYO9E2D9wBJQ21EfvbrGOVHMj+9cLvl+HPfEFeJTIiNSd GTLXddgGZTFB+Dvm8FqQX+/gpmGbjkS1U0MuiUUCJloCa6MrSE+vz0Meuj0bzzXlyCC6 MCTvD/rDaj9ZVWCWw3MenMKfgM+mXDjEd86Qi3kVRRPAm839K8Zs21pwlGMmlO2Or2wI enOw== X-Gm-Message-State: AOAM530xrR90tNBh4IFIjQz1KnYDCwv87jjXCHZzBCn/ZIrgIX+DqxUh QaH9ZFk7HWyzfLg1X7FjGPGMNR7/Cv4cfA== X-Google-Smtp-Source: ABdhPJzg9tDuWdHtBjmSpKL5i6ew3SYrDxM8rzzcJec1O2C/Dcqcq/HGkprWu4uE+Y74VvfT9sX8og== X-Received: by 2002:a63:50c:: with SMTP id 12mr1768523pgf.173.1598890028847; Mon, 31 Aug 2020 09:07:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 48/76] target/microblaze: Fix cpu unwind for fpu exceptions Date: Mon, 31 Aug 2020 09:05:33 -0700 Message-Id: <20200831160601.833692-49-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::444; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x444.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Restore the correct PC when an exception must be raised. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/op_helper.c | 37 +++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/target/microblaze/op_helper.c b/target/microblaze/op_helper.c index d99d98051a..2c59d4492d 100644 --- a/target/microblaze/op_helper.c +++ b/target/microblaze/op_helper.c @@ -104,13 +104,16 @@ uint32_t helper_divu(CPUMBState *env, uint32_t a, uin= t32_t b) } =20 /* raise FPU exception. */ -static void raise_fpu_exception(CPUMBState *env) +static void raise_fpu_exception(CPUMBState *env, uintptr_t ra) { + CPUState *cs =3D env_cpu(env); + env->esr =3D ESR_EC_FPU; - helper_raise_exception(env, EXCP_HW_EXCP); + cs->exception_index =3D EXCP_HW_EXCP; + cpu_loop_exit_restore(cs, ra); } =20 -static void update_fpu_flags(CPUMBState *env, int flags) +static void update_fpu_flags(CPUMBState *env, int flags, uintptr_t ra) { int raise =3D 0; =20 @@ -133,7 +136,7 @@ static void update_fpu_flags(CPUMBState *env, int flags) if (raise && (env->pvr.regs[2] & PVR2_FPU_EXC_MASK) && (env->msr & MSR_EE)) { - raise_fpu_exception(env); + raise_fpu_exception(env, ra); } } =20 @@ -148,7 +151,7 @@ uint32_t helper_fadd(CPUMBState *env, uint32_t a, uint3= 2_t b) fd.f =3D float32_add(fa.f, fb.f, &env->fp_status); =20 flags =3D get_float_exception_flags(&env->fp_status); - update_fpu_flags(env, flags); + update_fpu_flags(env, flags, GETPC()); return fd.l; } =20 @@ -162,7 +165,7 @@ uint32_t helper_frsub(CPUMBState *env, uint32_t a, uint= 32_t b) fb.l =3D b; fd.f =3D float32_sub(fb.f, fa.f, &env->fp_status); flags =3D get_float_exception_flags(&env->fp_status); - update_fpu_flags(env, flags); + update_fpu_flags(env, flags, GETPC()); return fd.l; } =20 @@ -176,7 +179,7 @@ uint32_t helper_fmul(CPUMBState *env, uint32_t a, uint3= 2_t b) fb.l =3D b; fd.f =3D float32_mul(fa.f, fb.f, &env->fp_status); flags =3D get_float_exception_flags(&env->fp_status); - update_fpu_flags(env, flags); + update_fpu_flags(env, flags, GETPC()); =20 return fd.l; } @@ -191,7 +194,7 @@ uint32_t helper_fdiv(CPUMBState *env, uint32_t a, uint3= 2_t b) fb.l =3D b; fd.f =3D float32_div(fb.f, fa.f, &env->fp_status); flags =3D get_float_exception_flags(&env->fp_status); - update_fpu_flags(env, flags); + update_fpu_flags(env, flags, GETPC()); =20 return fd.l; } @@ -206,7 +209,7 @@ uint32_t helper_fcmp_un(CPUMBState *env, uint32_t a, ui= nt32_t b) =20 if (float32_is_signaling_nan(fa.f, &env->fp_status) || float32_is_signaling_nan(fb.f, &env->fp_status)) { - update_fpu_flags(env, float_flag_invalid); + update_fpu_flags(env, float_flag_invalid, GETPC()); r =3D 1; } =20 @@ -229,7 +232,7 @@ uint32_t helper_fcmp_lt(CPUMBState *env, uint32_t a, ui= nt32_t b) fb.l =3D b; r =3D float32_lt(fb.f, fa.f, &env->fp_status); flags =3D get_float_exception_flags(&env->fp_status); - update_fpu_flags(env, flags & float_flag_invalid); + update_fpu_flags(env, flags & float_flag_invalid, GETPC()); =20 return r; } @@ -245,7 +248,7 @@ uint32_t helper_fcmp_eq(CPUMBState *env, uint32_t a, ui= nt32_t b) fb.l =3D b; r =3D float32_eq_quiet(fa.f, fb.f, &env->fp_status); flags =3D get_float_exception_flags(&env->fp_status); - update_fpu_flags(env, flags & float_flag_invalid); + update_fpu_flags(env, flags & float_flag_invalid, GETPC()); =20 return r; } @@ -261,7 +264,7 @@ uint32_t helper_fcmp_le(CPUMBState *env, uint32_t a, ui= nt32_t b) set_float_exception_flags(0, &env->fp_status); r =3D float32_le(fa.f, fb.f, &env->fp_status); flags =3D get_float_exception_flags(&env->fp_status); - update_fpu_flags(env, flags & float_flag_invalid); + update_fpu_flags(env, flags & float_flag_invalid, GETPC()); =20 =20 return r; @@ -277,7 +280,7 @@ uint32_t helper_fcmp_gt(CPUMBState *env, uint32_t a, ui= nt32_t b) set_float_exception_flags(0, &env->fp_status); r =3D float32_lt(fa.f, fb.f, &env->fp_status); flags =3D get_float_exception_flags(&env->fp_status); - update_fpu_flags(env, flags & float_flag_invalid); + update_fpu_flags(env, flags & float_flag_invalid, GETPC()); return r; } =20 @@ -291,7 +294,7 @@ uint32_t helper_fcmp_ne(CPUMBState *env, uint32_t a, ui= nt32_t b) set_float_exception_flags(0, &env->fp_status); r =3D !float32_eq_quiet(fa.f, fb.f, &env->fp_status); flags =3D get_float_exception_flags(&env->fp_status); - update_fpu_flags(env, flags & float_flag_invalid); + update_fpu_flags(env, flags & float_flag_invalid, GETPC()); =20 return r; } @@ -306,7 +309,7 @@ uint32_t helper_fcmp_ge(CPUMBState *env, uint32_t a, ui= nt32_t b) set_float_exception_flags(0, &env->fp_status); r =3D !float32_lt(fa.f, fb.f, &env->fp_status); flags =3D get_float_exception_flags(&env->fp_status); - update_fpu_flags(env, flags & float_flag_invalid); + update_fpu_flags(env, flags & float_flag_invalid, GETPC()); =20 return r; } @@ -330,7 +333,7 @@ uint32_t helper_fint(CPUMBState *env, uint32_t a) fa.l =3D a; r =3D float32_to_int32(fa.f, &env->fp_status); flags =3D get_float_exception_flags(&env->fp_status); - update_fpu_flags(env, flags); + update_fpu_flags(env, flags, GETPC()); =20 return r; } @@ -344,7 +347,7 @@ uint32_t helper_fsqrt(CPUMBState *env, uint32_t a) fa.l =3D a; fd.l =3D float32_sqrt(fa.f, &env->fp_status); flags =3D get_float_exception_flags(&env->fp_status); - update_fpu_flags(env, flags); + update_fpu_flags(env, flags, GETPC()); =20 return fd.l; } --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891266; cv=none; d=zohomail.com; s=zohoarc; b=JiXYWmbMlyGhMvEJ+p4OEPxPCHUID6pZDHt9y7oIwJw1w6mJnX/4zbnWOsG89Uiijudo/hxL9yQAAH7BLUxZUG25InFIPNEveIJAO3qv542a1YZP+eOuVxscC7s/yYMXQxiBD6tn/Z3vhINDYZfeLJfz2Mrs2ZoKx1AyliOCjkw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891266; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ySARoLfSzmE74D4LscfR58zxrdoE7jaYed6YBL0jQs8=; b=UTmFFfiPfwE/uSmA7RslrhlQqGF5Tyze+fCbEk1pnsQQiMbdlGaoi7weYKB+PNIKed231iTfscg4uDdh+VeTluLxCS+A/5TtUAXam8q+WDWL21qw4Wn79WGmnfif6HlJ+df5rIrgT1y2V9RHKXuijZpFr2k4bcwgQ2jZmmSnN0U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891266179134.4617175542321; Mon, 31 Aug 2020 09:27:46 -0700 (PDT) Received: from localhost ([::1]:50312 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmen-0006n2-EF for importer@patchew.org; Mon, 31 Aug 2020 12:27:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34394) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKx-0005kQ-3o for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:15 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]:37620) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKt-00065N-KL for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:14 -0400 Received: by mail-pj1-x1029.google.com with SMTP id mw10so28221pjb.2 for ; Mon, 31 Aug 2020 09:07:11 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ySARoLfSzmE74D4LscfR58zxrdoE7jaYed6YBL0jQs8=; b=qhiGN9rIhhZTCZ+y5TeaYdycrJFmD5xCNU/1efZN8ESQDvCW8XtnJAm3In3XIyb42L O1Ub/fjZW+HexF3AJxOHJLFcu2IiN81+JNPYvOaI6Cx+sq+t7VQ9Dx/lcw/IxieLHhvX o0z6kOf9UgUD3lhGlbazNyAx52AbDNXu6180Y76UCDUiOuO4OjP65nrq2nGuaQuIAABQ sg6aMgKt0jiUCma3FKQD9aAWLGY3FiQpC9qnt++RYXXvPPY9Ob+v/2q+jKI4GHIa/NAv EVxpVy6JxigEgQVGnCKqclDPgPe6JCsMLVcL7eBB3EDG/N8CvSwYvIBopryX1zTSbR1G WPmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ySARoLfSzmE74D4LscfR58zxrdoE7jaYed6YBL0jQs8=; b=oVwMfl9SsEiAz4lwhTsTD+9ZC4FHCHiUQUgADGBTht4KLfBwMdLnDRv7TlVZ0E/mwI BNlkVuhato9Lz+FS/9yQEqwVrAOhnwrnoBvXWV+bmXDphpbD4QfXEkMJd03ISnpkYcjf ULcYaeLImEGKeXOyEo4jFQbLwuIrx2pEKGsDRXZrandBkAHflqdAL8MfJCgkz4ahS3Q0 v0xCVJSCsRTsDtEDjA3OZB9yCxjL8mRCfjoQqSiHAvRT9yODPm1SPvEaSQz8Ni4VOOF3 HmZhOwgu+f+6EameTVs+1t87r0y3O+ZTLvye15AlIYpPnwnhoRI7IeH/a1XXbufg584O pygg== X-Gm-Message-State: AOAM531JtVPLFnlEfyIyjA3/Hal3SeKJ6Gu1nvf/Z1Qa7J3LqN0MCd+O 0jGX5VexsjOoVQ9mymWQjemtgiy4ufONQA== X-Google-Smtp-Source: ABdhPJzGpkkHCP1WvXwZmRjCw+bv9KcD9FXFFZaRCk6sEbaZzjNeS8JBvV/frJY59vynRVJM27gkSQ== X-Received: by 2002:a17:902:42:: with SMTP id 60mr1027379pla.277.1598890029912; Mon, 31 Aug 2020 09:07:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 49/76] target/microblaze: Mark fpu helpers TCG_CALL_NO_WG Date: Mon, 31 Aug 2020 09:05:34 -0700 Message-Id: <20200831160601.833692-50-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1029.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Now that FSR is no longer a tcg global temp, we can say that the fpu helpers do not write to tcg temps. All temps are read implicitly by the fpu exception path. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/helper.h | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/target/microblaze/helper.h b/target/microblaze/helper.h index 79e1e8ecc7..64816c89e1 100644 --- a/target/microblaze/helper.h +++ b/target/microblaze/helper.h @@ -3,21 +3,21 @@ DEF_HELPER_FLAGS_2(raise_exception, TCG_CALL_NO_WG, noret= urn, env, i32) DEF_HELPER_FLAGS_3(divs, TCG_CALL_NO_WG, i32, env, i32, i32) DEF_HELPER_FLAGS_3(divu, TCG_CALL_NO_WG, i32, env, i32, i32) =20 -DEF_HELPER_3(fadd, i32, env, i32, i32) -DEF_HELPER_3(frsub, i32, env, i32, i32) -DEF_HELPER_3(fmul, i32, env, i32, i32) -DEF_HELPER_3(fdiv, i32, env, i32, i32) -DEF_HELPER_2(flt, i32, env, i32) -DEF_HELPER_2(fint, i32, env, i32) -DEF_HELPER_2(fsqrt, i32, env, i32) +DEF_HELPER_FLAGS_3(fadd, TCG_CALL_NO_WG, i32, env, i32, i32) +DEF_HELPER_FLAGS_3(frsub, TCG_CALL_NO_WG, i32, env, i32, i32) +DEF_HELPER_FLAGS_3(fmul, TCG_CALL_NO_WG, i32, env, i32, i32) +DEF_HELPER_FLAGS_3(fdiv, TCG_CALL_NO_WG, i32, env, i32, i32) +DEF_HELPER_FLAGS_2(flt, TCG_CALL_NO_WG, i32, env, i32) +DEF_HELPER_FLAGS_2(fint, TCG_CALL_NO_WG, i32, env, i32) +DEF_HELPER_FLAGS_2(fsqrt, TCG_CALL_NO_WG, i32, env, i32) =20 -DEF_HELPER_3(fcmp_un, i32, env, i32, i32) -DEF_HELPER_3(fcmp_lt, i32, env, i32, i32) -DEF_HELPER_3(fcmp_eq, i32, env, i32, i32) -DEF_HELPER_3(fcmp_le, i32, env, i32, i32) -DEF_HELPER_3(fcmp_gt, i32, env, i32, i32) -DEF_HELPER_3(fcmp_ne, i32, env, i32, i32) -DEF_HELPER_3(fcmp_ge, i32, env, i32, i32) +DEF_HELPER_FLAGS_3(fcmp_un, TCG_CALL_NO_WG, i32, env, i32, i32) +DEF_HELPER_FLAGS_3(fcmp_lt, TCG_CALL_NO_WG, i32, env, i32, i32) +DEF_HELPER_FLAGS_3(fcmp_eq, TCG_CALL_NO_WG, i32, env, i32, i32) +DEF_HELPER_FLAGS_3(fcmp_le, TCG_CALL_NO_WG, i32, env, i32, i32) +DEF_HELPER_FLAGS_3(fcmp_gt, TCG_CALL_NO_WG, i32, env, i32, i32) +DEF_HELPER_FLAGS_3(fcmp_ne, TCG_CALL_NO_WG, i32, env, i32, i32) +DEF_HELPER_FLAGS_3(fcmp_ge, TCG_CALL_NO_WG, i32, env, i32, i32) =20 DEF_HELPER_FLAGS_2(pcmpbf, TCG_CALL_NO_RWG_SE, i32, i32, i32) #if !defined(CONFIG_USER_ONLY) --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598890958; cv=none; d=zohomail.com; s=zohoarc; b=GSvMikdeEeojruN8dTTi/oxR+bFb1c+v1xCvrktntHwIqKVjbvGKO2jPZBiqUf8cAIDqxsVRJlMAB2RzIVivBoROZMdJ4Qgg7BgZuXTOz4QAQKmt3Ah5ii+MFdXYERYtCz43uURQfgRN9xxRf6epObYoIMrC8xBh+s6sMfqJLTo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598890958; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=6UAW/LQVnNBBxfSRwX11wMrvT5qNSW3Igjwiwe99RIE=; b=A5smazxyWkvdFxvy5sVGL3HN4OR6u/vZn1xkSjr4J7E5wC0j2YEJOxcoOCc9rsy33wbQZQycB2WiLIAniuUL5oMmZaHowq2MOzs6dRfcFMnZSwkVxq3qzcyngWDZroWN/oj4XayWjg3nt7sleRSGzjRlKQ324PcwCEDQC41OcAM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 159889095830657.643882141060544; Mon, 31 Aug 2020 09:22:38 -0700 (PDT) Received: from localhost ([::1]:49074 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmZp-0003LW-Do for importer@patchew.org; Mon, 31 Aug 2020 12:22:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34406) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKx-0005m9-Ly for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:15 -0400 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]:46348) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKv-00065f-BR for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:15 -0400 Received: by mail-pg1-x52f.google.com with SMTP id 31so821045pgy.13 for ; Mon, 31 Aug 2020 09:07:12 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6UAW/LQVnNBBxfSRwX11wMrvT5qNSW3Igjwiwe99RIE=; b=EiJULW20SvMhyeruN+0+K4w63UPacbSAHPYsi4E+WLnH8BmlPXu19iH6R1ft1F9Lq2 DdoW+xk7fBQEERNOkqnn4fekIOeJMS1lDZciOQzfVGOBNXNYgW/tSWmMrDwscUOYmr42 syR0i8KCuaOH5pdUbBHx8l9/nxXVLZtAEzYJ6BH66Sq9Ow3DnOEfpgi429bzV2xUUI5H K1/O1Td8vbF0ccqsl7k+vGFh29WV1Ayv62rjyRecoBB1HaoxD+IKSGq2KDYXr0W1e3Ls bx4IbfMN2dseSIKGbjPmpEwbfKyGnoEgn0+AJPJnGTD6Fdr2JqBX5IoaurrwJ5fwPIT+ /eaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6UAW/LQVnNBBxfSRwX11wMrvT5qNSW3Igjwiwe99RIE=; b=Oqe3BaNIv2NPBjreHwr2eEUdvApaLBVS0/fNq9+br64t16KsoDQhTP/6hQ55kUwO/d y6Qul3VDm5YTb8T9KpVc0SCmOiAHCVqrXDBEhyCwevt15OD38OmkhQikZWXmtGHYB8nM h/7SBUWNDP+5H+z85SPaV1TAj3/OIuO29oQGVCau70VvIpwglzLTLVwVWRPJh8dOWswu KuPHv6Xn9LsI9Q2V6U4A5vZEAnUEYVuCU84IukGpCFLeeiqOV+rzHsussBb84SwdWjlC 6OvWg1GdWpW5zyAa2cgUJ4a0nKFSYlDBQ7hMe8UcRjCyqdwvb3tMBAFjTh6sT06OX8l0 ekzw== X-Gm-Message-State: AOAM533ScXbPG3a0vPGzmcknSXwZV8s4JTHMk0jgqBCsk2hqEbCV/XY+ J3TZc7J+d+lPaBy8RxV8aOfAFaDy/accow== X-Google-Smtp-Source: ABdhPJwknj2YsWbOfIczvmeDnrWMjtaB/oTkn3wdSrKbDLf2+eBuYMLJkJ1bUYjZeLQRLnxzMXQwSQ== X-Received: by 2002:a63:511a:: with SMTP id f26mr1783362pgb.15.1598890031449; Mon, 31 Aug 2020 09:07:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 50/76] target/microblaze: Replace MSR_EE_FLAG with MSR_EE Date: Mon, 31 Aug 2020 09:05:35 -0700 Message-Id: <20200831160601.833692-51-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52f; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52f.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" There's no reason to define MSR_EE_FLAG; we can just use the original MSR_EE define. Document the other flags copied into tb_flags with iflag to reserve those bits. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/cpu.h | 4 +++- target/microblaze/translate.c | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index 013858b8e0..594501e4e7 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -254,7 +254,9 @@ struct CPUMBState { =20 /* Internal flags. */ #define IMM_FLAG 4 -#define MSR_EE_FLAG (1 << 8) +/* MSR_EE (1 << 8) */ +/* MSR_UM (1 << 11) */ +/* MSR_VM (1 << 13) */ #define DRTI_FLAG (1 << 16) #define DRTE_FLAG (1 << 17) #define DRTB_FLAG (1 << 18) diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 72541905ec..1f6731e0af 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -162,7 +162,7 @@ static void gen_goto_tb(DisasContext *dc, int n, target= _ulong dest) */ static bool trap_illegal(DisasContext *dc, bool cond) { - if (cond && (dc->tb_flags & MSR_EE_FLAG) + if (cond && (dc->tb_flags & MSR_EE) && dc->cpu->cfg.illegal_opcode_exception) { gen_raise_hw_excp(dc, ESR_EC_ILLEGAL_OP); } @@ -178,7 +178,7 @@ static bool trap_userspace(DisasContext *dc, bool cond) int mem_index =3D cpu_mmu_index(&dc->cpu->env, false); bool cond_user =3D cond && mem_index =3D=3D MMU_USER_IDX; =20 - if (cond_user && (dc->tb_flags & MSR_EE_FLAG)) { + if (cond_user && (dc->tb_flags & MSR_EE)) { gen_raise_hw_excp(dc, ESR_EC_PRIVINSN); } return cond_user; --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891456; cv=none; d=zohomail.com; s=zohoarc; b=OQl6b/ltolODPzUolmq8amSUraMqnaKXHjmETLWg6y7c6hHqKV/4EpZ3ihdVe8dH/9GnL4VeUK+BtJv3xpdS4W2NUzlGdv1IhD5mOkWhvW5KQbnk7kKTDiD6X+OEdB1jYxqQf9s8vBdIp/0eYTsWc0ENz0WCtvfHEugQUT+LefQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891456; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=pM4ivWigF6aGuCdn4jvlwQnVJrMGcBGI733lqrG0wt8=; b=WfG3vXThZDazfoHIHYLtPaRjACfofViTitFGS7COgoBLOvYL4gDchOoz6PKJbkkOC5oA/Jv3R6bKJ0qnPbv14oxgDZ/57cph4go2J1usYOhVqQpAm+dNrANsL8sXa8VxdDkBIWyiQ9XGDDWILsjDdfkYS5tJFx0tU646tAQ9upw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891456377807.0467145154017; Mon, 31 Aug 2020 09:30:56 -0700 (PDT) Received: from localhost ([::1]:38732 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmhr-000538-Dm for importer@patchew.org; Mon, 31 Aug 2020 12:30:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34428) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKy-0005nh-GY for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:16 -0400 Received: from mail-pg1-x531.google.com ([2607:f8b0:4864:20::531]:46350) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKw-00065v-Mn for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:16 -0400 Received: by mail-pg1-x531.google.com with SMTP id 31so821100pgy.13 for ; Mon, 31 Aug 2020 09:07:14 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=pM4ivWigF6aGuCdn4jvlwQnVJrMGcBGI733lqrG0wt8=; b=eo0V4/VtOHM1WLUX8u1mPPtH4HcbQbO93GYkPjuc14JcxAKyPyGhWEnWE6Jg8m2lCe hzucK6vnsoY4UvHNCz0OBNTzuhqu3aUdAizlGcMdLUXHjsAcTv9ooOw6oZu6/WsR4DW5 VLQ02C6BdUvf2Mr0vF+6xkhouKPOpTAA3iIZ23gjJs2+vFg1kYGbyqNWwAGgisH8YT7H 94leYBUkLp96J/PfpmL9iy5YQTAtTwELumMYYrsXiDHItoiUp+49+kedSr6Pworb+A4T NvnhH2x6I+H3HGabPGsAWDm3fmJQ1Y4IqLQf0h78ztsrZQcUxlZWVtVPErBNjf6c5NtV oZ2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=pM4ivWigF6aGuCdn4jvlwQnVJrMGcBGI733lqrG0wt8=; b=PNOgTakZbNg4Ay2cGrpSdZ/+e9CTrvraCjJ3yAk2ts9Hdhy+mna92Aw9TsQ0tEE+d6 X38OK6sCD7mMxudwmY4c5fq46yKz180p/qPAnZwvp7ZVNuhReDfUfSWxfhr5KNSis4cs zWxRu5BYCh9YTlygmtF6jIjPmTm1QnismhFK626Hc1PKTnKyb0zcOaFjOMRFMIBNSuvs i/GDlVoqkuHZwXH/xakRvAkPDXTGoUjM17nA0svzYuCrgWj27nwvrdAFeqWcbKtvLs5A Y/kRRHJ8rQpTWpflrca+z/TtBPM+EbhzbQ7WzpvUMq/z/RY1mI4ynhKBovqW01/ziOsj YEuA== X-Gm-Message-State: AOAM533EUwCC320kXcSeOhZsuHGrdnKwxdjsPZ9KcZRZeIEIQZdszT4D HPv7kdcLmoashw8mCDAs0jaTynZxvmoXbg== X-Google-Smtp-Source: ABdhPJySy/52fa/mjP+R9XffyDmGbouX92CKqdSdx84pqgjMFx5A8jV09hupKEwCZEE8nTeQ+3rFfA== X-Received: by 2002:a62:406:: with SMTP id 6mr1762033pfe.193.1598890032881; Mon, 31 Aug 2020 09:07:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 51/76] target/microblaze: Cache mem_index in DisasContext Date: Mon, 31 Aug 2020 09:05:36 -0700 Message-Id: <20200831160601.833692-52-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::531; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x531.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Ideally, nothing outside the top-level of translation even has access to env. Cache the value in init_disas_context. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/translate.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 1f6731e0af..a55e110171 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -73,6 +73,7 @@ typedef struct DisasContext { unsigned int delayed_branch; unsigned int tb_flags, synced_flags; /* tb dependent flags. */ unsigned int clear_imm; + int mem_index; =20 #define JMP_NOJMP 0 #define JMP_DIRECT 1 @@ -175,8 +176,7 @@ static bool trap_illegal(DisasContext *dc, bool cond) */ static bool trap_userspace(DisasContext *dc, bool cond) { - int mem_index =3D cpu_mmu_index(&dc->cpu->env, false); - bool cond_user =3D cond && mem_index =3D=3D MMU_USER_IDX; + bool cond_user =3D cond && dc->mem_index =3D=3D MMU_USER_IDX; =20 if (cond_user && (dc->tb_flags & MSR_EE)) { gen_raise_hw_excp(dc, ESR_EC_PRIVINSN); @@ -968,7 +968,7 @@ static void dec_load(DisasContext *dc) TCGv addr; unsigned int size; bool rev =3D false, ex =3D false, ea =3D false; - int mem_index =3D cpu_mmu_index(&dc->cpu->env, false); + int mem_index =3D dc->mem_index; MemOp mop; =20 mop =3D dc->opcode & 3; @@ -1077,7 +1077,7 @@ static void dec_store(DisasContext *dc) TCGLabel *swx_skip =3D NULL; unsigned int size; bool rev =3D false, ex =3D false, ea =3D false; - int mem_index =3D cpu_mmu_index(&dc->cpu->env, false); + int mem_index =3D dc->mem_index; MemOp mop; =20 mop =3D dc->opcode & 3; @@ -1540,6 +1540,7 @@ static void mb_tr_init_disas_context(DisasContextBase= *dcb, CPUState *cs) dc->ext_imm =3D dc->base.tb->cs_base; dc->r0 =3D NULL; dc->r0_set =3D false; + dc->mem_index =3D cpu_mmu_index(&cpu->env, false); =20 bound =3D -(dc->base.pc_first | TARGET_PAGE_MASK) / 4; dc->base.max_insns =3D MIN(dc->base.max_insns, bound); --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891267; cv=none; d=zohomail.com; s=zohoarc; b=mZRCn1O/Pdd+fmlUoJFwLYGXYIfmY7NfupY2QosXPSwLJYtcMW8nfzyLS8AagaHzBpdK+E3EXXIUDLn0Zjqz7tdA5uFXiOzyBfiiOnSTIF9+OwachJO2AqWYeFn+Il6wEY171saXltzcITTB4VLSi1ISXB7qZnDobRO83KSz/vA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891267; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=2cPf8f8AdkhKlG+8ucMI1Z77vF2YecMji34EykTW4mg=; b=DB6yylNnpdUuf0N4MeuID6PJK8lwQfwJEYMtolL2ZSVZdjrE+hE502v28cnGfTDq4vPRyBHIbIZP39xuhqy3Qa66sNm6Aqe6mK72YxC7d3XE+2+MaFfuweWMMcdFzNHwF0yXX0WIdKQLnprNi/CUw6ApYeK/oRw1OiXkl+qV1MU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891267568572.959650886919; Mon, 31 Aug 2020 09:27:47 -0700 (PDT) Received: from localhost ([::1]:50450 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmeo-0006qF-QA for importer@patchew.org; Mon, 31 Aug 2020 12:27:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34434) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmKz-0005pw-HH for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:17 -0400 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]:56169) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKx-000665-PW for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:17 -0400 Received: by mail-pj1-x102c.google.com with SMTP id 2so21065pjx.5 for ; Mon, 31 Aug 2020 09:07:15 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=2cPf8f8AdkhKlG+8ucMI1Z77vF2YecMji34EykTW4mg=; b=BckR/dk3q8enNYYRrlgBHDtOMtxv+XIONca/zQDIr8p+z7+h5rlvr3hCaLLSCLyvHz QfAdHc653Pjv2BM+Iia81ru9EJM0XEdLH5kNh3Eqz8QbGuS16VdzUmTO0Rzg0+9/ddmm FYv8sXBKiCC7zbhxPvom9ZhBit9l40Y6V91hmJYYRqa+OilH9CVzDux/JH7Pg6jWUGma Wg+0LqFFGU7poQ7hYSufwRSpCdml4mS191uMHn2zNZsbSA7vxXmFPvrtKQ/rIXCNt3on lyDUOc3ty+MS7w4izemic+Drf8pG8r8VpddWPgQ3pMbzFheFKwBpeUiZP2caHBEak0/T +ezA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=2cPf8f8AdkhKlG+8ucMI1Z77vF2YecMji34EykTW4mg=; b=C74eAQRn5awa5ypXEKFbFmH64FHMIhcpDyNMEUJqXYUOXLlTQk/PxL6r9kLH5EFrqp 8MIpfN0ZpVtBJIpOdo8AHyXenIyyfhjK9EhseO9Yy+BKD1LbpwoQa/MNUt2uGDmzP6rR hKBsRV85+7D1g+BTl9Mkvbtd8S7puLsRhH5F7qqnZU/swn+gqn7d63ZQjVkHyjVVsxTd d8eyol9UH6SEuf+9eAnP1YEC5ze9im/MtigFa3w1f+jctJY58iwCbNolacXaWV3+xg8i OFgSdRELmhjU05qCETmTngpLnoBxv86cXaAI6ZxSDsyWNpHOyNQcidz5gEZ6QMHJc+Id ey0w== X-Gm-Message-State: AOAM533HeQXGVDD25+t4BGxpMWIDaX2VOkhKumpboZCuxDXMCfHoHSTP gTp8H+hF5mmt+jKsgqtXwWAflJh0bpfW3w== X-Google-Smtp-Source: ABdhPJyuTR6ws67h4jZeyjkgEW4PO+6WFkt7iqbPvXC7Qnslyv4opOs4aYT3Kyy57ErjRzNSFPy0DQ== X-Received: by 2002:a17:902:6902:: with SMTP id j2mr1558149plk.2.1598890034024; Mon, 31 Aug 2020 09:07:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 52/76] target/microblaze: Fix cpu unwind for stackprot Date: Mon, 31 Aug 2020 09:05:37 -0700 Message-Id: <20200831160601.833692-53-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102c; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102c.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Restore the correct PC when an exception must be raised. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/helper.h | 2 +- target/microblaze/op_helper.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/target/microblaze/helper.h b/target/microblaze/helper.h index 64816c89e1..a473c1867b 100644 --- a/target/microblaze/helper.h +++ b/target/microblaze/helper.h @@ -26,7 +26,7 @@ DEF_HELPER_4(mmu_write, void, env, i32, i32, i32) #endif =20 DEF_HELPER_5(memalign, void, env, tl, i32, i32, i32) -DEF_HELPER_2(stackprot, void, env, tl) +DEF_HELPER_FLAGS_2(stackprot, TCG_CALL_NO_WG, void, env, tl) =20 DEF_HELPER_2(get, i32, i32, i32) DEF_HELPER_3(put, void, i32, i32, i32) diff --git a/target/microblaze/op_helper.c b/target/microblaze/op_helper.c index 2c59d4492d..a99c467364 100644 --- a/target/microblaze/op_helper.c +++ b/target/microblaze/op_helper.c @@ -389,12 +389,16 @@ void helper_memalign(CPUMBState *env, target_ulong ad= dr, void helper_stackprot(CPUMBState *env, target_ulong addr) { if (addr < env->slr || addr > env->shr) { + CPUState *cs =3D env_cpu(env); + qemu_log_mask(CPU_LOG_INT, "Stack protector violation at " TARGET_FMT_lx " %x %x\n", addr, env->slr, env->shr); + env->ear =3D addr; env->esr =3D ESR_EC_STACKPROT; - helper_raise_exception(env, EXCP_HW_EXCP); + cs->exception_index =3D EXCP_HW_EXCP; + cpu_loop_exit_restore(cs, GETPC()); } } =20 --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891569; cv=none; d=zohomail.com; s=zohoarc; b=g9gu7CUv5MEpzpplJvtAsbfRdS15shBBAEco3jH6QR6mq1jq4QqyF0H3u3Lye+jHTAv11I2dFIYb535s/XHlMwFXRPjKV1t3er0f5RTZOY4XgA6gD1cI2zQd3ixAFnXhpRD1cTi6CdRBgEk9W9mxPd5pjM76zF8lXt8ATfA9G2M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891569; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=OF+n4lfXCPrHMxyBmLfVzNw7xG6DYBX8dPoMcyp+q6s=; b=bHfkxJq4fo4At5vVaR/qPkqDRXaHtgqIxAIf15nS4qQzedVLRT7/9AAOjjRgthmts7KzvzvaF6VAQu50Srh2QhWr3D6szszMAeqzM/OLkUIr8cAiWpoh8d+5u5Zl9kx490ciYDjA0pLAoIoZzAaHUgGNknIHoamCtXJwQhLe07E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891569094283.3417543578521; Mon, 31 Aug 2020 09:32:49 -0700 (PDT) Received: from localhost ([::1]:46666 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmjg-0008PV-3d for importer@patchew.org; Mon, 31 Aug 2020 12:32:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34466) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmL2-0005y7-MW for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:20 -0400 Received: from mail-pg1-x534.google.com ([2607:f8b0:4864:20::534]:41198) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmKz-00067Y-Hl for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:20 -0400 Received: by mail-pg1-x534.google.com with SMTP id w186so830342pgb.8 for ; Mon, 31 Aug 2020 09:07:17 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=OF+n4lfXCPrHMxyBmLfVzNw7xG6DYBX8dPoMcyp+q6s=; b=KRKhL0n5xG9u3FfGv8oWHV7PHCBYNHc4vQQiennTSrO78OjSqNY4zecZj132Wjihkb rtrM28PSpgcMGK6yOC2/bducQsmL/b2wLVuj4HJd1TC23ZRPb7GTyEPq2QinvYKRmLfS s8x1b7+25Y3FmJozgVh2AOMoYoSMflwmdYVO4fS8ocY1qHTbxib8JC5jxw62oU5eH/mu 36cxQYVEI0Yo8DhPD2IepixuXI8LXyhP3MCe7gyXNe1wuAgx3TBCypAT5Reefw6hRro/ Y3WfVreQ06e4sO2wlWrjWwTaZOa14Lu3SnlzCzCoMgB177gJW45xJTFJyjb7iUbAdSB2 56SQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=OF+n4lfXCPrHMxyBmLfVzNw7xG6DYBX8dPoMcyp+q6s=; b=QBac1AGtgV9ncPaaRd3vClLq3dUhVVT5DwiI8h/hwAmX6aENgDxjPBoteSAq9sboSL 6CmPntK242Kvks1U+MI9ayIvKFi1rQ9UxsDkLH6Cdc9vTDE+GfW15MxrzcGZi5Vzp65f jVZOpQQpHgcnSxQRSw7CgmBiWpY4n7P5sUV6s04xv9oOXMVSq55+VpEAAzy1Hj9spfjT ZUKJqpjhU/wW7F9G8sH10te1ya5M3UsjsQ+P3ueqT0Ew2CGmmm1E3GVd2ExLqZrs+WiP 97sRmwKhs7CG0+LbVARGEBkQX+PZj50E3nqdYlog9Ygd+1WB7+j7DzoYWOlTRDUTb3PT Fbrg== X-Gm-Message-State: AOAM532jH3PeEHwC1y7vB/CzcR59+0/Atd1LOnYZ73eVDHwOWw6V8ioK LzXkxVBFLIBee9WszPFchRvvlYdoQK3lfQ== X-Google-Smtp-Source: ABdhPJxXG0wH+nULpzMQ+YDuhs2rnHk+1bSRehNnv+rCzJyXMTDiTcjwmrPtz4ZMQlCeS+ziGA6SYA== X-Received: by 2002:a62:4e96:: with SMTP id c144mr1738523pfb.27.1598890035310; Mon, 31 Aug 2020 09:07:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 53/76] target/microblaze: Convert dec_load and dec_store to decodetree Date: Mon, 31 Aug 2020 09:05:38 -0700 Message-Id: <20200831160601.833692-54-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::534; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x534.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/insns.decode | 32 ++ target/microblaze/translate.c | 723 +++++++++++++++++++-------------- 2 files changed, 456 insertions(+), 299 deletions(-) diff --git a/target/microblaze/insns.decode b/target/microblaze/insns.decode index 87e8f5679b..47b92b9cbc 100644 --- a/target/microblaze/insns.decode +++ b/target/microblaze/insns.decode @@ -100,6 +100,22 @@ idivu 010010 ..... ..... ..... 000 0000 0010= @typea =20 imm 101100 00000 00000 imm:16 =20 +lbu 110000 ..... ..... ..... 0000 000 0000 @typea +lbur 110000 ..... ..... ..... 0100 000 0000 @typea +lbuea 110000 ..... ..... ..... 0001 000 0000 @typea +lbui 111000 ..... ..... ................ @typeb + +lhu 110001 ..... ..... ..... 0000 000 0000 @typea +lhur 110001 ..... ..... ..... 0100 000 0000 @typea +lhuea 110001 ..... ..... ..... 0001 000 0000 @typea +lhui 111001 ..... ..... ................ @typeb + +lw 110010 ..... ..... ..... 0000 000 0000 @typea +lwr 110010 ..... ..... ..... 0100 000 0000 @typea +lwea 110010 ..... ..... ..... 0001 000 0000 @typea +lwx 110010 ..... ..... ..... 1000 000 0000 @typea +lwi 111010 ..... ..... ................ @typeb + mul 010000 ..... ..... ..... 000 0000 0000 @typea mulh 010000 ..... ..... ..... 000 0000 0001 @typea mulhu 010000 ..... ..... ..... 000 0000 0011 @typea @@ -123,6 +139,22 @@ rsubic 001011 ..... ..... ................ = @typeb rsubik 001101 ..... ..... ................ @typeb rsubikc 001111 ..... ..... ................ @typeb =20 +sb 110100 ..... ..... ..... 0000 000 0000 @typea +sbr 110100 ..... ..... ..... 0100 000 0000 @typea +sbea 110100 ..... ..... ..... 0001 000 0000 @typea +sbi 111100 ..... ..... ................ @typeb + +sh 110101 ..... ..... ..... 0000 000 0000 @typea +shr 110101 ..... ..... ..... 0100 000 0000 @typea +shea 110101 ..... ..... ..... 0001 000 0000 @typea +shi 111101 ..... ..... ................ @typeb + +sw 110110 ..... ..... ..... 0000 000 0000 @typea +swr 110110 ..... ..... ..... 0100 000 0000 @typea +swea 110110 ..... ..... ..... 0001 000 0000 @typea +swx 110110 ..... ..... ..... 1000 000 0000 @typea +swi 111110 ..... ..... ................ @typeb + sext8 100100 ..... ..... 00000 000 0110 0000 @typea0 sext16 100100 ..... ..... 00000 000 0110 0001 @typea0 =20 diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index a55e110171..d2baa7db0e 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -105,6 +105,17 @@ static inline void t_sync_flags(DisasContext *dc) } } =20 +static inline void sync_jmpstate(DisasContext *dc) +{ + if (dc->jmp =3D=3D JMP_DIRECT || dc->jmp =3D=3D JMP_DIRECT_CC) { + if (dc->jmp =3D=3D JMP_DIRECT) { + tcg_gen_movi_i32(cpu_btaken, 1); + } + dc->jmp =3D JMP_INDIRECT; + tcg_gen_movi_i32(cpu_btarget, dc->jmp_pc); + } +} + static void gen_raise_exception(DisasContext *dc, uint32_t index) { TCGv_i32 tmp =3D tcg_const_i32(index); @@ -668,6 +679,419 @@ static bool trans_wdic(DisasContext *dc, arg_wdic *a) DO_TYPEA(xor, false, tcg_gen_xor_i32) DO_TYPEBI(xori, false, tcg_gen_xori_i32) =20 +static TCGv compute_ldst_addr_typea(DisasContext *dc, int ra, int rb) +{ + TCGv ret =3D tcg_temp_new(); + + /* If any of the regs is r0, set t to the value of the other reg. */ + if (ra && rb) { + TCGv_i32 tmp =3D tcg_temp_new_i32(); + tcg_gen_add_i32(tmp, cpu_R[ra], cpu_R[rb]); + tcg_gen_extu_i32_tl(ret, tmp); + tcg_temp_free_i32(tmp); + } else if (ra) { + tcg_gen_extu_i32_tl(ret, cpu_R[ra]); + } else if (rb) { + tcg_gen_extu_i32_tl(ret, cpu_R[rb]); + } else { + tcg_gen_movi_tl(ret, 0); + } + + if ((ra =3D=3D 1 || rb =3D=3D 1) && dc->cpu->cfg.stackprot) { + gen_helper_stackprot(cpu_env, ret); + } + return ret; +} + +static TCGv compute_ldst_addr_typeb(DisasContext *dc, int ra, int imm) +{ + TCGv ret =3D tcg_temp_new(); + + /* If any of the regs is r0, set t to the value of the other reg. */ + if (ra) { + TCGv_i32 tmp =3D tcg_temp_new_i32(); + tcg_gen_addi_i32(tmp, cpu_R[ra], imm); + tcg_gen_extu_i32_tl(ret, tmp); + tcg_temp_free_i32(tmp); + } else { + tcg_gen_movi_tl(ret, (uint32_t)imm); + } + + if (ra =3D=3D 1 && dc->cpu->cfg.stackprot) { + gen_helper_stackprot(cpu_env, ret); + } + return ret; +} + +static TCGv compute_ldst_addr_ea(DisasContext *dc, int ra, int rb) +{ + int addr_size =3D dc->cpu->cfg.addr_size; + TCGv ret =3D tcg_temp_new(); + + if (addr_size =3D=3D 32 || ra =3D=3D 0) { + if (rb) { + tcg_gen_extu_i32_tl(ret, cpu_R[rb]); + } else { + tcg_gen_movi_tl(ret, 0); + } + } else { + if (rb) { + tcg_gen_concat_i32_i64(ret, cpu_R[rb], cpu_R[ra]); + } else { + tcg_gen_extu_i32_tl(ret, cpu_R[ra]); + tcg_gen_shli_tl(ret, ret, 32); + } + if (addr_size < 64) { + /* Mask off out of range bits. */ + tcg_gen_andi_i64(ret, ret, MAKE_64BIT_MASK(0, addr_size)); + } + } + return ret; +} + +static bool do_load(DisasContext *dc, int rd, TCGv addr, MemOp mop, + int mem_index, bool rev) +{ + TCGv_i32 v; + MemOp size =3D mop & MO_SIZE; + + /* + * When doing reverse accesses we need to do two things. + * + * 1. Reverse the address wrt endianness. + * 2. Byteswap the data lanes on the way back into the CPU core. + */ + if (rev) { + if (size > MO_8) { + mop ^=3D MO_BSWAP; + } + if (size < MO_32) { + tcg_gen_xori_tl(addr, addr, 3 - size); + } + } + + t_sync_flags(dc); + sync_jmpstate(dc); + + /* + * Microblaze gives MMU faults priority over faults due to + * unaligned addresses. That's why we speculatively do the load + * into v. If the load succeeds, we verify alignment of the + * address and if that succeeds we write into the destination reg. + */ + v =3D tcg_temp_new_i32(); + tcg_gen_qemu_ld_i32(v, addr, mem_index, mop); + + /* TODO: Convert to CPUClass::do_unaligned_access. */ + if (dc->cpu->cfg.unaligned_exceptions && size > MO_8) { + TCGv_i32 t0 =3D tcg_const_i32(0); + TCGv_i32 treg =3D tcg_const_i32(rd); + TCGv_i32 tsize =3D tcg_const_i32((1 << size) - 1); + + tcg_gen_movi_i32(cpu_pc, dc->base.pc_next); + gen_helper_memalign(cpu_env, addr, treg, t0, tsize); + + tcg_temp_free_i32(t0); + tcg_temp_free_i32(treg); + tcg_temp_free_i32(tsize); + } + + if (rd) { + tcg_gen_mov_i32(cpu_R[rd], v); + } + + tcg_temp_free_i32(v); + tcg_temp_free(addr); + return true; +} + +static bool trans_lbu(DisasContext *dc, arg_typea *arg) +{ + TCGv addr =3D compute_ldst_addr_typea(dc, arg->ra, arg->rb); + return do_load(dc, arg->rd, addr, MO_UB, dc->mem_index, false); +} + +static bool trans_lbur(DisasContext *dc, arg_typea *arg) +{ + TCGv addr =3D compute_ldst_addr_typea(dc, arg->ra, arg->rb); + return do_load(dc, arg->rd, addr, MO_UB, dc->mem_index, true); +} + +static bool trans_lbuea(DisasContext *dc, arg_typea *arg) +{ + if (trap_userspace(dc, true)) { + return true; + } + TCGv addr =3D compute_ldst_addr_ea(dc, arg->ra, arg->rb); + return do_load(dc, arg->rd, addr, MO_UB, MMU_NOMMU_IDX, false); +} + +static bool trans_lbui(DisasContext *dc, arg_typeb *arg) +{ + TCGv addr =3D compute_ldst_addr_typeb(dc, arg->ra, arg->imm); + return do_load(dc, arg->rd, addr, MO_UB, dc->mem_index, false); +} + +static bool trans_lhu(DisasContext *dc, arg_typea *arg) +{ + TCGv addr =3D compute_ldst_addr_typea(dc, arg->ra, arg->rb); + return do_load(dc, arg->rd, addr, MO_TEUW, dc->mem_index, false); +} + +static bool trans_lhur(DisasContext *dc, arg_typea *arg) +{ + TCGv addr =3D compute_ldst_addr_typea(dc, arg->ra, arg->rb); + return do_load(dc, arg->rd, addr, MO_TEUW, dc->mem_index, true); +} + +static bool trans_lhuea(DisasContext *dc, arg_typea *arg) +{ + if (trap_userspace(dc, true)) { + return true; + } + TCGv addr =3D compute_ldst_addr_ea(dc, arg->ra, arg->rb); + return do_load(dc, arg->rd, addr, MO_TEUW, MMU_NOMMU_IDX, false); +} + +static bool trans_lhui(DisasContext *dc, arg_typeb *arg) +{ + TCGv addr =3D compute_ldst_addr_typeb(dc, arg->ra, arg->imm); + return do_load(dc, arg->rd, addr, MO_TEUW, dc->mem_index, false); +} + +static bool trans_lw(DisasContext *dc, arg_typea *arg) +{ + TCGv addr =3D compute_ldst_addr_typea(dc, arg->ra, arg->rb); + return do_load(dc, arg->rd, addr, MO_TEUL, dc->mem_index, false); +} + +static bool trans_lwr(DisasContext *dc, arg_typea *arg) +{ + TCGv addr =3D compute_ldst_addr_typea(dc, arg->ra, arg->rb); + return do_load(dc, arg->rd, addr, MO_TEUL, dc->mem_index, true); +} + +static bool trans_lwea(DisasContext *dc, arg_typea *arg) +{ + if (trap_userspace(dc, true)) { + return true; + } + TCGv addr =3D compute_ldst_addr_ea(dc, arg->ra, arg->rb); + return do_load(dc, arg->rd, addr, MO_TEUL, MMU_NOMMU_IDX, false); +} + +static bool trans_lwi(DisasContext *dc, arg_typeb *arg) +{ + TCGv addr =3D compute_ldst_addr_typeb(dc, arg->ra, arg->imm); + return do_load(dc, arg->rd, addr, MO_TEUL, dc->mem_index, false); +} + +static bool trans_lwx(DisasContext *dc, arg_typea *arg) +{ + TCGv addr =3D compute_ldst_addr_typea(dc, arg->ra, arg->rb); + + /* lwx does not throw unaligned access errors, so force alignment */ + tcg_gen_andi_tl(addr, addr, ~3); + + t_sync_flags(dc); + sync_jmpstate(dc); + + tcg_gen_qemu_ld_i32(cpu_res_val, addr, dc->mem_index, MO_TEUL); + tcg_gen_mov_tl(cpu_res_addr, addr); + tcg_temp_free(addr); + + if (arg->rd) { + tcg_gen_mov_i32(cpu_R[arg->rd], cpu_res_val); + } + + /* No support for AXI exclusive so always clear C */ + tcg_gen_movi_i32(cpu_msr_c, 0); + return true; +} + +static bool do_store(DisasContext *dc, int rd, TCGv addr, MemOp mop, + int mem_index, bool rev) +{ + MemOp size =3D mop & MO_SIZE; + + /* + * When doing reverse accesses we need to do two things. + * + * 1. Reverse the address wrt endianness. + * 2. Byteswap the data lanes on the way back into the CPU core. + */ + if (rev) { + if (size > MO_8) { + mop ^=3D MO_BSWAP; + } + if (size < MO_32) { + tcg_gen_xori_tl(addr, addr, 3 - size); + } + } + + t_sync_flags(dc); + sync_jmpstate(dc); + + tcg_gen_qemu_st_i32(reg_for_read(dc, rd), addr, mem_index, mop); + + /* TODO: Convert to CPUClass::do_unaligned_access. */ + if (dc->cpu->cfg.unaligned_exceptions && size > MO_8) { + TCGv_i32 t1 =3D tcg_const_i32(1); + TCGv_i32 treg =3D tcg_const_i32(rd); + TCGv_i32 tsize =3D tcg_const_i32((1 << size) - 1); + + tcg_gen_movi_i32(cpu_pc, dc->base.pc_next); + /* FIXME: if the alignment is wrong, we should restore the value + * in memory. One possible way to achieve this is to probe + * the MMU prior to the memaccess, thay way we could put + * the alignment checks in between the probe and the mem + * access. + */ + gen_helper_memalign(cpu_env, addr, treg, t1, tsize); + + tcg_temp_free_i32(t1); + tcg_temp_free_i32(treg); + tcg_temp_free_i32(tsize); + } + + tcg_temp_free(addr); + return true; +} + +static bool trans_sb(DisasContext *dc, arg_typea *arg) +{ + TCGv addr =3D compute_ldst_addr_typea(dc, arg->ra, arg->rb); + return do_store(dc, arg->rd, addr, MO_UB, dc->mem_index, false); +} + +static bool trans_sbr(DisasContext *dc, arg_typea *arg) +{ + TCGv addr =3D compute_ldst_addr_typea(dc, arg->ra, arg->rb); + return do_store(dc, arg->rd, addr, MO_UB, dc->mem_index, true); +} + +static bool trans_sbea(DisasContext *dc, arg_typea *arg) +{ + if (trap_userspace(dc, true)) { + return true; + } + TCGv addr =3D compute_ldst_addr_ea(dc, arg->ra, arg->rb); + return do_store(dc, arg->rd, addr, MO_UB, MMU_NOMMU_IDX, false); +} + +static bool trans_sbi(DisasContext *dc, arg_typeb *arg) +{ + TCGv addr =3D compute_ldst_addr_typeb(dc, arg->ra, arg->imm); + return do_store(dc, arg->rd, addr, MO_UB, dc->mem_index, false); +} + +static bool trans_sh(DisasContext *dc, arg_typea *arg) +{ + TCGv addr =3D compute_ldst_addr_typea(dc, arg->ra, arg->rb); + return do_store(dc, arg->rd, addr, MO_TEUW, dc->mem_index, false); +} + +static bool trans_shr(DisasContext *dc, arg_typea *arg) +{ + TCGv addr =3D compute_ldst_addr_typea(dc, arg->ra, arg->rb); + return do_store(dc, arg->rd, addr, MO_TEUW, dc->mem_index, true); +} + +static bool trans_shea(DisasContext *dc, arg_typea *arg) +{ + if (trap_userspace(dc, true)) { + return true; + } + TCGv addr =3D compute_ldst_addr_ea(dc, arg->ra, arg->rb); + return do_store(dc, arg->rd, addr, MO_TEUW, MMU_NOMMU_IDX, false); +} + +static bool trans_shi(DisasContext *dc, arg_typeb *arg) +{ + TCGv addr =3D compute_ldst_addr_typeb(dc, arg->ra, arg->imm); + return do_store(dc, arg->rd, addr, MO_TEUW, dc->mem_index, false); +} + +static bool trans_sw(DisasContext *dc, arg_typea *arg) +{ + TCGv addr =3D compute_ldst_addr_typea(dc, arg->ra, arg->rb); + return do_store(dc, arg->rd, addr, MO_TEUL, dc->mem_index, false); +} + +static bool trans_swr(DisasContext *dc, arg_typea *arg) +{ + TCGv addr =3D compute_ldst_addr_typea(dc, arg->ra, arg->rb); + return do_store(dc, arg->rd, addr, MO_TEUL, dc->mem_index, true); +} + +static bool trans_swea(DisasContext *dc, arg_typea *arg) +{ + if (trap_userspace(dc, true)) { + return true; + } + TCGv addr =3D compute_ldst_addr_ea(dc, arg->ra, arg->rb); + return do_store(dc, arg->rd, addr, MO_TEUL, MMU_NOMMU_IDX, false); +} + +static bool trans_swi(DisasContext *dc, arg_typeb *arg) +{ + TCGv addr =3D compute_ldst_addr_typeb(dc, arg->ra, arg->imm); + return do_store(dc, arg->rd, addr, MO_TEUL, dc->mem_index, false); +} + +static bool trans_swx(DisasContext *dc, arg_typea *arg) +{ + TCGv addr =3D compute_ldst_addr_typea(dc, arg->ra, arg->rb); + TCGLabel *swx_done =3D gen_new_label(); + TCGLabel *swx_fail =3D gen_new_label(); + TCGv_i32 tval; + + t_sync_flags(dc); + sync_jmpstate(dc); + + /* swx does not throw unaligned access errors, so force alignment */ + tcg_gen_andi_tl(addr, addr, ~3); + + /* + * Compare the address vs the one we used during lwx. + * On mismatch, the operation fails. On match, addr dies at the + * branch, but we know we can use the equal version in the global. + * In either case, addr is no longer needed. + */ + tcg_gen_brcond_tl(TCG_COND_NE, cpu_res_addr, addr, swx_fail); + tcg_temp_free(addr); + + /* + * Compare the value loaded during lwx with current contents of + * the reserved location. + */ + tval =3D tcg_temp_new_i32(); + + tcg_gen_atomic_cmpxchg_i32(tval, cpu_res_addr, cpu_res_val, + reg_for_write(dc, arg->rd), + dc->mem_index, MO_TEUL); + + tcg_gen_brcond_i32(TCG_COND_NE, cpu_res_val, tval, swx_fail); + tcg_temp_free_i32(tval); + + /* Success */ + tcg_gen_movi_i32(cpu_msr_c, 0); + tcg_gen_br(swx_done); + + /* Failure */ + gen_set_label(swx_fail); + tcg_gen_movi_i32(cpu_msr_c, 1); + + gen_set_label(swx_done); + + /* + * Prevent the saved address from working again without another ldx. + * Akin to the pseudocode setting reservation =3D 0. + */ + tcg_gen_movi_tl(cpu_res_addr, -1); + return true; +} + static bool trans_zero(DisasContext *dc, arg_zero *arg) { /* If opcode_0_illegal, trap. */ @@ -887,303 +1311,6 @@ static void dec_msr(DisasContext *dc) } } =20 -static inline void sync_jmpstate(DisasContext *dc) -{ - if (dc->jmp =3D=3D JMP_DIRECT || dc->jmp =3D=3D JMP_DIRECT_CC) { - if (dc->jmp =3D=3D JMP_DIRECT) { - tcg_gen_movi_i32(cpu_btaken, 1); - } - dc->jmp =3D JMP_INDIRECT; - tcg_gen_movi_i32(cpu_btarget, dc->jmp_pc); - } -} - -static inline void compute_ldst_addr(DisasContext *dc, bool ea, TCGv t) -{ - /* Should be set to true if r1 is used by loadstores. */ - bool stackprot =3D false; - TCGv_i32 t32; - - /* All load/stores use ra. */ - if (dc->ra =3D=3D 1 && dc->cpu->cfg.stackprot) { - stackprot =3D true; - } - - /* Treat the common cases first. */ - if (!dc->type_b) { - if (ea) { - int addr_size =3D dc->cpu->cfg.addr_size; - - if (addr_size =3D=3D 32) { - tcg_gen_extu_i32_tl(t, cpu_R[dc->rb]); - return; - } - - tcg_gen_concat_i32_i64(t, cpu_R[dc->rb], cpu_R[dc->ra]); - if (addr_size < 64) { - /* Mask off out of range bits. */ - tcg_gen_andi_i64(t, t, MAKE_64BIT_MASK(0, addr_size)); - } - return; - } - - /* If any of the regs is r0, set t to the value of the other reg. = */ - if (dc->ra =3D=3D 0) { - tcg_gen_extu_i32_tl(t, cpu_R[dc->rb]); - return; - } else if (dc->rb =3D=3D 0) { - tcg_gen_extu_i32_tl(t, cpu_R[dc->ra]); - return; - } - - if (dc->rb =3D=3D 1 && dc->cpu->cfg.stackprot) { - stackprot =3D true; - } - - t32 =3D tcg_temp_new_i32(); - tcg_gen_add_i32(t32, cpu_R[dc->ra], cpu_R[dc->rb]); - tcg_gen_extu_i32_tl(t, t32); - tcg_temp_free_i32(t32); - - if (stackprot) { - gen_helper_stackprot(cpu_env, t); - } - return; - } - /* Immediate. */ - t32 =3D tcg_temp_new_i32(); - tcg_gen_addi_i32(t32, cpu_R[dc->ra], dec_alu_typeb_imm(dc)); - tcg_gen_extu_i32_tl(t, t32); - tcg_temp_free_i32(t32); - - if (stackprot) { - gen_helper_stackprot(cpu_env, t); - } - return; -} - -static void dec_load(DisasContext *dc) -{ - TCGv_i32 v; - TCGv addr; - unsigned int size; - bool rev =3D false, ex =3D false, ea =3D false; - int mem_index =3D dc->mem_index; - MemOp mop; - - mop =3D dc->opcode & 3; - size =3D 1 << mop; - if (!dc->type_b) { - ea =3D extract32(dc->ir, 7, 1); - rev =3D extract32(dc->ir, 9, 1); - ex =3D extract32(dc->ir, 10, 1); - } - mop |=3D MO_TE; - if (rev) { - mop ^=3D MO_BSWAP; - } - - if (trap_illegal(dc, size > 4)) { - return; - } - - if (trap_userspace(dc, ea)) { - return; - } - - t_sync_flags(dc); - addr =3D tcg_temp_new(); - compute_ldst_addr(dc, ea, addr); - /* Extended addressing bypasses the MMU. */ - mem_index =3D ea ? MMU_NOMMU_IDX : mem_index; - - /* - * When doing reverse accesses we need to do two things. - * - * 1. Reverse the address wrt endianness. - * 2. Byteswap the data lanes on the way back into the CPU core. - */ - if (rev && size !=3D 4) { - /* Endian reverse the address. t is addr. */ - switch (size) { - case 1: - { - tcg_gen_xori_tl(addr, addr, 3); - break; - } - - case 2: - /* 00 -> 10 - 10 -> 00. */ - tcg_gen_xori_tl(addr, addr, 2); - break; - default: - cpu_abort(CPU(dc->cpu), "Invalid reverse size\n"); - break; - } - } - - /* lwx does not throw unaligned access errors, so force alignment */ - if (ex) { - tcg_gen_andi_tl(addr, addr, ~3); - } - - /* If we get a fault on a dslot, the jmpstate better be in sync. */ - sync_jmpstate(dc); - - /* Verify alignment if needed. */ - /* - * Microblaze gives MMU faults priority over faults due to - * unaligned addresses. That's why we speculatively do the load - * into v. If the load succeeds, we verify alignment of the - * address and if that succeeds we write into the destination reg. - */ - v =3D tcg_temp_new_i32(); - tcg_gen_qemu_ld_i32(v, addr, mem_index, mop); - - if (dc->cpu->cfg.unaligned_exceptions && size > 1) { - TCGv_i32 t0 =3D tcg_const_i32(0); - TCGv_i32 treg =3D tcg_const_i32(dc->rd); - TCGv_i32 tsize =3D tcg_const_i32(size - 1); - - tcg_gen_movi_i32(cpu_pc, dc->base.pc_next); - gen_helper_memalign(cpu_env, addr, treg, t0, tsize); - - tcg_temp_free_i32(t0); - tcg_temp_free_i32(treg); - tcg_temp_free_i32(tsize); - } - - if (ex) { - tcg_gen_mov_tl(cpu_res_addr, addr); - tcg_gen_mov_i32(cpu_res_val, v); - } - if (dc->rd) { - tcg_gen_mov_i32(cpu_R[dc->rd], v); - } - tcg_temp_free_i32(v); - - if (ex) { /* lwx */ - /* no support for AXI exclusive so always clear C */ - tcg_gen_movi_i32(cpu_msr_c, 0); - } - - tcg_temp_free(addr); -} - -static void dec_store(DisasContext *dc) -{ - TCGv addr; - TCGLabel *swx_skip =3D NULL; - unsigned int size; - bool rev =3D false, ex =3D false, ea =3D false; - int mem_index =3D dc->mem_index; - MemOp mop; - - mop =3D dc->opcode & 3; - size =3D 1 << mop; - if (!dc->type_b) { - ea =3D extract32(dc->ir, 7, 1); - rev =3D extract32(dc->ir, 9, 1); - ex =3D extract32(dc->ir, 10, 1); - } - mop |=3D MO_TE; - if (rev) { - mop ^=3D MO_BSWAP; - } - - if (trap_illegal(dc, size > 4)) { - return; - } - - trap_userspace(dc, ea); - - t_sync_flags(dc); - /* If we get a fault on a dslot, the jmpstate better be in sync. */ - sync_jmpstate(dc); - /* SWX needs a temp_local. */ - addr =3D ex ? tcg_temp_local_new() : tcg_temp_new(); - compute_ldst_addr(dc, ea, addr); - /* Extended addressing bypasses the MMU. */ - mem_index =3D ea ? MMU_NOMMU_IDX : mem_index; - - if (ex) { /* swx */ - TCGv_i32 tval; - - /* swx does not throw unaligned access errors, so force alignment = */ - tcg_gen_andi_tl(addr, addr, ~3); - - tcg_gen_movi_i32(cpu_msr_c, 1); - swx_skip =3D gen_new_label(); - tcg_gen_brcond_tl(TCG_COND_NE, cpu_res_addr, addr, swx_skip); - - /* - * Compare the value loaded at lwx with current contents of - * the reserved location. - */ - tval =3D tcg_temp_new_i32(); - - tcg_gen_atomic_cmpxchg_i32(tval, addr, cpu_res_val, - cpu_R[dc->rd], mem_index, - mop); - - tcg_gen_brcond_i32(TCG_COND_NE, cpu_res_val, tval, swx_skip); - tcg_gen_movi_i32(cpu_msr_c, 0); - tcg_temp_free_i32(tval); - } - - if (rev && size !=3D 4) { - /* Endian reverse the address. t is addr. */ - switch (size) { - case 1: - { - tcg_gen_xori_tl(addr, addr, 3); - break; - } - - case 2: - /* 00 -> 10 - 10 -> 00. */ - /* Force addr into the temp. */ - tcg_gen_xori_tl(addr, addr, 2); - break; - default: - cpu_abort(CPU(dc->cpu), "Invalid reverse size\n"); - break; - } - } - - if (!ex) { - tcg_gen_qemu_st_i32(cpu_R[dc->rd], addr, mem_index, mop); - } - - /* Verify alignment if needed. */ - if (dc->cpu->cfg.unaligned_exceptions && size > 1) { - TCGv_i32 t1 =3D tcg_const_i32(1); - TCGv_i32 treg =3D tcg_const_i32(dc->rd); - TCGv_i32 tsize =3D tcg_const_i32(size - 1); - - tcg_gen_movi_i32(cpu_pc, dc->base.pc_next); - /* FIXME: if the alignment is wrong, we should restore the value - * in memory. One possible way to achieve this is to probe - * the MMU prior to the memaccess, thay way we could put - * the alignment checks in between the probe and the mem - * access. - */ - gen_helper_memalign(cpu_env, addr, treg, t1, tsize); - - tcg_temp_free_i32(t1); - tcg_temp_free_i32(treg); - tcg_temp_free_i32(tsize); - } - - if (ex) { - gen_set_label(swx_skip); - } - - tcg_temp_free(addr); -} - static inline void eval_cc(DisasContext *dc, unsigned int cc, TCGv_i32 d, TCGv_i32 a) { @@ -1491,8 +1618,6 @@ static struct decoder_info { }; void (*dec)(DisasContext *dc); } decinfo[] =3D { - {DEC_LD, dec_load}, - {DEC_ST, dec_store}, {DEC_BR, dec_br}, {DEC_BCC, dec_bcc}, {DEC_RTS, dec_rts}, --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891361; cv=none; d=zohomail.com; s=zohoarc; b=NpE1SpN3l68GRgnf27RauvzFLpLKR6gzsFPpC8O2WRRwQgvdc4AjbeuWPS0eoMcbsR7St6mAi510x3uGejp6sUoIR2EcatI6y2yRcTOdKlE4RIPl7A1usoQ6ETyOjngdukZRQMWnrDFs5KK/oJnogYCYdOMcFJrXbIFcbId+6/M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891361; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=+YTQPSRa7wIGfMOHKJcDIJtbiajs8gBf9sLY+UjyvJI=; b=HHA0eWOn//UQrowOE4uC1P98jbjjDm0o9p9iX58LTY75MlTXdBMDpL6v8rAGiYyV1LUii8OTpoN6N3lpQ2e0lD+Zj1wUvm5bl8o9iURPqqVQchIg/ZrAkGDim7by3l7SEsMFzY8OtqSAjDVTc3UxYcLGz09peWmOWPfVqfRe3+Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891361326890.7582800404049; Mon, 31 Aug 2020 09:29:21 -0700 (PDT) Received: from localhost ([::1]:58800 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmgK-0001jz-BP for importer@patchew.org; Mon, 31 Aug 2020 12:29:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34460) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmL1-0005wH-St for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:19 -0400 Received: from mail-pg1-x543.google.com ([2607:f8b0:4864:20::543]:46515) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmL0-00067e-7X for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:19 -0400 Received: by mail-pg1-x543.google.com with SMTP id 31so821210pgy.13 for ; Mon, 31 Aug 2020 09:07:17 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=+YTQPSRa7wIGfMOHKJcDIJtbiajs8gBf9sLY+UjyvJI=; b=FpY8A4WEPbglTlZeEI7EV5gOhMujrXdRoz8G+oo80aWvAyeqpg5MCiWqgF+J9vpiN+ LY9c9J+B0bZnCGkX+SE+U/vttDGxajOd2+Emlh8umLnKsHxlOPYnRAWZpTIda0CyynB6 9+7/SNJm+rrqnt/2ZURP6bha4YiEvRPmpbMFKwl4Gi8t9JY4SOVKAoQmOtvOMTEhGLrd /EkBrVgVKR0i2Mt4QwRs9AHGziA6XDRMnpvy1xpxAqY2n8MflZ6LSE+e8TZCsIVZhMKN zahGDdVyMn0zuOV+q0kB4GQYQBY6Xm2d9qmDVYmjSig9SIRZ7gz0isStbt+0H8QGcVQ/ 5OiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=+YTQPSRa7wIGfMOHKJcDIJtbiajs8gBf9sLY+UjyvJI=; b=p64gD2pZ1983popEEitFK3vu/oNsDdqYHrP/jAXR7EohAtxY4Ya3BMYrtPliJHzirM tkzW9eQR668WRZdqcQU0wCA3TQmc6hFid0ms7/torpMaN/8fTS2fl7ZvotH906y3hk3w D0F/7eNlGoCbWj/waRzN2YlQisAeqWcrGG12xxVS0ErLKXl3P3Z0bmQfT+THW0qI3Tmc ha8rwBfEVRJkCjEaMBk76wvtMfd6X4dfpP4t/saJtN/M+HeZWMxDvV4EYRgXZ8AgLoVp 85jfnxvE+NRmaKH7KBAsb5CoM+JN/pGoLs1Gcsb/wTV4iEJRHqQCu0LM4af0JfWXvzdr 1zbA== X-Gm-Message-State: AOAM5330cY5GIG85wHLgHGEzn5GNWzSO0TZeUmo+bb27mE+XrQzgwHFE oDBspeNZUg8oF8HD6jqeHOWvEkYuhVom6g== X-Google-Smtp-Source: ABdhPJwSVlogUkYoObcMNbMKGsKurYVfMZ8nFpiiUaRh01JEQb87mKH1SkXTagh8gcRKwOuuqJjFqQ== X-Received: by 2002:a65:568b:: with SMTP id v11mr1749842pgs.396.1598890036570; Mon, 31 Aug 2020 09:07:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 54/76] target/microblaze: Assert no overlap in flags making up tb_flags Date: Mon, 31 Aug 2020 09:05:39 -0700 Message-Id: <20200831160601.833692-55-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::543; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x543.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Create MSR_TB_MASK. Use it in cpu_get_tb_cpu_state, and check that IFLAGS_TB_MASK does not overlap. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/cpu.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index 594501e4e7..2fc7cf26f1 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -261,8 +261,11 @@ struct CPUMBState { #define DRTE_FLAG (1 << 17) #define DRTB_FLAG (1 << 18) #define D_FLAG (1 << 19) /* Bit in ESR. */ + /* TB dependent CPUMBState. */ #define IFLAGS_TB_MASK (D_FLAG | IMM_FLAG | DRTI_FLAG | DRTE_FLAG | DRTB_= FLAG) +#define MSR_TB_MASK (MSR_UM | MSR_VM | MSR_EE) + uint32_t iflags; =20 #if !defined(CONFIG_USER_ONLY) @@ -372,12 +375,14 @@ typedef MicroBlazeCPU ArchCPU; =20 #include "exec/cpu-all.h" =20 +/* Ensure there is no overlap between the two masks. */ +QEMU_BUILD_BUG_ON(MSR_TB_MASK & IFLAGS_TB_MASK); + static inline void cpu_get_tb_cpu_state(CPUMBState *env, target_ulong *pc, target_ulong *cs_base, uint32_t *f= lags) { *pc =3D env->pc; - *flags =3D (env->iflags & IFLAGS_TB_MASK) | - (env->msr & (MSR_UM | MSR_VM | MSR_EE)); + *flags =3D (env->iflags & IFLAGS_TB_MASK) | (env->msr & MSR_TB_MASK); *cs_base =3D (*flags & IMM_FLAG ? env->imm : 0); } =20 --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891459; cv=none; d=zohomail.com; s=zohoarc; b=NYoS9ITLE7vv5gjgxP+9XsY4L3J8zsBY1300JVuAVT6pGnppKCAUXjH3Q7vIekfRSYmJ7c773kZfoXKRkjvUiSa1YHpv+1i1bkZHreXdJaz9fkOiMcUuD9iru4uFRv5L+AbdR1Kp+iMNmkgEg1nBIf7tj0MP86G6ebbpYXwor/A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891459; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=9yukNREp9KLx7ngPQjIPDt7zSrwG6GvjIbptJAOWSaU=; b=J1GlXu72LH07AS0cu6R9joU/X0gJBi1JIyQIN/RgfGklPBRPxDYSZij9jcfQMTQ13E5K+RChIvHhjJS+6XT5GLRTpwbL2V5lZcr3uTkQCgBFa31dJnxB5tNmaR8UhXEznoJRqqoS+0k9YqyBXwCPr0Q1iElyZt8eLEdp26RBWCE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891459804584.8615486783482; Mon, 31 Aug 2020 09:30:59 -0700 (PDT) Received: from localhost ([::1]:38992 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmhu-00059n-QJ for importer@patchew.org; Mon, 31 Aug 2020 12:30:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34486) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmL4-00061q-4U for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:22 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]:46348) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmL2-00067k-9r for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:21 -0400 Received: by mail-pf1-x42f.google.com with SMTP id b124so794988pfg.13 for ; Mon, 31 Aug 2020 09:07:19 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=9yukNREp9KLx7ngPQjIPDt7zSrwG6GvjIbptJAOWSaU=; b=S1UuJNZgcEJpKE9BCCMllrjEz+ym5UOpgwvm0aohS/w+SqoiWqqSDj1lZHKM0XlTHh 1tHf2Zm1IJryROZkrjHsqmcKW4ZCc9NkUfZJI8AGi6KgnbEOd/5SXXGDyCSNwNhZ3ydO zR5OjdQHiB2m6kU5aRcllqRJVtEEXKk/xXluyCuS/YOeNb2+s1+7zGBzfp2hUZQDRrm8 52hxWsTRjM4z/lwcJXSxI2ZkDYRjcRtdMAzYUgEYJLn73RB2xUh5xwWZ/7AnR/o0Ov+L xpjzufxA1LYso56u/9Zdg1aItJfvPb4PpaotgssZK+1+Ya5EjbiBiGAry8IdjNriftQv PKYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=9yukNREp9KLx7ngPQjIPDt7zSrwG6GvjIbptJAOWSaU=; b=JKte2rFEe+M1RZaeYerptUFtTkgH0IwE7GkTnMRNHUQEmMcBp8roUqDBk+18tnx+4N HGyT/Burv5f0U1qshFJ/1mtJKQ60/r4DfJpMmJtRnm2jvdVZNlVj6azju+EvbFnZXCvV xvY1Ib4JMZ49d/BqrDumEPwecWg6BWYUzdOncR3elbTzDoufy3GWMe0YHXhZOmJeXCac kUQCwqV9bUnC1/+xzTOQHM7dtHs/OsFlwzx9p1jAP8DpGQ4rRkMZcrEV7S+7X8KqX0mv /4dtfgSxdwW/KwmBUC0czjeYeYpGqJ+m9AQuMUtDePita1crSlNA43EQ/pbjjc9s78Uc n63w== X-Gm-Message-State: AOAM533Z+BUsLt3frszq9GETDhyAzszjXSD3w2ugEvJfUrU5Uufe+nno NA2xFUe745ZOnjrc3HUhDyqauW7u775unQ== X-Google-Smtp-Source: ABdhPJyCIl2//S1sme32PHVoesqNPnzRJdjlq9iLxNofGGl6XXcxT0a6Km984/SoLWkOuqzFmxGuyw== X-Received: by 2002:aa7:96b0:: with SMTP id g16mr1875113pfk.46.1598890038007; Mon, 31 Aug 2020 09:07:18 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 55/76] target/microblaze: Move bimm to BIMM_FLAG Date: Mon, 31 Aug 2020 09:05:40 -0700 Message-Id: <20200831160601.833692-56-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42f.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" It makes sense to keep BIMM with D_FLAG, as they can be written back to iflags at the same time. BIMM_FLAG does not need to be added to IFLAGS_TB_MASK because it does not affect the next TB, only the exception path out of the current TB. Renumber IMM_FLAG, as the value 4 holds no particular significance; pack these two flags at the bottom of the bitfield. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/cpu.h | 4 ++-- target/microblaze/helper.c | 2 +- target/microblaze/translate.c | 12 +++++------- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index 2fc7cf26f1..a5df1fa28f 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -231,7 +231,6 @@ typedef struct CPUMBState CPUMBState; struct CPUMBState { uint32_t btaken; uint32_t btarget; - uint32_t bimm; =20 uint32_t imm; uint32_t regs[32]; @@ -253,7 +252,8 @@ struct CPUMBState { uint32_t res_val; =20 /* Internal flags. */ -#define IMM_FLAG 4 +#define IMM_FLAG (1 << 0) +#define BIMM_FLAG (1 << 1) /* MSR_EE (1 << 8) */ /* MSR_UM (1 << 11) */ /* MSR_VM (1 << 13) */ diff --git a/target/microblaze/helper.c b/target/microblaze/helper.c index f8e2ca12a9..06f4322e09 100644 --- a/target/microblaze/helper.c +++ b/target/microblaze/helper.c @@ -166,7 +166,7 @@ void mb_cpu_do_interrupt(CPUState *cs) /* Reexecute the branch. */ env->regs[17] -=3D 4; /* was the branch immprefixed?. */ - if (env->bimm) { + if (env->iflags & BIMM_FLAG) { env->regs[17] -=3D 4; log_cpu_state_mask(CPU_LOG_INT, cs, 0); } diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index d2baa7db0e..97a436c8d5 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -1351,13 +1351,11 @@ static void eval_cond_jmp(DisasContext *dc, TCGv_i3= 2 pc_true, TCGv_i32 pc_false) =20 static void dec_setup_dslot(DisasContext *dc) { - TCGv_i32 tmp =3D tcg_const_i32(dc->type_b && (dc->tb_flags & IMM_F= LAG)); - - dc->delayed_branch =3D 2; - dc->tb_flags |=3D D_FLAG; - - tcg_gen_st_i32(tmp, cpu_env, offsetof(CPUMBState, bimm)); - tcg_temp_free_i32(tmp); + dc->delayed_branch =3D 2; + dc->tb_flags |=3D D_FLAG; + if (dc->type_b && (dc->tb_flags & IMM_FLAG)) { + dc->tb_flags |=3D BIMM_FLAG; + } } =20 static void dec_bcc(DisasContext *dc) --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891040; cv=none; d=zohomail.com; s=zohoarc; b=KoUtEQVIECuGz+G7sR8FmkvfenkyUugxff1Q7RP/w9MiRMuYbSMwAIoZ4f+syma0I0Hi5fhwYEEIfdwlagt+kghJYIpNETD7zljBi+F57J/nZovS5RFw+HM4C0lQwYwhsjLAWy1O/D2W5KL3XwxKTuQOtN3d3Y8XD8vmhgvAOms= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891040; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=vu1hIGTjP3FaAqDu3kt28iRiwFfoFLPJO2tReGgCbQ0=; b=iyH+Ek2D7Zw5mEsPD6718asqhVnQRes2jkz3nVOPf1qaSPVrYwck4RC+DAj3pAWxnTbnv2GsCdSV4+3NAFJieehgQiwps7wiO4hAeFeBP4KP9Xs95UFIMf6fwrYMWIm5+kfZQ6BlHLAk7OGrkOgLX9Vt6qBvgpw6qLNODULxH2s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891039994597.2201548079261; Mon, 31 Aug 2020 09:23:59 -0700 (PDT) Received: from localhost ([::1]:57616 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmb9-0006k2-2b for importer@patchew.org; Mon, 31 Aug 2020 12:23:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34494) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmL5-00064A-4n for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:23 -0400 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]:42313) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmL3-00067s-7E for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:22 -0400 Received: by mail-pf1-x431.google.com with SMTP id 17so805031pfw.9 for ; Mon, 31 Aug 2020 09:07:20 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=vu1hIGTjP3FaAqDu3kt28iRiwFfoFLPJO2tReGgCbQ0=; b=vf4684yXjoEp4Rlw8+sEjTEpJrsRipmc1z+DNoK+eV+7SaJ/aPM6NTNnwir3KHGHm0 Zv/EWJ93sQ2irWqjDr2fV1kyVXI5mIGgogcunhAbQtJqWOM+uGB4emzzjgcOKWQUcn18 iLJg+kkgBT2fP6xWj9Kr3vTZ2WncjWZznapYRgNiPFmuHm8b38M5KCLJRLSCl2r12/C1 5dhHJua8lDuQStUPiXu+1bxehSOTL34iscMx8GP3H7Eyk9ilMM/R/OXbaSo8o9UZaiB6 CbHO54RbFmK4o2LbVOyHmQmpaTIT0tKDhy/AQFID5JC0lnS+fMZpk+pE9OZGYOcEz9uQ v3Zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=vu1hIGTjP3FaAqDu3kt28iRiwFfoFLPJO2tReGgCbQ0=; b=qyW9E7WTTuDZXU3XpS7rMlVoE8/a3fhlGdxc2Gr6/VpB/xECnfuKM0EA8nq2bSHH5T d+KVPZXxpW5gwhKHUgQZw+J1CpNP/eJ6YHUE9ROTuEHe0wd54/jTjeWoXnULApkc6pPI Smy+A65G/EmBpTfFA2BU3JUSA9TkJ0lCZlpUrH0qwvI42ErPK2k2ePXdA+XEFqaNi6az 0Ob0776YQm9XTy/dBcuc1VZML3c1lLXXIpio0hYYgbduBb/GOAHteNfHa2esQG1ecqlJ SOg9vapgMl3CT0tFG27HORIyomVUknD5cVEBsbcKI5X/Kc6BzxOqo7W4j+4pxlvZIIfK KxXg== X-Gm-Message-State: AOAM530mgXjKpn2PjVU3PLPBHST7JiXCU8NLLGoDp9KnhhwKaiK+JxGl LP4ogReeVKMqHI7FfBsjrZPJqhwDJNdwCA== X-Google-Smtp-Source: ABdhPJwE7NchIvq0jsJOILeIHw1ljSw3uIOcGRf205iFDj0RLEBnryVzUBp+ByixOuV/3ItfmKWvCw== X-Received: by 2002:a05:6a00:1509:: with SMTP id q9mr1819413pfu.24.1598890039557; Mon, 31 Aug 2020 09:07:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 56/76] target/microblaze: Fix no-op mb_cpu_transaction_failed Date: Mon, 31 Aug 2020 09:05:41 -0700 Message-Id: <20200831160601.833692-57-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::431; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x431.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org, "Edgar E . Iglesias" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Do not call cpu_restore_state when no exception will be delivered. This can lead to inconsistent cpu state. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Reported-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/op_helper.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/target/microblaze/op_helper.c b/target/microblaze/op_helper.c index a99c467364..e6dcc79243 100644 --- a/target/microblaze/op_helper.c +++ b/target/microblaze/op_helper.c @@ -419,32 +419,33 @@ void mb_cpu_transaction_failed(CPUState *cs, hwaddr p= hysaddr, vaddr addr, int mmu_idx, MemTxAttrs attrs, MemTxResult response, uintptr_t retaddr) { - MicroBlazeCPU *cpu; - CPUMBState *env; + MicroBlazeCPU *cpu =3D MICROBLAZE_CPU(cs); + CPUMBState *env =3D &cpu->env; + qemu_log_mask(CPU_LOG_INT, "Transaction failed: vaddr 0x%" VADDR_PRIx " physaddr 0x" TARGET_FMT_plx " size %d access type %s\n= ", addr, physaddr, size, access_type =3D=3D MMU_INST_FETCH ? "INST_FETCH" : (access_type =3D=3D MMU_DATA_LOAD ? "DATA_LOAD" : "DATA_= STORE")); - cpu =3D MICROBLAZE_CPU(cs); - env =3D &cpu->env; =20 - cpu_restore_state(cs, retaddr, true); if (!(env->msr & MSR_EE)) { return; } =20 - env->ear =3D addr; if (access_type =3D=3D MMU_INST_FETCH) { - if ((env->pvr.regs[2] & PVR2_IOPB_BUS_EXC_MASK)) { - env->esr =3D ESR_EC_INSN_BUS; - helper_raise_exception(env, EXCP_HW_EXCP); + if (!cpu->cfg.iopb_bus_exception) { + return; } + env->esr =3D ESR_EC_INSN_BUS; } else { - if ((env->pvr.regs[2] & PVR2_DOPB_BUS_EXC_MASK)) { - env->esr =3D ESR_EC_DATA_BUS; - helper_raise_exception(env, EXCP_HW_EXCP); + if (!cpu->cfg.dopb_bus_exception) { + return; } + env->esr =3D ESR_EC_DATA_BUS; } + + env->ear =3D addr; + cs->exception_index =3D EXCP_HW_EXCP; + cpu_loop_exit_restore(cs, retaddr); } #endif --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891569; cv=none; d=zohomail.com; s=zohoarc; b=EIhr9LUMa7WLI2W5fmH59Kg9wEvsjVON7SE3tAzNp6KbDA7H+SRd9QfSvcgrQzOJDVeCdbQjUmmtqlT+1fakXUc9rk2YvXPYW0rtWSmapyBP7VXYbQBDv57S+dycly9M/MoD5ClM1LRnMFb9/dKplxrEuvF91VFRtGF4L3adnKA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891569; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=JvfZllGqlVqD0CA01I4iiAGGIf7AsK3G+Mi2JTCVFGs=; b=cGUtFfEQy9T/vn2OrPdlkzn0w68rPXzobz1ebcCS6R0ncwO7zYGmwXxCXQ6rcr/0l8YxM4p2mwPd7Wu5leslWuzF5FRzjJ77lvrgj1SD5sICaK1dXB8M8ZeKHJXwte1tWrFQ6JOVdEzioo5N8NnVatv1kzZVnmCFh+u91fowLJk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891569094139.6368879667972; Mon, 31 Aug 2020 09:32:49 -0700 (PDT) Received: from localhost ([::1]:46726 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmjg-0008RD-B3 for importer@patchew.org; Mon, 31 Aug 2020 12:32:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34516) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmL6-00066z-KC for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:24 -0400 Received: from mail-pg1-x542.google.com ([2607:f8b0:4864:20::542]:36788) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmL4-000680-If for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:24 -0400 Received: by mail-pg1-x542.google.com with SMTP id p37so841156pgl.3 for ; Mon, 31 Aug 2020 09:07:22 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=JvfZllGqlVqD0CA01I4iiAGGIf7AsK3G+Mi2JTCVFGs=; b=Ev6EIxf0n7M8vi8k/883pvGf4f/auC7RojkaSpBla3XvHHbbt6b0m2P96Ei02cvVvU mgKWzMQFxB8VIeIqIxkOE362LjefsgV6OuM8YEiEEGO2F7xzN2K8iHQrMkuefe2/z/fm Sa8BwVXc6YJ2SryRG0++LQm0rz/gm70XYyABAT4pQsVHU55jO1Wi8To370Zj22mGzhcC 3jBIXJvw5iVHxCVFIXkmxLWHqoBCjfJWRsa5vPu2AnfG55lVIqvO+LVRr73TPkQn7xRO eLdEk1cjZUtNNAvgrzk9cMSsFMhcSgT+G0FV5VHigdezx7zcveYsMjzPqsRHndr+DnYg F9qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=JvfZllGqlVqD0CA01I4iiAGGIf7AsK3G+Mi2JTCVFGs=; b=BijTuBRwSjGwSNi14f8KlFGABqdN7yRnoz/WLxBzst1IalRkHsFdfVm6L169yGM25c GZM9Yz5guRQZswkeVkDR1w7LtBBtwnDH8EY0zZeb1F/4ZRknCA4M+PUfP0K6vlAV4beE lxzFrN+OHUqf3xHKkcW35UeSekZVUksJhCq58o7wK/eHm5b5uN96TKHRDLw8qB0MJnyj 07dL4aEmrjExbZz+Dw9VFrKpyhQ+0gnFKj2tYYEYaCWd4SW0k8SBC5UkC7kVymT7eQCU o7xrtRbdiPg7WC1hqatNa/khTwLfzpFdZucHdlXZA58C37pq0+R5MvCQU/GFhaue90oy UI0A== X-Gm-Message-State: AOAM531z69nohJWG5KZvJ9u/TG2pKIwitRCxFywH9TRuq6UWqVexHpzi ANN5h0DBax+1TpJhzcOHHvnRdVrlZVTpMw== X-Google-Smtp-Source: ABdhPJzznIN/8OJep7ud9Q4C+BKgFVHoZ5n1+ORPSjXJtkUQcyJiQdPFj6K3XWCxnGLCYxgdyd6jjQ== X-Received: by 2002:aa7:9795:: with SMTP id o21mr1820676pfp.26.1598890040779; Mon, 31 Aug 2020 09:07:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 57/76] target/microblaze: Store "current" iflags in insn_start Date: Mon, 31 Aug 2020 09:05:42 -0700 Message-Id: <20200831160601.833692-58-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::542; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x542.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This data is available during exception unwinding, thus we can restore it from there directly, rather than saving it during the TB. Thus we may remove the t_sync_flags() calls in the load/store operations. Note that these calls were missing from the other places where runtime exceptions may be raised, such as idiv and the floating point operations. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/cpu.h | 2 ++ target/microblaze/translate.c | 24 +++++++++++++----------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index a5df1fa28f..83fadd36a5 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -228,6 +228,8 @@ typedef struct CPUMBState CPUMBState; #define STREAM_CONTROL (1 << 3) #define STREAM_NONBLOCK (1 << 4) =20 +#define TARGET_INSN_START_EXTRA_WORDS 1 + struct CPUMBState { uint32_t btaken; uint32_t btarget; diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 97a436c8d5..d2ee163294 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -58,6 +58,9 @@ typedef struct DisasContext { DisasContextBase base; MicroBlazeCPU *cpu; =20 + /* TCG op of the current insn_start. */ + TCGOp *insn_start; + TCGv_i32 r0; bool r0_set; =20 @@ -71,7 +74,7 @@ typedef struct DisasContext { =20 unsigned int cpustate_changed; unsigned int delayed_branch; - unsigned int tb_flags, synced_flags; /* tb dependent flags. */ + unsigned int tb_flags; unsigned int clear_imm; int mem_index; =20 @@ -96,12 +99,11 @@ static int typeb_imm(DisasContext *dc, int x) /* Include the auto-generated decoder. */ #include "decode-insns.c.inc" =20 -static inline void t_sync_flags(DisasContext *dc) +static void t_sync_flags(DisasContext *dc) { /* Synch the tb dependent flags between translator and runtime. */ - if (dc->tb_flags !=3D dc->synced_flags) { - tcg_gen_movi_i32(cpu_iflags, dc->tb_flags); - dc->synced_flags =3D dc->tb_flags; + if ((dc->tb_flags ^ dc->base.tb->flags) & ~MSR_TB_MASK) { + tcg_gen_movi_i32(cpu_iflags, dc->tb_flags & ~MSR_TB_MASK); } } =20 @@ -770,7 +772,6 @@ static bool do_load(DisasContext *dc, int rd, TCGv addr= , MemOp mop, } } =20 - t_sync_flags(dc); sync_jmpstate(dc); =20 /* @@ -893,7 +894,6 @@ static bool trans_lwx(DisasContext *dc, arg_typea *arg) /* lwx does not throw unaligned access errors, so force alignment */ tcg_gen_andi_tl(addr, addr, ~3); =20 - t_sync_flags(dc); sync_jmpstate(dc); =20 tcg_gen_qemu_ld_i32(cpu_res_val, addr, dc->mem_index, MO_TEUL); @@ -929,7 +929,6 @@ static bool do_store(DisasContext *dc, int rd, TCGv add= r, MemOp mop, } } =20 - t_sync_flags(dc); sync_jmpstate(dc); =20 tcg_gen_qemu_st_i32(reg_for_read(dc, rd), addr, mem_index, mop); @@ -1046,7 +1045,6 @@ static bool trans_swx(DisasContext *dc, arg_typea *ar= g) TCGLabel *swx_fail =3D gen_new_label(); TCGv_i32 tval; =20 - t_sync_flags(dc); sync_jmpstate(dc); =20 /* swx does not throw unaligned access errors, so force alignment */ @@ -1655,7 +1653,7 @@ static void mb_tr_init_disas_context(DisasContextBase= *dcb, CPUState *cs) int bound; =20 dc->cpu =3D cpu; - dc->synced_flags =3D dc->tb_flags =3D dc->base.tb->flags; + dc->tb_flags =3D dc->base.tb->flags; dc->delayed_branch =3D !!(dc->tb_flags & D_FLAG); dc->jmp =3D dc->delayed_branch ? JMP_INDIRECT : JMP_NOJMP; dc->cpustate_changed =3D 0; @@ -1675,7 +1673,10 @@ static void mb_tr_tb_start(DisasContextBase *dcb, CP= UState *cs) =20 static void mb_tr_insn_start(DisasContextBase *dcb, CPUState *cs) { - tcg_gen_insn_start(dcb->pc_next); + DisasContext *dc =3D container_of(dcb, DisasContext, base); + + tcg_gen_insn_start(dc->base.pc_next, dc->tb_flags & ~MSR_TB_MASK); + dc->insn_start =3D tcg_last_op(); } =20 static bool mb_tr_breakpoint_check(DisasContextBase *dcb, CPUState *cs, @@ -1917,4 +1918,5 @@ void restore_state_to_opc(CPUMBState *env, Translatio= nBlock *tb, target_ulong *data) { env->pc =3D data[0]; + env->iflags =3D data[1]; } --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891645; cv=none; d=zohomail.com; s=zohoarc; b=P99KBsnbkjQR+ZQed0SpQaGNc3HWVbCWruWDPu5AMvDp//jsY3h23b98Ya01L/RSGbWb4lwGIgU7KZMqtCfOLjFQVkqMuKQ3dXyJTBL07sqcxu0sdqYTyz4JfC9cYVkkhOc/NpqOQ9154P5PxIyiK9OHQO0sOltajbTNbUtxA2k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891645; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=qeeRN7V1Ip0PITMIEYpKMKFZ3d7CJpkC0dYLX2jwgUk=; b=dzxSF6S9I73tiJtrnhLxgmIOp+AMYa90kXa9FkfuVVYSAIjBRUyTo17I1aVI95stHOhSotZDVOMOT/BOaHoPSa3Mty7MjujNrBAlLLsB2hrWLtkzG3IB9IwEDWGzsa61sDHm7MrRkRKk0t4DRp+hhJySYR+KUkqCAUFs9TI7DdQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891645597297.90919853698927; Mon, 31 Aug 2020 09:34:05 -0700 (PDT) Received: from localhost ([::1]:52986 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmku-0002Z5-J5 for importer@patchew.org; Mon, 31 Aug 2020 12:34:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34520) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmL7-00068l-GR for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:25 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]:37258) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmL5-00068A-RH for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:25 -0400 Received: by mail-pf1-x42f.google.com with SMTP id w7so810460pfi.4 for ; Mon, 31 Aug 2020 09:07:23 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=qeeRN7V1Ip0PITMIEYpKMKFZ3d7CJpkC0dYLX2jwgUk=; b=fWDvkaHNWVTmg/ogFKneZXCk6GgVH0R2L6pr8hUXl/jZhCgEb0szhhhs6gXPVM4WbO Ap9cv4K3BPlqDhRFBydkoa9+heccZOOzwj/FEPXsdv5ufMcWidndJ3bX1BxdLzTODjN1 d9mBdQcVKdVoBprz4uXsIDCeQpLzlGtRToG35nM055zj1jSkRZ8Wr8ONqsjuveHv6EVE Nnfaa+pBKX4KOy06uSGz3a7L86U8F7HvD0N1mSvkbcpQQZ5GLyR8OtLoMENDEmNbiyn2 7vv/FdIxbD78Mipf36+nYGrWUkUw0H+LYG78r9niytQmIH5vd7E1z3InqVMoBKuFJC9J DJ9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=qeeRN7V1Ip0PITMIEYpKMKFZ3d7CJpkC0dYLX2jwgUk=; b=Kc1d86uw3FxnFxkWKM/crSrRV1VC07FKE996Y9sMjPryEOrp1X4jOImult+C0hkE0W FE2dPjWMGnyxIp76mTrJXdCWN+ibVn9y6pQSOA2fT6UyXhcOy25AUg33XMmFejbuETHb j/xt/xFqK7DjTAuPXTGSCwwmFZAn1W4eXek3rBV9d97VsNtuvXhjXPcKIQ/EZTJxo6Jr rhaUs7b/iZgsdaikr8UOO33CchdTPp+nc/L+osOasRjS1gKSMpedFH5zB6UvuDW0PGVy srhmlIjWlNTKQ3MA3Qg3C3v2KGNUdRTbwUUdcVl1lo9f0ZXoQEQFawR2LjbXWCEwkuDO kcqw== X-Gm-Message-State: AOAM531jg1DjqTVPd8ErwB/ALUeFMJ9U8loAmwfOy4QvoxEcabgMo0qW aDxDnbk9iRa0Gqfs+BkYCAS23f5i1Q13dQ== X-Google-Smtp-Source: ABdhPJw4NYpyzobAMT0+goFWvXvVGk7rykuYHRIumQjUhVbWG3UmtDzhxwRzSsKkbEEuYVqgB37W7A== X-Received: by 2002:a62:2bcc:: with SMTP id r195mr1855521pfr.123.1598890042225; Mon, 31 Aug 2020 09:07:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 58/76] tcg: Add tcg_get_insn_start_param Date: Mon, 31 Aug 2020 09:05:43 -0700 Message-Id: <20200831160601.833692-59-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42f.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" MicroBlaze will shortly need to update a parameter in place. Add an interface to read to match that for write. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- include/tcg/tcg.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h index d40c925d04..15da46131b 100644 --- a/include/tcg/tcg.h +++ b/include/tcg/tcg.h @@ -777,11 +777,26 @@ static inline TCGv_i32 TCGV_HIGH(TCGv_i64 t) } #endif =20 +static inline TCGArg tcg_get_insn_param(TCGOp *op, int arg) +{ + return op->args[arg]; +} + static inline void tcg_set_insn_param(TCGOp *op, int arg, TCGArg v) { op->args[arg] =3D v; } =20 +static inline target_ulong tcg_get_insn_start_param(TCGOp *op, int arg) +{ +#if TARGET_LONG_BITS <=3D TCG_TARGET_REG_BITS + return tcg_get_insn_param(op, arg); +#else + return tcg_get_insn_param(op, arg * 2) | + (tcg_get_insn_param(op, arg * 2 + 1) << 32); +#endif +} + static inline void tcg_set_insn_start_param(TCGOp *op, int arg, target_ulo= ng v) { #if TARGET_LONG_BITS <=3D TCG_TARGET_REG_BITS --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891716; cv=none; d=zohomail.com; s=zohoarc; b=OI41m+1h13zOSqY6ygXFfzQQ3yqVi7ZZRBGw2ZwqJxg0NWGZ70ZSArKXMb9moyN9may/NP3JvQpwQ5lB+XQmkBZaZR6CHWYSwbVX5JAB9wAq8ySEda+qdhuEccC+xWiGDZnGZ8qpJcOlFF17vhjAZhbt7KJaeZ4FOrWRemhe8CA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891716; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=hPPwhaOv1/f5e78+KPOAqe2Pb1bWVEOSoZwO+mnHc14=; b=T/IuYeiFgXthirEr+B9Ryo8cuEfZndUYPoHCNr3XS0FF/nvx3RgXhVEyQ70deRO1wGGvIJ5gBsuLHrsdnyFzfqdJFyAFy4Lz6tdf7dxGYbUMcGL65vhi8l8E91hEvL87TAxPZWvno7DeQzaFQ1zjQY84olj08V7ngbBmZti+JEA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891716686270.9850223976366; Mon, 31 Aug 2020 09:35:16 -0700 (PDT) Received: from localhost ([::1]:59252 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmm3-00052u-Pv for importer@patchew.org; Mon, 31 Aug 2020 12:35:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34550) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmLA-0006Bp-GW for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:28 -0400 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]:52137) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmL7-00068N-J2 for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:28 -0400 Received: by mail-pj1-x1035.google.com with SMTP id ds1so32395pjb.1 for ; Mon, 31 Aug 2020 09:07:25 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=hPPwhaOv1/f5e78+KPOAqe2Pb1bWVEOSoZwO+mnHc14=; b=AJuVvromJM9XlIiwcU2TOEGHOSM2mO329P9cUo62B6qHFcPslndGMQgSEy1lCzMHC1 3x0IvX32Ch5LQlYFhx9jxOU1aLwR3QfOyaaTGOEBXh2R1tqXZlp1nMfEU/nVZk/BToh2 CWoBrMZ6QYrGKugePu7rVtkwHcRS+BL7avumgLkla1HvMwZLoqiaCO7FkkWNeEm7bnFz rf1mnM+OrUlvcn8kNJjAl8x78jnzVFCEaSqCedQeHFOCpSNJHXIY+M7vR+qrzNblRc7v e0VawtjK+nQxyfdj/nufUy1iHz6VK5Vs+HAgYXXTlfCwAYDih2Ebgoln2fEo51/rCs2v YNqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=hPPwhaOv1/f5e78+KPOAqe2Pb1bWVEOSoZwO+mnHc14=; b=dS6QDyRhsKPY/xTL8F+gtgbQWvafKrBhND61IRs8L0a64+PVHYlqKHhPKBGkg5+i/O C7XRdsGNPVn7SDIixOWwnYgIZr1N1huFb+r3ezpMVz4NhJgpltvi8/PZYfW+lGX27BUS SGah73cE8/iZBRhbO8cf9pb/pQMqPl09WQM8+JvyzDltjzVY8uBnX+/joRiqOgGM+cCd LSlX76kXdbOqwZvBGBlh8BKLj6I5pU2cfupAyatdoEm4rCMB/dVJjf3a22pOj5q2FbNi o8OrOIMR5Nz66C+dXq6cuNlCHeaS3OMz27kOjUXgiPmIj38QUI2HkFKPCVLqCnE5drBd Sq+g== X-Gm-Message-State: AOAM532T91HC111qtfNTLawulbXlNID5LtmQd7eyMtrHYZ6n+8otD0At KnOmpYgSM0AXiOQVzc5zMg5A6ylWxXsWvA== X-Google-Smtp-Source: ABdhPJwwG1/lFvyPpfa0byOBXUnjGyYqsP8ssX6VIOFPlxq4POfWxK1iZSCnckwqGMF5zjAd9lzGpA== X-Received: by 2002:a17:90b:4c0f:: with SMTP id na15mr65229pjb.119.1598890043547; Mon, 31 Aug 2020 09:07:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 59/76] target/microblaze: Use cc->do_unaligned_access Date: Mon, 31 Aug 2020 09:05:44 -0700 Message-Id: <20200831160601.833692-60-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1035.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This fixes the problem in which unaligned stores succeeded, but then we raised the exception after modifying memory. Store the ESS for the unaligned data access in the iflags for the insn, so that it can be found during unwind. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/cpu.h | 10 ++++- target/microblaze/helper.h | 1 - target/microblaze/cpu.c | 1 + target/microblaze/helper.c | 28 ++++++++++++++ target/microblaze/op_helper.c | 21 ---------- target/microblaze/translate.c | 72 +++++++++++++---------------------- 6 files changed, 64 insertions(+), 69 deletions(-) diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index 83fadd36a5..63b8d93d41 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -79,10 +79,13 @@ typedef struct CPUMBState CPUMBState; =20 /* Exception State Register (ESR) Fields */ #define ESR_DIZ (1<<11) /* Zone Protection */ +#define ESR_W (1<<11) /* Unaligned word access */ #define ESR_S (1<<10) /* Store instruction */ =20 #define ESR_ESS_FSL_OFFSET 5 =20 +#define ESR_ESS_MASK (0x7f << 5) + #define ESR_EC_FSL 0 #define ESR_EC_UNALIGNED_DATA 1 #define ESR_EC_ILLEGAL_OP 2 @@ -256,9 +259,11 @@ struct CPUMBState { /* Internal flags. */ #define IMM_FLAG (1 << 0) #define BIMM_FLAG (1 << 1) -/* MSR_EE (1 << 8) */ +#define ESR_ESS_FLAG (1 << 2) /* indicates ESR_ESS_MASK is present */ +/* MSR_EE (1 << 8) -- these 3 are not in iflags but tb_flag= s */ /* MSR_UM (1 << 11) */ /* MSR_VM (1 << 13) */ +/* ESR_ESS_MASK [11:5] -- unwind into iflags for unaligned excp= */ #define DRTI_FLAG (1 << 16) #define DRTE_FLAG (1 << 17) #define DRTB_FLAG (1 << 18) @@ -330,6 +335,9 @@ struct MicroBlazeCPU { =20 void mb_cpu_do_interrupt(CPUState *cs); bool mb_cpu_exec_interrupt(CPUState *cs, int int_req); +void mb_cpu_do_unaligned_access(CPUState *cs, vaddr vaddr, + MMUAccessType access_type, + int mmu_idx, uintptr_t retaddr); void mb_cpu_dump_state(CPUState *cpu, FILE *f, int flags); hwaddr mb_cpu_get_phys_page_debug(CPUState *cpu, vaddr addr); int mb_cpu_gdb_read_register(CPUState *cpu, GByteArray *buf, int reg); diff --git a/target/microblaze/helper.h b/target/microblaze/helper.h index a473c1867b..3980fba797 100644 --- a/target/microblaze/helper.h +++ b/target/microblaze/helper.h @@ -25,7 +25,6 @@ DEF_HELPER_3(mmu_read, i32, env, i32, i32) DEF_HELPER_4(mmu_write, void, env, i32, i32, i32) #endif =20 -DEF_HELPER_5(memalign, void, env, tl, i32, i32, i32) DEF_HELPER_FLAGS_2(stackprot, TCG_CALL_NO_WG, void, env, tl) =20 DEF_HELPER_2(get, i32, i32, i32) diff --git a/target/microblaze/cpu.c b/target/microblaze/cpu.c index 1eabf5cc3f..67017ecc33 100644 --- a/target/microblaze/cpu.c +++ b/target/microblaze/cpu.c @@ -317,6 +317,7 @@ static void mb_cpu_class_init(ObjectClass *oc, void *da= ta) cc->class_by_name =3D mb_cpu_class_by_name; cc->has_work =3D mb_cpu_has_work; cc->do_interrupt =3D mb_cpu_do_interrupt; + cc->do_unaligned_access =3D mb_cpu_do_unaligned_access; cc->cpu_exec_interrupt =3D mb_cpu_exec_interrupt; cc->dump_state =3D mb_cpu_dump_state; cc->set_pc =3D mb_cpu_set_pc; diff --git a/target/microblaze/helper.c b/target/microblaze/helper.c index 06f4322e09..0e3be251a7 100644 --- a/target/microblaze/helper.c +++ b/target/microblaze/helper.c @@ -296,3 +296,31 @@ bool mb_cpu_exec_interrupt(CPUState *cs, int interrupt= _request) } return false; } + +void mb_cpu_do_unaligned_access(CPUState *cs, vaddr addr, + MMUAccessType access_type, + int mmu_idx, uintptr_t retaddr) +{ + MicroBlazeCPU *cpu =3D MICROBLAZE_CPU(cs); + uint32_t esr, iflags; + + /* Recover the pc and iflags from the corresponding insn_start. */ + cpu_restore_state(cs, retaddr, true); + iflags =3D cpu->env.iflags; + + qemu_log_mask(CPU_LOG_INT, + "Unaligned access addr=3D" TARGET_FMT_lx + " pc=3D%x iflags=3D%x\n", addr, cpu->env.pc, iflags); + + esr =3D ESR_EC_UNALIGNED_DATA; + if (likely(iflags & ESR_ESS_FLAG)) { + esr |=3D iflags & ESR_ESS_MASK; + } else { + qemu_log_mask(LOG_UNIMP, "Unaligned access without ESR_ESS_FLAG\n"= ); + } + + cpu->env.ear =3D addr; + cpu->env.esr =3D esr; + cs->exception_index =3D EXCP_HW_EXCP; + cpu_loop_exit(cs); +} diff --git a/target/microblaze/op_helper.c b/target/microblaze/op_helper.c index e6dcc79243..4614e99db3 100644 --- a/target/microblaze/op_helper.c +++ b/target/microblaze/op_helper.c @@ -365,27 +365,6 @@ uint32_t helper_pcmpbf(uint32_t a, uint32_t b) return 0; } =20 -void helper_memalign(CPUMBState *env, target_ulong addr, - uint32_t dr, uint32_t wr, - uint32_t mask) -{ - if (addr & mask) { - qemu_log_mask(CPU_LOG_INT, - "unaligned access addr=3D" TARGET_FMT_lx - " mask=3D%x, wr=3D%d dr=3Dr%d\n", - addr, mask, wr, dr); - env->ear =3D addr; - env->esr =3D ESR_EC_UNALIGNED_DATA | (wr << 10) | (dr & 31) <<= 5; - if (mask =3D=3D 3) { - env->esr |=3D 1 << 11; - } - if (!(env->msr & MSR_EE)) { - return; - } - helper_raise_exception(env, EXCP_HW_EXCP); - } -} - void helper_stackprot(CPUMBState *env, target_ulong addr) { if (addr < env->slr || addr > env->shr) { diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index d2ee163294..597b96ffb3 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -751,10 +751,22 @@ static TCGv compute_ldst_addr_ea(DisasContext *dc, in= t ra, int rb) return ret; } =20 +static void record_unaligned_ess(DisasContext *dc, int rd, + MemOp size, bool store) +{ + uint32_t iflags =3D tcg_get_insn_start_param(dc->insn_start, 1); + + iflags |=3D ESR_ESS_FLAG; + iflags |=3D rd << 5; + iflags |=3D store * ESR_S; + iflags |=3D (size =3D=3D MO_32) * ESR_W; + + tcg_set_insn_start_param(dc->insn_start, 1, iflags); +} + static bool do_load(DisasContext *dc, int rd, TCGv addr, MemOp mop, int mem_index, bool rev) { - TCGv_i32 v; MemOp size =3D mop & MO_SIZE; =20 /* @@ -774,34 +786,15 @@ static bool do_load(DisasContext *dc, int rd, TCGv ad= dr, MemOp mop, =20 sync_jmpstate(dc); =20 - /* - * Microblaze gives MMU faults priority over faults due to - * unaligned addresses. That's why we speculatively do the load - * into v. If the load succeeds, we verify alignment of the - * address and if that succeeds we write into the destination reg. - */ - v =3D tcg_temp_new_i32(); - tcg_gen_qemu_ld_i32(v, addr, mem_index, mop); - - /* TODO: Convert to CPUClass::do_unaligned_access. */ - if (dc->cpu->cfg.unaligned_exceptions && size > MO_8) { - TCGv_i32 t0 =3D tcg_const_i32(0); - TCGv_i32 treg =3D tcg_const_i32(rd); - TCGv_i32 tsize =3D tcg_const_i32((1 << size) - 1); - - tcg_gen_movi_i32(cpu_pc, dc->base.pc_next); - gen_helper_memalign(cpu_env, addr, treg, t0, tsize); - - tcg_temp_free_i32(t0); - tcg_temp_free_i32(treg); - tcg_temp_free_i32(tsize); + if (size > MO_8 && + (dc->tb_flags & MSR_EE) && + dc->cpu->cfg.unaligned_exceptions) { + record_unaligned_ess(dc, rd, size, false); + mop |=3D MO_ALIGN; } =20 - if (rd) { - tcg_gen_mov_i32(cpu_R[rd], v); - } + tcg_gen_qemu_ld_i32(reg_for_write(dc, rd), addr, mem_index, mop); =20 - tcg_temp_free_i32(v); tcg_temp_free(addr); return true; } @@ -931,28 +924,15 @@ static bool do_store(DisasContext *dc, int rd, TCGv a= ddr, MemOp mop, =20 sync_jmpstate(dc); =20 - tcg_gen_qemu_st_i32(reg_for_read(dc, rd), addr, mem_index, mop); - - /* TODO: Convert to CPUClass::do_unaligned_access. */ - if (dc->cpu->cfg.unaligned_exceptions && size > MO_8) { - TCGv_i32 t1 =3D tcg_const_i32(1); - TCGv_i32 treg =3D tcg_const_i32(rd); - TCGv_i32 tsize =3D tcg_const_i32((1 << size) - 1); - - tcg_gen_movi_i32(cpu_pc, dc->base.pc_next); - /* FIXME: if the alignment is wrong, we should restore the value - * in memory. One possible way to achieve this is to probe - * the MMU prior to the memaccess, thay way we could put - * the alignment checks in between the probe and the mem - * access. - */ - gen_helper_memalign(cpu_env, addr, treg, t1, tsize); - - tcg_temp_free_i32(t1); - tcg_temp_free_i32(treg); - tcg_temp_free_i32(tsize); + if (size > MO_8 && + (dc->tb_flags & MSR_EE) && + dc->cpu->cfg.unaligned_exceptions) { + record_unaligned_ess(dc, rd, size, true); + mop |=3D MO_ALIGN; } =20 + tcg_gen_qemu_st_i32(reg_for_read(dc, rd), addr, mem_index, mop); + tcg_temp_free(addr); return true; } --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891796; cv=none; d=zohomail.com; s=zohoarc; b=L483sJD6hrOF/oHzqv/SsIdBq/nASEfk9CsPxz39FZG9VfX2FZWzoKLurMqjbBa61+CiYbK+UbNyzWtTiCpKFRloUxjMmWPKZt739p14aBaFz+DfJYCUwctT7T6S/JCD6DU/g9FOKhXKY3Cly1hLAF9WLtJeNT0vIzkAUM2upQ0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891796; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=HE8Wik9vttKTZZENz5zVdtMEhiCJ7C/1UlGJaVpED9U=; b=FukYmSybPi5a8k2XJVRROLGV3Iw8QXZvbCJKFaAK0rUg79I9ZaE37bKKthPuyWMJwY7erHVIpIT3IEUGgPpWmUl6OwlzsX3C15iahJiXb8egSVi2JK91dFaJGrIVMTW3zEdDXzV2lvr0BHeG852v8dalDbyIDVDebllRC+WyHg8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891796292910.6946990091832; Mon, 31 Aug 2020 09:36:36 -0700 (PDT) Received: from localhost ([::1]:37320 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmnL-0007ew-9b for importer@patchew.org; Mon, 31 Aug 2020 12:36:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34570) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmLC-0006Ej-8k for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:30 -0400 Received: from mail-pg1-x544.google.com ([2607:f8b0:4864:20::544]:35756) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmL8-00068V-LT for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:29 -0400 Received: by mail-pg1-x544.google.com with SMTP id g29so843674pgl.2 for ; Mon, 31 Aug 2020 09:07:26 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=HE8Wik9vttKTZZENz5zVdtMEhiCJ7C/1UlGJaVpED9U=; b=GejGOa5tD4nNLq3MjRuxcqGWZynkrKKlL80BiRBXfkwhCByzj9HYKafVw5HDHneVKo m1Ndq/hTKE0ouNYm1JaPFF9WwZYSfKdXDktSMHREzWgIiQ/VllYm/mLS8kiCuXHZeRtj Ne8W+RgwkYmVO/Dqqx9otxn+gfhVT6ZuReBqYQ+QBVSjbFWIy/ZF8lK3zs/CE0a++nx8 qZsfLTflRIvAlWrK37g2RJO3hLe0YxDqGDPTy6tPH1eeee9iHpTJ6HjkBYO1PCkY18cH WWzi2kVU5/xSeeI0+VZ1lV4R5PllF+QGkFhbwC0XYP1H3GDK9S9ZmiX71d6c6Mi+vWqG zLaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=HE8Wik9vttKTZZENz5zVdtMEhiCJ7C/1UlGJaVpED9U=; b=q4oas1AkJT2/DXTZsCOfHbrQ1bR2k9j6dlBj5FiHxfX6/NPvhyIbSnmSYW8C2n4h2i 19YgPD3GHzP1JxEva07Gl94euN+ewFuKe7LJyMQ4LLkfRqNuoPNTdqkbSeHFs2TSrSCi BgB06MOiUxJqYQr/6pryituqDKoDrkAEd7x6tcsvEDabkAJgH201XBWjm3h9qbNePOP1 5mVLhoXwgJSEniv52M9dQZSG3ijktlTmF20CU0GCkCwmIdj9Q/bDwzKQliVLmbNdAoDC oqDC1dnD4RjPV+Wrs4zlZWzf1XUsREg3qzrkmEMn4rRYg7t7in10+E7L7E2ngEjZ9mOH +SCw== X-Gm-Message-State: AOAM533c6rRrplICqO5gfI7th2icvizO2/LfAn5fbPeh34dL9eWz+FVv PiA/73DTZfsT5p7Ldeb3ollnPKcOHvPVkQ== X-Google-Smtp-Source: ABdhPJwYXNtqG/e9oHJlCU0Uh6lnOONfCNWV2CZyVPYdnoEJs+/k0UW2URkyKMlpDDGM9tG7E+LJ5w== X-Received: by 2002:a63:b24b:: with SMTP id t11mr1747404pgo.233.1598890044938; Mon, 31 Aug 2020 09:07:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 60/76] target/microblaze: Replace clear_imm with tb_flags_to_set Date: Mon, 31 Aug 2020 09:05:45 -0700 Message-Id: <20200831160601.833692-61-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::544; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x544.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This more general update variable will be able to handle delay slots as well. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/translate.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 597b96ffb3..c0b586f467 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -75,7 +75,7 @@ typedef struct DisasContext { unsigned int cpustate_changed; unsigned int delayed_branch; unsigned int tb_flags; - unsigned int clear_imm; + unsigned int tb_flags_to_set; int mem_index; =20 #define JMP_NOJMP 0 @@ -535,8 +535,7 @@ static bool trans_imm(DisasContext *dc, arg_imm *arg) { dc->ext_imm =3D arg->imm << 16; tcg_gen_movi_i32(cpu_imm, dc->ext_imm); - dc->tb_flags |=3D IMM_FLAG; - dc->clear_imm =3D 0; + dc->tb_flags_to_set =3D IMM_FLAG; return true; } =20 @@ -1688,7 +1687,8 @@ static void mb_tr_translate_insn(DisasContextBase *dc= b, CPUState *cs) (uint32_t)dc->base.pc_next); } =20 - dc->clear_imm =3D 1; + dc->tb_flags_to_set =3D 0; + ir =3D cpu_ldl_code(env, dc->base.pc_next); if (!decode(dc, ir)) { old_decode(dc, ir); @@ -1700,10 +1700,13 @@ static void mb_tr_translate_insn(DisasContextBase *= dcb, CPUState *cs) dc->r0_set =3D false; } =20 - if (dc->clear_imm && (dc->tb_flags & IMM_FLAG)) { - dc->tb_flags &=3D ~IMM_FLAG; + /* Discard the imm global when its contents cannot be used. */ + if ((dc->tb_flags & ~dc->tb_flags_to_set) & IMM_FLAG) { tcg_gen_discard_i32(cpu_imm); } + + dc->tb_flags &=3D ~IMM_FLAG; + dc->tb_flags |=3D dc->tb_flags_to_set; dc->base.pc_next +=3D 4; =20 if (dc->delayed_branch && --dc->delayed_branch =3D=3D 0) { --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891881; cv=none; d=zohomail.com; s=zohoarc; b=jk8mCCL8zp0u9m6/HwT1EaxeSIp1aDfZMusa4BjmEei5l3x36V0xbFIMrZpe/AtfhghhDP3I2ASZjLGeQTDlvgiifTiO8qyNNa4GUJM4RUrVINxqi//WDS5wgxI3N8hfrmnmUVcqZLAR7kcXsBFV9DUroLlIeySNLk66h5eUSLI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891881; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=jA1f7A7ZHCufkuLSHghiR/JDH1zZqdVgsEJ9cK+3ePA=; b=VWlO17E5huylskIus9jFRhuzYhK2qJPazgMiyQggaGOK3m5O0itDOj1BH+vLSQAJeswx8dTFBQyMShhNTrwaVIN/1Hn5BayEQuHOJNeFPenBfe8mvDGTskoav54eC3b12Rsx02CEFHBCOJMqlDmCnYYeQLGwjirZggm/r5bTAp0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 159889188112424.03210935593893; Mon, 31 Aug 2020 09:38:01 -0700 (PDT) Received: from localhost ([::1]:43676 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmoi-0001t0-1l for importer@patchew.org; Mon, 31 Aug 2020 12:38:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34582) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmLC-0006Ez-UA for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:30 -0400 Received: from mail-pj1-x1032.google.com ([2607:f8b0:4864:20::1032]:39893) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmLA-00068a-5v for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:30 -0400 Received: by mail-pj1-x1032.google.com with SMTP id s2so22775pjr.4 for ; Mon, 31 Aug 2020 09:07:27 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=jA1f7A7ZHCufkuLSHghiR/JDH1zZqdVgsEJ9cK+3ePA=; b=F3CV60jvtEZM5+2d1lMfu24xJ7UAKLp7iODShEc2mjfDtMZ9+TM64wAsRHCsB3TT1g aMjpFspBop/OVnI4KyIjDQLYlKGHFG/Dv4xP6mKnjra/QWtJBDBg81WHrqezc+vCozEM EBLUvAdbD+Gi7PmJa74ISCGhYkk4MBcYIfCLRSZCLMvAB/RD3ARVpCM33JR3AzeebmoX UbIeAzD/xM4GMtNjsTsNKfP75lE+atGdQLJHeVQ8Uhx/f23/jjSIL5Q5VgB9Ymeu/zem qHICHkzSoxbBc6rgVaf49KtbeBKqgAJzNdz8TtWDDfdjrdevDTwC1HMtJ7c+6WpXjhBd +GTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=jA1f7A7ZHCufkuLSHghiR/JDH1zZqdVgsEJ9cK+3ePA=; b=V3ID0m8sqeyHwfe+plQ2GN5pauM5IseRQYuQ+Wm+CQy9rCLjbxSU+PwJZF0GpMxpja qhY+kygjnhBKCBaQQT39RYXVAMeB7qZu1fJkFjTQnCryWp41c+NsomO1kw2WkLFJtZVc 8cHH6s0VptIlsAFA+9UFZGQy8k+dnQ6KkAAJv/ccLRRQKFttDM7eH57hWkmcW46+afc9 V0AzAeLAFtSfDcdCl64xGnE4TInF+wtH+kK43C1+gtRBqyIF3L3m0KPVBZ/0X5wrdRmo oM+ta8IaF68l3JVUh27JW31jNLl1YpYoIhLTgH9yHxjKnOmnlDhNk45UQ/0ZZy6ol6vN gjpA== X-Gm-Message-State: AOAM531JZ5joeIbKU+JMapjwO4DRklJjS8WL3W8nuznmcDplq74hId4T 8iJVnPeglxmm0rQvjCDum/YdPdh1KtMRYA== X-Google-Smtp-Source: ABdhPJystK+ptJud0yiveY2s7xJVY+x2ZL/CTJIlsck7onWH4DAFEHoldub4+kHQcYVMddh/7u41bA== X-Received: by 2002:a17:90a:9b14:: with SMTP id f20mr87758pjp.214.1598890046306; Mon, 31 Aug 2020 09:07:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 61/76] target/microblaze: Replace delayed_branch with tb_flags_to_set Date: Mon, 31 Aug 2020 09:05:46 -0700 Message-Id: <20200831160601.833692-62-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1032; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1032.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The multi-stage counter can be replaced by clearing D_FLAG, the or'ing in tb_flags_to_set. The jump then happens when D_FLAG is finally cleared. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/translate.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index c0b586f467..811c92d23b 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -73,7 +73,6 @@ typedef struct DisasContext { uint16_t imm; =20 unsigned int cpustate_changed; - unsigned int delayed_branch; unsigned int tb_flags; unsigned int tb_flags_to_set; int mem_index; @@ -1328,10 +1327,9 @@ static void eval_cond_jmp(DisasContext *dc, TCGv_i32= pc_true, TCGv_i32 pc_false) =20 static void dec_setup_dslot(DisasContext *dc) { - dc->delayed_branch =3D 2; - dc->tb_flags |=3D D_FLAG; + dc->tb_flags_to_set |=3D D_FLAG; if (dc->type_b && (dc->tb_flags & IMM_FLAG)) { - dc->tb_flags |=3D BIMM_FLAG; + dc->tb_flags_to_set |=3D BIMM_FLAG; } } =20 @@ -1343,7 +1341,6 @@ static void dec_bcc(DisasContext *dc) cc =3D EXTRACT_FIELD(dc->ir, 21, 23); dslot =3D dc->ir & (1 << 25); =20 - dc->delayed_branch =3D 1; if (dslot) { dec_setup_dslot(dc); } @@ -1419,7 +1416,6 @@ static void dec_br(DisasContext *dc) } } =20 - dc->delayed_branch =3D 1; if (dslot) { dec_setup_dslot(dc); } @@ -1633,8 +1629,7 @@ static void mb_tr_init_disas_context(DisasContextBase= *dcb, CPUState *cs) =20 dc->cpu =3D cpu; dc->tb_flags =3D dc->base.tb->flags; - dc->delayed_branch =3D !!(dc->tb_flags & D_FLAG); - dc->jmp =3D dc->delayed_branch ? JMP_INDIRECT : JMP_NOJMP; + dc->jmp =3D dc->tb_flags & D_FLAG ? JMP_INDIRECT : JMP_NOJMP; dc->cpustate_changed =3D 0; dc->abort_at_next_insn =3D 0; dc->ext_imm =3D dc->base.tb->cs_base; @@ -1705,11 +1700,11 @@ static void mb_tr_translate_insn(DisasContextBase *= dcb, CPUState *cs) tcg_gen_discard_i32(cpu_imm); } =20 - dc->tb_flags &=3D ~IMM_FLAG; + dc->tb_flags &=3D ~(IMM_FLAG | BIMM_FLAG | D_FLAG); dc->tb_flags |=3D dc->tb_flags_to_set; dc->base.pc_next +=3D 4; =20 - if (dc->delayed_branch && --dc->delayed_branch =3D=3D 0) { + if (dc->jmp !=3D JMP_NOJMP && !(dc->tb_flags & D_FLAG)) { if (dc->tb_flags & DRTI_FLAG) { do_rti(dc); } @@ -1719,8 +1714,6 @@ static void mb_tr_translate_insn(DisasContextBase *dc= b, CPUState *cs) if (dc->tb_flags & DRTE_FLAG) { do_rte(dc); } - /* Clear the delay slot flag. */ - dc->tb_flags &=3D ~D_FLAG; dc->base.is_jmp =3D DISAS_JUMP; } =20 --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891950; cv=none; d=zohomail.com; s=zohoarc; b=en7GAESY/95K+1TmBLU7kVoyxeq9FAd5B41oGdVOdDfp34p+Uod/8l3XaNC14BxLvGxlb1rEfxY20DPQtvTWTccMn2jzWhFTARjY3ZIX1pDcwFIayo+Q6vablBuOplFQ9C11xKNz3Z06BGlFXbZ3tSJbFxOTyYKAy3PbAxcjQJY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891950; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=0VSksOfKW1ugYJ+R8MPzR710nsFiQJIhTNG7hwTinY4=; b=Xy/iymW6JTs2jBzD7H1qJnLIfJiaYIzMKfFlKOXANlQ5CqVUEA+/AY9CS8Raxqqh4vw++wHMNUQcISmyzrbB40Pi7bfj3GCC0/DWKHw9M39PL+d43QIYF1KzvX0fEhd5JkKkBJoUOI7bJdbxHvT5Pmx+uz4b0hE9Ls2jO8704Xo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891950482582.2002702077385; Mon, 31 Aug 2020 09:39:10 -0700 (PDT) Received: from localhost ([::1]:50024 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmpp-0004gF-Jl for importer@patchew.org; Mon, 31 Aug 2020 12:39:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34588) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmLD-0006G6-Kk for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:32 -0400 Received: from mail-pg1-x543.google.com ([2607:f8b0:4864:20::543]:35756) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmLB-00068j-Q8 for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:31 -0400 Received: by mail-pg1-x543.google.com with SMTP id g29so843749pgl.2 for ; Mon, 31 Aug 2020 09:07:28 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=0VSksOfKW1ugYJ+R8MPzR710nsFiQJIhTNG7hwTinY4=; b=qZw/8raV5MjGQHNSax9gJVsk8eIQ5X4xsdiXxWFo+U6cJYeyeRs9KNF+QdVcjpW1i0 9OiuLY5e5bSk47x1IW+Du67oI4hJzuiUPwZL8VG49Cgz6pdG+JhY9Kk2K6X+jnZQ5xyw HVUzu2dTuOY2Kmk5kzkK9cdOE0n10mGQYKDBu6KkZQj2Z/T9jRv5v1XteBHf9roPK5P1 IleWeykCt6kFSkjioa1J15PrnKdvOp4LOtPf+ZCzycu1Osb7QvpWBnDVDvtRayy8KV6C t3PVppJCnB8+ljh7EZ3QOh2Tna0ND2iwG+rnVwbK2Cyq/vSyny8CxSXjLQ9GvYoyO4rr YE8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=0VSksOfKW1ugYJ+R8MPzR710nsFiQJIhTNG7hwTinY4=; b=CW/mRQnuxLD5s9G5dP7vBjodTYYlXPLZcy4qYP0XAzSiNVAQwh+nniKGUPdlrrRcwd W6PXrr+l1zX9aFD4qh6ScNRdCdn7Mv1uS3nDSgpjDr+fkj95pbFgl1qymrxHrycPwmcs bbajKjg2zyjgPqI6V2lE5ifvPkO2iLM7QnzKbIqT0k9W21jJ7YGGwQDMmdwn+JzflD1p dEq9N2Q70gXCV1DeKmdZykw/edPd3GVYCooqgpKCwbY6ndPsxvOQsg1DvLqYjvCPpqvY KWqWMU+uVqnYxG15lXuSHoi3NYNZTv2YogqU6Of36Vjx6fqC548tsxf4+fbBcVL9KyCD rfjA== X-Gm-Message-State: AOAM533x9z57zPsIlHnlRiuTfRoiO9lwBWMc6CkONgUMVADlzVJnp6xz /sUSjTd/8+aYpYdCiDhVoEnzVpp5cTCCXQ== X-Google-Smtp-Source: ABdhPJxIOyARnby/JxUybhBmHuIeKPjdMYKeqU7rDLRf6dcm3FATIY+U74LKUS9diiU2UBPVZvCxeg== X-Received: by 2002:a63:2809:: with SMTP id o9mr1820673pgo.410.1598890047573; Mon, 31 Aug 2020 09:07:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 62/76] target/microblaze: Tidy mb_cpu_dump_state Date: Mon, 31 Aug 2020 09:05:47 -0700 Message-Id: <20200831160601.833692-63-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::543; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x543.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Using lookup_symbol is quite slow; remove that. Decode the various bits of iflags; only show imm, btaken, btarget when they are relevant to iflags. Improve formatting. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/translate.c | 67 +++++++++++++++++++++-------------- 1 file changed, 41 insertions(+), 26 deletions(-) diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 811c92d23b..3b63fd79e5 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -1818,41 +1818,56 @@ void mb_cpu_dump_state(CPUState *cs, FILE *f, int f= lags) { MicroBlazeCPU *cpu =3D MICROBLAZE_CPU(cs); CPUMBState *env =3D &cpu->env; + uint32_t iflags; int i; =20 - if (!env) { - return; - } - - qemu_fprintf(f, "IN: PC=3D%x %s\n", - env->pc, lookup_symbol(env->pc)); - qemu_fprintf(f, "rmsr=3D%x resr=3D%x rear=3D%" PRIx64 " " - "imm=3D%x iflags=3D%x fsr=3D%x rbtr=3D%x\n", - env->msr, env->esr, env->ear, - env->imm, env->iflags, env->fsr, env->btr); - qemu_fprintf(f, "btaken=3D%d btarget=3D%x mode=3D%s(saved=3D%s) eip=3D= %d ie=3D%d\n", - env->btaken, env->btarget, + qemu_fprintf(f, "pc=3D0x%08x msr=3D0x%05x mode=3D%s(saved=3D%s) eip=3D= %d ie=3D%d\n", + env->pc, env->msr, (env->msr & MSR_UM) ? "user" : "kernel", (env->msr & MSR_UMS) ? "user" : "kernel", (bool)(env->msr & MSR_EIP), (bool)(env->msr & MSR_IE)); - for (i =3D 0; i < 12; i++) { - qemu_fprintf(f, "rpvr%2.2d=3D%8.8x ", i, env->pvr.regs[i]); - if ((i + 1) % 4 =3D=3D 0) { - qemu_fprintf(f, "\n"); - } + + iflags =3D env->iflags; + qemu_fprintf(f, "iflags: 0x%08x", iflags); + if (iflags & IMM_FLAG) { + qemu_fprintf(f, " IMM(0x%08x)", env->imm); + } + if (iflags & BIMM_FLAG) { + qemu_fprintf(f, " BIMM"); + } + if (iflags & D_FLAG) { + qemu_fprintf(f, " D(btaken=3D%d btarget=3D0x%08x)", + env->btaken, env->btarget); + } + if (iflags & DRTI_FLAG) { + qemu_fprintf(f, " DRTI"); + } + if (iflags & DRTE_FLAG) { + qemu_fprintf(f, " DRTE"); + } + if (iflags & DRTB_FLAG) { + qemu_fprintf(f, " DRTB"); + } + if (iflags & ESR_ESS_FLAG) { + qemu_fprintf(f, " ESR_ESS(0x%04x)", iflags & ESR_ESS_MASK); + } + + qemu_fprintf(f, "\nesr=3D0x%04x fsr=3D0x%02x btr=3D0x%08x edr=3D0x%x\n" + "ear=3D0x%016" PRIx64 " slr=3D0x%x shr=3D0x%x\n", + env->esr, env->fsr, env->btr, env->edr, + env->ear, env->slr, env->shr); + + for (i =3D 0; i < 12; i++) { + qemu_fprintf(f, "rpvr%-2d=3D%08x%c", + i, env->pvr.regs[i], i % 4 =3D=3D 3 ? '\n' : ' '); } =20 - /* Registers that aren't modeled are reported as 0 */ - qemu_fprintf(f, "redr=3D%x rpid=3D0 rzpr=3D0 rtlbx=3D0 rtlbsx=3D0 " - "rtlblo=3D0 rtlbhi=3D0\n", env->edr); - qemu_fprintf(f, "slr=3D%x shr=3D%x\n", env->slr, env->shr); for (i =3D 0; i < 32; i++) { - qemu_fprintf(f, "r%2.2d=3D%8.8x ", i, env->regs[i]); - if ((i + 1) % 4 =3D=3D 0) - qemu_fprintf(f, "\n"); - } - qemu_fprintf(f, "\n\n"); + qemu_fprintf(f, "r%2.2d=3D%08x%c", + i, env->regs[i], i % 4 =3D=3D 3 ? '\n' : ' '); + } + qemu_fprintf(f, "\n"); } =20 void mb_tcg_init(void) --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891396; cv=none; d=zohomail.com; s=zohoarc; b=Jcf0K0+QUilddkVbC2nlS/Utbt86Ctv9JHe6X8Ws/w4N1Zp1tZtR1Zw8aepYagXPu07O0aBJkHugxEZUmvkB6FCP8r96zlypQ9apYY5ydDAZlXY3uiNs5cE/16SJCu5Sb5ovWhyk+Y64LJRrp7vmTs4wAM20CLHkb4GPHyePZWo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891396; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=GSPxh4SxANPQrDwWc1e6Tl2jupR+kuvykZRFnQlRio0=; b=DRsRj4xqDXHgzHNDkBM2nr86S7qamKVb2CWB82MLotbpSi2dp+aB+fpcDNrIITLtAT5c+0cZ6KAYCtHB9YQ06AL5AIcGXn8N2oDI7TUzDCPAQXN+tVpzPQPKTvajVRMIZe9tsp1eLu7pzhm6qVPr8I1xmsdcZRP7l1CIpjXmQ64= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891396094292.1903169944676; Mon, 31 Aug 2020 09:29:56 -0700 (PDT) Received: from localhost ([::1]:33676 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmgt-0002yX-B2 for importer@patchew.org; Mon, 31 Aug 2020 12:29:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34616) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmLF-0006IQ-Al for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:33 -0400 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]:37630) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmLD-00068x-Ap for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:32 -0400 Received: by mail-pj1-x1033.google.com with SMTP id mw10so28796pjb.2 for ; Mon, 31 Aug 2020 09:07:30 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=GSPxh4SxANPQrDwWc1e6Tl2jupR+kuvykZRFnQlRio0=; b=ApfKIbC46H8iYRd5MhO8HDuWyGgczRwsBMRYc/SWai7Hh4kfVJk5bGA0e98sOKy/ac hDQGRX3I0Sr8mW/qLOEY/c9xyyqw+4bD8JwGkiPOYPOgJpHpMCgcYmT/myvjv253DDlJ JZCfG+UHBDDXvBE4bZJBTGm+xpsVjIBxDrq7w84DXad3rTAiW5muENOq88M/9f8b23qN wZn+OWR3Ig9p1ailZMVsIOwE9saEm5HJiiOkpFMYn44ZdOGjKhYFVtcJ4HWQ864atwq5 bxHVW05KuvPiXESWnKY83UHdBpQA86n/WKZJhDiSvKN4q6W/lQHTjbklX8KNKTPMW0oD 1evA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=GSPxh4SxANPQrDwWc1e6Tl2jupR+kuvykZRFnQlRio0=; b=hZ7AzaPya6pMBY+uR7RumT47bFi2Ykix5eWm7QmGhFSTCDLra17W2uQrXRFDMR++Tp 3HlgSy/ndGt1QGjRtg8AIp7f9WURNmPNW481TDmwNpqyCA2wbddZaVlHW73uASXYkH43 H1rG/9VNDiq/jZZoDO4Vyl2iI5iqY4kCbm+OVN6leVZPAYXQquogHAfWNOWkWpTrgIPQ dWB7ZXxqrkLxV/fnRyWzq13r5Zxkvo5MECk0mWQdETG8zdry8j2qDe+j8JkrLXNHBDUm UvBEyrU1zC3uamUIueAw63PQKW5mRETcCt3kaqfk7hf/QHPrCCfAyllBgpOZOX/A+H34 e6lA== X-Gm-Message-State: AOAM531jCTr46S3OcBdDazyc+85wAqHDx1mJRatg1iNW2ZuW+jJivhaV +AhY+sIA5NIuGnv/qBQijlZL+T3ZTypcRQ== X-Google-Smtp-Source: ABdhPJzqg49XV2wXTIcjRSz5UCQMK0J2du2yuwwErRPcpopVNzdNnHXLwt7vistgA48T0GTSyQ7g6A== X-Received: by 2002:a17:902:6901:: with SMTP id j1mr1591538plk.324.1598890049125; Mon, 31 Aug 2020 09:07:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 63/76] target/microblaze: Convert brk and brki to decodetree Date: Mon, 31 Aug 2020 09:05:48 -0700 Message-Id: <20200831160601.833692-64-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1033.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Split these out of the normal branch instructions, as they require special handling. Perform the entire operation inline, instead of raising EXCP_BREAK to do the work in mb_cpu_do_interrupt. This fixes a bug in that brki rd, imm, for imm !=3D 0x18 is not supposed to set MSR_BIP. This fixes a bug in that imm =3D=3D 0 is the reset vector and 0x18 is the debug vector, and neither should raise a tcg exception in system mode. Introduce EXCP_SYSCALL for microblaze-linux-user. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/cpu.h | 2 +- target/microblaze/insns.decode | 11 ++++ linux-user/microblaze/cpu_loop.c | 2 +- target/microblaze/helper.c | 10 +-- target/microblaze/translate.c | 107 ++++++++++++++++++------------- 5 files changed, 79 insertions(+), 53 deletions(-) diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index 63b8d93d41..1528749a0b 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -31,7 +31,7 @@ typedef struct CPUMBState CPUMBState; =20 #define EXCP_MMU 1 #define EXCP_IRQ 2 -#define EXCP_BREAK 3 +#define EXCP_SYSCALL 3 /* user-only */ #define EXCP_HW_BREAK 4 #define EXCP_HW_EXCP 5 =20 diff --git a/target/microblaze/insns.decode b/target/microblaze/insns.decode index 47b92b9cbc..9273a51d20 100644 --- a/target/microblaze/insns.decode +++ b/target/microblaze/insns.decode @@ -19,7 +19,9 @@ =20 &typea0 rd ra &typea rd ra rb +&typea_br rd rb &typeb rd ra imm +&typeb_br rd imm =20 # Include any IMM prefix in the value reported. %extimm 0:s16 !function=3Dtypeb_imm @@ -30,9 +32,15 @@ # Officially typea, but with rb=3D=3D0, which is not used. @typea0 ...... rd:5 ra:5 ................ &typea0 =20 +# Officially typea, but with ra as opcode. +@typea_br ...... rd:5 ..... rb:5 ........... &typea_br + # Officially typeb, but any immediate extension is unused. @typeb_bs ...... rd:5 ra:5 ..... ...... imm:5 &typeb =20 +# Officially typeb, but with ra as opcode. +@typeb_br ...... rd:5 ..... ................ &typeb_br imm=3D%e= xtimm + # For convenience, extract the two imm_w/imm_s fields, then pack # them back together as "imm". Doing this makes it easiest to # match the required zero at bit 5. @@ -60,6 +68,9 @@ andi 101001 ..... ..... ................ @= typeb andn 100011 ..... ..... ..... 000 0000 0000 @typea andni 101011 ..... ..... ................ @typeb =20 +brk 100110 ..... 01100 ..... 000 0000 0000 @typea_br +brki 101110 ..... 01100 ................ @typeb_br + bsrl 010001 ..... ..... ..... 000 0000 0000 @typea bsra 010001 ..... ..... ..... 010 0000 0000 @typea bsll 010001 ..... ..... ..... 100 0000 0000 @typea diff --git a/linux-user/microblaze/cpu_loop.c b/linux-user/microblaze/cpu_l= oop.c index 3de99ea311..c3396a6e09 100644 --- a/linux-user/microblaze/cpu_loop.c +++ b/linux-user/microblaze/cpu_loop.c @@ -48,7 +48,7 @@ void cpu_loop(CPUMBState *env) case EXCP_INTERRUPT: /* just indicate that signals should be handled asap */ break; - case EXCP_BREAK: + case EXCP_SYSCALL: /* Return address is 4 bytes after the call. */ env->regs[14] +=3D 4; env->pc =3D env->regs[14]; diff --git a/target/microblaze/helper.c b/target/microblaze/helper.c index 0e3be251a7..1667822fb7 100644 --- a/target/microblaze/helper.c +++ b/target/microblaze/helper.c @@ -230,7 +230,6 @@ void mb_cpu_do_interrupt(CPUState *cs) //log_cpu_state_mask(CPU_LOG_INT, cs, 0); break; =20 - case EXCP_BREAK: case EXCP_HW_BREAK: assert(!(env->iflags & IMM_FLAG)); assert(!(env->iflags & D_FLAG)); @@ -242,13 +241,8 @@ void mb_cpu_do_interrupt(CPUState *cs) msr &=3D ~(MSR_VMS | MSR_UMS | MSR_VM | MSR_UM); msr |=3D t; msr |=3D MSR_BIP; - if (cs->exception_index =3D=3D EXCP_HW_BREAK) { - env->regs[16] =3D env->pc; - msr |=3D MSR_BIP; - env->pc =3D cpu->cfg.base_vectors + 0x18; - } else { - env->pc =3D env->btarget; - } + env->regs[16] =3D env->pc; + env->pc =3D cpu->cfg.base_vectors + 0x18; mb_cpu_write_msr(env, msr); break; default: diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 3b63fd79e5..1c772b95d9 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -1068,6 +1068,65 @@ static bool trans_swx(DisasContext *dc, arg_typea *a= rg) return true; } =20 +static bool trans_brk(DisasContext *dc, arg_typea_br *arg) +{ + if (trap_userspace(dc, true)) { + return true; + } + tcg_gen_mov_i32(cpu_pc, reg_for_read(dc, arg->rb)); + if (arg->rd) { + tcg_gen_movi_i32(cpu_R[arg->rd], dc->base.pc_next); + } + tcg_gen_ori_i32(cpu_msr, cpu_msr, MSR_BIP); + tcg_gen_movi_tl(cpu_res_addr, -1); + + dc->base.is_jmp =3D DISAS_UPDATE; + return true; +} + +static bool trans_brki(DisasContext *dc, arg_typeb_br *arg) +{ + uint32_t imm =3D arg->imm; + + if (trap_userspace(dc, imm !=3D 0x8 && imm !=3D 0x18)) { + return true; + } + tcg_gen_movi_i32(cpu_pc, imm); + if (arg->rd) { + tcg_gen_movi_i32(cpu_R[arg->rd], dc->base.pc_next); + } + tcg_gen_movi_tl(cpu_res_addr, -1); + +#ifdef CONFIG_USER_ONLY + switch (imm) { + case 0x8: /* syscall trap */ + gen_raise_exception_sync(dc, EXCP_SYSCALL); + break; + case 0x18: /* debug trap */ + gen_raise_exception_sync(dc, EXCP_DEBUG); + break; + default: /* eliminated with trap_userspace check */ + g_assert_not_reached(); + } +#else + uint32_t msr_to_set =3D 0; + + if (imm !=3D 0x18) { + msr_to_set |=3D MSR_BIP; + } + if (imm =3D=3D 0x8 || imm =3D=3D 0x18) { + /* MSR_UM and MSR_VM are in tb_flags, so we know their value. */ + msr_to_set |=3D (dc->tb_flags & (MSR_UM | MSR_VM)) << 1; + tcg_gen_andi_i32(cpu_msr, cpu_msr, + ~(MSR_VMS | MSR_UMS | MSR_VM | MSR_UM)); + } + tcg_gen_ori_i32(cpu_msr, cpu_msr, msr_to_set); + dc->base.is_jmp =3D DISAS_UPDATE; +#endif + + return true; +} + static bool trans_zero(DisasContext *dc, arg_zero *arg) { /* If opcode_0_illegal, trap. */ @@ -1359,6 +1418,7 @@ static void dec_bcc(DisasContext *dc) static void dec_br(DisasContext *dc) { unsigned int dslot, link, abs, mbar; + uint32_t add_pc; =20 dslot =3D dc->ir & (1 << 20); abs =3D dc->ir & (1 << 19); @@ -1401,21 +1461,6 @@ static void dec_br(DisasContext *dc) return; } =20 - if (abs && link && !dslot) { - if (dc->type_b) { - /* BRKI */ - uint32_t imm =3D dec_alu_typeb_imm(dc); - if (trap_userspace(dc, imm !=3D 8 && imm !=3D 0x18)) { - return; - } - } else { - /* BRK */ - if (trap_userspace(dc, true)) { - return; - } - } - } - if (dslot) { dec_setup_dslot(dc); } @@ -1423,38 +1468,14 @@ static void dec_br(DisasContext *dc) tcg_gen_movi_i32(cpu_R[dc->rd], dc->base.pc_next); } =20 - if (abs) { - if (dc->type_b) { - uint32_t dest =3D dec_alu_typeb_imm(dc); - - dc->jmp =3D JMP_DIRECT; - dc->jmp_pc =3D dest; - tcg_gen_movi_i32(cpu_btarget, dest); - if (link && !dslot) { - switch (dest) { - case 8: - case 0x18: - gen_raise_exception_sync(dc, EXCP_BREAK); - break; - case 0: - gen_raise_exception_sync(dc, EXCP_DEBUG); - break; - } - } - } else { - dc->jmp =3D JMP_INDIRECT; - tcg_gen_mov_i32(cpu_btarget, cpu_R[dc->rb]); - if (link && !dslot) { - gen_raise_exception_sync(dc, EXCP_BREAK); - } - } - } else if (dc->type_b) { + add_pc =3D abs ? 0 : dc->base.pc_next; + if (dc->type_b) { dc->jmp =3D JMP_DIRECT; - dc->jmp_pc =3D dc->base.pc_next + dec_alu_typeb_imm(dc); + dc->jmp_pc =3D add_pc + dec_alu_typeb_imm(dc); tcg_gen_movi_i32(cpu_btarget, dc->jmp_pc); } else { dc->jmp =3D JMP_INDIRECT; - tcg_gen_addi_i32(cpu_btarget, cpu_R[dc->rb], dc->base.pc_next); + tcg_gen_addi_i32(cpu_btarget, cpu_R[dc->rb], add_pc); } tcg_gen_movi_i32(cpu_btaken, 1); } --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891505; cv=none; d=zohomail.com; s=zohoarc; b=g502Pg/Y8QmIcny03Fwy/6PJXKT1PjYMfOd7RYqWZKhJQgI6mh3PBu4EBc8zvMK8rHal9hbl6age6qbjo6oeSmz3sCPntQuCddzEnYSkVQQnv4WhLjF0qWpuxffFb3CO9omZkyLMXO0aLIT4DoWqFgUcTLB/NfUnrN6wDr5fvQU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891505; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=NQ0LfAVoBPployk6kB6YiHjM59FX58JiRnl2u3IyKWs=; b=ht+t0DBZJIRCXGIxzmQbdfZS4wr13JjUkAhgdF19PTZWjsXjiCY1zlfT8nqYh0kY4QaOLwNfo3VU7yAgHZvtYS0MV76XTtQFPZaqL34+0WHpcvkMJZDLV9qR6yk479uZG2wFndSxs/NPzsFRMelcWWREUpPMA/Uitf3eZpQzkZM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891505051244.81741070576288; Mon, 31 Aug 2020 09:31:45 -0700 (PDT) Received: from localhost ([::1]:42266 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmic-0006dB-RS for importer@patchew.org; Mon, 31 Aug 2020 12:31:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34626) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmLG-0006KX-0i for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:34 -0400 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]:39650) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmLE-000697-21 for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:33 -0400 Received: by mail-pf1-x435.google.com with SMTP id u128so810712pfb.6 for ; Mon, 31 Aug 2020 09:07:31 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=NQ0LfAVoBPployk6kB6YiHjM59FX58JiRnl2u3IyKWs=; b=oDqGgh9vT80uBueamEINE2OAUqA5ubG1l+SCohRLS2ghPp0v/b+XjjWbU1WA2di7pA 5N/v+hboVg4O+5+XL2HJPva5d19kBcBI7yVPTAZsi1xlY/I7Jo9xe6jiBU/HazgAnT6y /D84goIVMu9fQfXds9U2mZQQgeGfCvPOsKNL7dK1NXW90rFGD7B90BZOxZyvL3remfyN hXbgktJ71DjROJaLFiQvk02IcGuVWBn4Y7+OCqxd0Asi8OWNoZz9KEhIhqrquBXQl4nc xc/NpzEQqV1Fx+Uh/zJFyr3Bf1Mo/ZIYXj9wd6KIBXwb5mTD3eBnlT1ismJwscc0vd0b r90A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=NQ0LfAVoBPployk6kB6YiHjM59FX58JiRnl2u3IyKWs=; b=H+Kw8EfOEFcGru16MPsLBDfHXYUHR3KYSjrqYS9bQm8vuKXb/KvChzW1/TwDZXfEja eRsxIHy+k0V0rplJVDotRiW6l1uJtc14HVYWYLx8A3ED0K5bHpDXlph7cQ7TkG2uUCzi CsVTSziwSxsJM969hFOYeKh8pzJtmJDYMcRkkIlpDzd6pKYc2zxwrsPfovUBLujh86It 73ldMflS2BFvjy4+p92koGJqjq6qLEFY3ro/qIrTSE9FOa20JCxEnwNgvaRCBdezovwl 2XrYb7W6HyC1Q58Hk7Ly87ozGk2wU1zOrnqFFlZdpaGz8UdYXdz6ATzcpULJrA64h8p9 lGQA== X-Gm-Message-State: AOAM530522UfwFkXAuhD5DtJUsqOlQLg15P81HPMOU5NPuJ3QH47BIX8 w0KcWgeglapAp4HIQ80R3AQoi1vXU+zvmQ== X-Google-Smtp-Source: ABdhPJw7jeS0LnScteXUgxdktdOQOeJwpZU7EriAN+zgmXeB/5TuGIotwq18z0i2QYPR+/G07tqVPA== X-Received: by 2002:a62:1514:: with SMTP id 20mr1854293pfv.62.1598890050337; Mon, 31 Aug 2020 09:07:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 64/76] target/microblaze: Convert mbar to decodetree Date: Mon, 31 Aug 2020 09:05:49 -0700 Message-Id: <20200831160601.833692-65-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::435; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x435.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Split this out of the normal branch instructions, as it requires special handling. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/insns.decode | 2 + target/microblaze/translate.c | 85 +++++++++++++++++++--------------- 2 files changed, 49 insertions(+), 38 deletions(-) diff --git a/target/microblaze/insns.decode b/target/microblaze/insns.decode index 9273a51d20..8eba47d90c 100644 --- a/target/microblaze/insns.decode +++ b/target/microblaze/insns.decode @@ -127,6 +127,8 @@ lwea 110010 ..... ..... ..... 0001 000 0000 = @typea lwx 110010 ..... ..... ..... 1000 000 0000 @typea lwi 111010 ..... ..... ................ @typeb =20 +mbar 101110 imm:5 00010 0000 0000 0000 0100 + mul 010000 ..... ..... ..... 000 0000 0000 @typea mulh 010000 ..... ..... ..... 000 0000 0001 @typea mulhu 010000 ..... ..... ..... 000 0000 0011 @typea diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 1c772b95d9..832cf85c64 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -1127,6 +1127,52 @@ static bool trans_brki(DisasContext *dc, arg_typeb_b= r *arg) return true; } =20 +static bool trans_mbar(DisasContext *dc, arg_mbar *arg) +{ + int mbar_imm =3D arg->imm; + + /* Data access memory barrier. */ + if ((mbar_imm & 2) =3D=3D 0) { + tcg_gen_mb(TCG_BAR_SC | TCG_MO_ALL); + } + + /* Sleep. */ + if (mbar_imm & 16) { + TCGv_i32 tmp_1; + + if (trap_userspace(dc, true)) { + /* Sleep is a privileged instruction. */ + return true; + } + + t_sync_flags(dc); + + tmp_1 =3D tcg_const_i32(1); + tcg_gen_st_i32(tmp_1, cpu_env, + -offsetof(MicroBlazeCPU, env) + +offsetof(CPUState, halted)); + tcg_temp_free_i32(tmp_1); + + tcg_gen_movi_i32(cpu_pc, dc->base.pc_next + 4); + + gen_raise_exception(dc, EXCP_HLT); + } + + /* + * If !(mbar_imm & 1), this is an instruction access memory barrier + * and we need to end the TB so that we recognize self-modified + * code immediately. + * + * However, there are some data mbars that need the TB break + * (and return to main loop) to recognize interrupts right away. + * E.g. recognizing a change to an interrupt controller register. + * + * Therefore, choose to end the TB always. + */ + dc->cpustate_changed =3D 1; + return true; +} + static bool trans_zero(DisasContext *dc, arg_zero *arg) { /* If opcode_0_illegal, trap. */ @@ -1417,50 +1463,13 @@ static void dec_bcc(DisasContext *dc) =20 static void dec_br(DisasContext *dc) { - unsigned int dslot, link, abs, mbar; + unsigned int dslot, link, abs; uint32_t add_pc; =20 dslot =3D dc->ir & (1 << 20); abs =3D dc->ir & (1 << 19); link =3D dc->ir & (1 << 18); =20 - /* Memory barrier. */ - mbar =3D (dc->ir >> 16) & 31; - if (mbar =3D=3D 2 && dc->imm =3D=3D 4) { - uint16_t mbar_imm =3D dc->rd; - - /* Data access memory barrier. */ - if ((mbar_imm & 2) =3D=3D 0) { - tcg_gen_mb(TCG_BAR_SC | TCG_MO_ALL); - } - - /* mbar IMM & 16 decodes to sleep. */ - if (mbar_imm & 16) { - TCGv_i32 tmp_1; - - if (trap_userspace(dc, true)) { - /* Sleep is a privileged instruction. */ - return; - } - - t_sync_flags(dc); - - tmp_1 =3D tcg_const_i32(1); - tcg_gen_st_i32(tmp_1, cpu_env, - -offsetof(MicroBlazeCPU, env) - +offsetof(CPUState, halted)); - tcg_temp_free_i32(tmp_1); - - tcg_gen_movi_i32(cpu_pc, dc->base.pc_next + 4); - - gen_raise_exception(dc, EXCP_HLT); - return; - } - /* Break the TB. */ - dc->cpustate_changed =3D 1; - return; - } - if (dslot) { dec_setup_dslot(dc); } --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891144; cv=none; d=zohomail.com; s=zohoarc; b=LN+7oMFA7PSjfc10KNUIVBlrlF4GEcnLhG5QGC0fN8DlssALHoEpldOt0bqRsQNv1IRb+RRlqizxnd10ZDv5DvfDGEsv+yMddmEyQukynmepp3tqHcDTr044JLvAh+Yorw44LQ+pZcHfYcuxCUAqg7jdWKN5BQ9h65Lre3tNrgc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891144; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=UG3Qh+wDtSGX7ZrIIX3RyslAUMOb2/3zqXzoeybPnTM=; b=ZZWqcAyOFmZznXwJhYqIqQbn2veiLnvmuOXC40+rapAYDqvMdx6CGh6wLemJ/ENKDsRqhPNjVnFrPpRYz7jBPZelWJIrb0DlYgQpZ70uWhHzeDm9Az7HJyg105lzKxzsjpyRHNSxF+nSmLQLqUn5N4b/Gcfb2S8sOcjQTXr0Lwo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891144461310.1898438719088; Mon, 31 Aug 2020 09:25:44 -0700 (PDT) Received: from localhost ([::1]:37866 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmco-0001k9-SD for importer@patchew.org; Mon, 31 Aug 2020 12:25:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34664) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmLH-0006PB-SZ for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:35 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]:40979) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmLF-00069K-ER for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:35 -0400 Received: by mail-pf1-x42f.google.com with SMTP id t9so806446pfq.8 for ; Mon, 31 Aug 2020 09:07:33 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=UG3Qh+wDtSGX7ZrIIX3RyslAUMOb2/3zqXzoeybPnTM=; b=jZTCtZxN8S4h+OpigoO0FZE9Q4aR3SNl9ADcP+j31hAdW6k8BtE9ZbwCi/HL5PfHGo mrJ33YP3bMLIir9WBkfEDJcn5yeeOz9lQr4XT5uHwrheMQUU8mZr0/cZLhzNASwXAPzP AYe9BN+16dXlNkqx1xv16McHGAhb32fpPTSts0I7Iv8JMV/VlCuMRgZHyF2LVN2z51m6 gPmCnZns4BZHn6RoJs+2a+3kCB+qSiYun+OzNwGSyXDIvj0/ND6Zdk6hA5fTuNXDswa0 YGexjh3M9oZmWt7kOlRn1DbiTf7u/SxwhrvBYoaYpBdKIL9eJu63f8xfruxiz0N/EsBu t3NA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=UG3Qh+wDtSGX7ZrIIX3RyslAUMOb2/3zqXzoeybPnTM=; b=dOK8FOZrv9BTsqfGHMWuf+fwqDa4CHdNmQx0HYbEu6eou9GeCwVp1z5T3M4b96s8z5 QDh5ueR5RKWnd9UCmcSxlaTu2Fu+ZH6Hrf4geT6y0MNTTSzTqAKIjxyS1GYNrcroN/+j 2rnIu6IFa6IPsJX+cnaeGvSC3D64bMoz6Xb1e6s0BhcXmuVFs4PNOoZgtwjcsLTqfuJl OA8AzpeWDu3JjHHSHIoy/CPokiyuKTznNnswcEIlyGPDfukZpOZW60SELaXdJeJlqLfn wRIA58ZlGffo9kfSY5paNBty+f/kvkPM3CP1SI9d95e0kxwPsS5h91PMC7a750yiZP/J PS1Q== X-Gm-Message-State: AOAM531N4/jGUtdKDTBIVZt/AhKlVisgaJWI/SDDEBmQFkn8KEo1jXhh SHCQjq5Pc/1zoQzDoYtKwi1MbH5SuDd+bg== X-Google-Smtp-Source: ABdhPJxAlvHmbExye28Ma6hBIYSDabZhx0Ny2RyC8QHGa+7IUo/u84Jf54l7/fM7m+KKlGy0TKcN5w== X-Received: by 2002:a62:8c91:: with SMTP id m139mr1827902pfd.267.1598890051546; Mon, 31 Aug 2020 09:07:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 65/76] target/microblaze: Reorganize branching Date: Mon, 31 Aug 2020 09:05:50 -0700 Message-Id: <20200831160601.833692-66-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42f.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Remove the btaken variable, and simplify things by always computing the full branch destination into btarget. This avoids all need for sync_jmpstate(). Retain the direct branch behaviour by remembering the jump destination in jmp_dest, discarding btarget. In the normal case, where the branch delay slot cannot trap (e.g. arithmetic), tcg will remove the computation into btarget, leaving us with just the tcg direct branching at the end. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/cpu.h | 4 +- target/microblaze/translate.c | 192 ++++++++++++++-------------------- 2 files changed, 79 insertions(+), 117 deletions(-) diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index 1528749a0b..4298f242a6 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -234,8 +234,8 @@ typedef struct CPUMBState CPUMBState; #define TARGET_INSN_START_EXTRA_WORDS 1 =20 struct CPUMBState { - uint32_t btaken; - uint32_t btarget; + uint32_t bvalue; /* TCG temporary, only valid during a TB */ + uint32_t btarget; /* Full resolved branch destination */ =20 uint32_t imm; uint32_t regs[32]; diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 832cf85c64..1545974669 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -45,7 +45,7 @@ static TCGv_i32 cpu_pc; static TCGv_i32 cpu_msr; static TCGv_i32 cpu_msr_c; static TCGv_i32 cpu_imm; -static TCGv_i32 cpu_btaken; +static TCGv_i32 cpu_bvalue; static TCGv_i32 cpu_btarget; static TCGv_i32 cpu_iflags; static TCGv cpu_res_addr; @@ -77,12 +77,11 @@ typedef struct DisasContext { unsigned int tb_flags_to_set; int mem_index; =20 -#define JMP_NOJMP 0 -#define JMP_DIRECT 1 -#define JMP_DIRECT_CC 2 -#define JMP_INDIRECT 3 - unsigned int jmp; - uint32_t jmp_pc; + /* Condition under which to jump, including NEVER and ALWAYS. */ + TCGCond jmp_cond; + + /* Immediate branch-taken destination, or -1 for indirect. */ + uint32_t jmp_dest; =20 int abort_at_next_insn; } DisasContext; @@ -106,17 +105,6 @@ static void t_sync_flags(DisasContext *dc) } } =20 -static inline void sync_jmpstate(DisasContext *dc) -{ - if (dc->jmp =3D=3D JMP_DIRECT || dc->jmp =3D=3D JMP_DIRECT_CC) { - if (dc->jmp =3D=3D JMP_DIRECT) { - tcg_gen_movi_i32(cpu_btaken, 1); - } - dc->jmp =3D JMP_INDIRECT; - tcg_gen_movi_i32(cpu_btarget, dc->jmp_pc); - } -} - static void gen_raise_exception(DisasContext *dc, uint32_t index) { TCGv_i32 tmp =3D tcg_const_i32(index); @@ -782,8 +770,6 @@ static bool do_load(DisasContext *dc, int rd, TCGv addr= , MemOp mop, } } =20 - sync_jmpstate(dc); - if (size > MO_8 && (dc->tb_flags & MSR_EE) && dc->cpu->cfg.unaligned_exceptions) { @@ -885,8 +871,6 @@ static bool trans_lwx(DisasContext *dc, arg_typea *arg) /* lwx does not throw unaligned access errors, so force alignment */ tcg_gen_andi_tl(addr, addr, ~3); =20 - sync_jmpstate(dc); - tcg_gen_qemu_ld_i32(cpu_res_val, addr, dc->mem_index, MO_TEUL); tcg_gen_mov_tl(cpu_res_addr, addr); tcg_temp_free(addr); @@ -920,8 +904,6 @@ static bool do_store(DisasContext *dc, int rd, TCGv add= r, MemOp mop, } } =20 - sync_jmpstate(dc); - if (size > MO_8 && (dc->tb_flags & MSR_EE) && dc->cpu->cfg.unaligned_exceptions) { @@ -1023,8 +1005,6 @@ static bool trans_swx(DisasContext *dc, arg_typea *ar= g) TCGLabel *swx_fail =3D gen_new_label(); TCGv_i32 tval; =20 - sync_jmpstate(dc); - /* swx does not throw unaligned access errors, so force alignment */ tcg_gen_andi_tl(addr, addr, ~3); =20 @@ -1392,44 +1372,6 @@ static void dec_msr(DisasContext *dc) } } =20 -static inline void eval_cc(DisasContext *dc, unsigned int cc, - TCGv_i32 d, TCGv_i32 a) -{ - static const int mb_to_tcg_cc[] =3D { - [CC_EQ] =3D TCG_COND_EQ, - [CC_NE] =3D TCG_COND_NE, - [CC_LT] =3D TCG_COND_LT, - [CC_LE] =3D TCG_COND_LE, - [CC_GE] =3D TCG_COND_GE, - [CC_GT] =3D TCG_COND_GT, - }; - - switch (cc) { - case CC_EQ: - case CC_NE: - case CC_LT: - case CC_LE: - case CC_GE: - case CC_GT: - tcg_gen_setcondi_i32(mb_to_tcg_cc[cc], d, a, 0); - break; - default: - cpu_abort(CPU(dc->cpu), "Unknown condition code %x.\n", cc); - break; - } -} - -static void eval_cond_jmp(DisasContext *dc, TCGv_i32 pc_true, TCGv_i32 pc_= false) -{ - TCGv_i32 zero =3D tcg_const_i32(0); - - tcg_gen_movcond_i32(TCG_COND_NE, cpu_pc, - cpu_btaken, zero, - pc_true, pc_false); - - tcg_temp_free_i32(zero); -} - static void dec_setup_dslot(DisasContext *dc) { dc->tb_flags_to_set |=3D D_FLAG; @@ -1440,8 +1382,17 @@ static void dec_setup_dslot(DisasContext *dc) =20 static void dec_bcc(DisasContext *dc) { + static const TCGCond mb_to_tcg_cc[] =3D { + [CC_EQ] =3D TCG_COND_EQ, + [CC_NE] =3D TCG_COND_NE, + [CC_LT] =3D TCG_COND_LT, + [CC_LE] =3D TCG_COND_LE, + [CC_GE] =3D TCG_COND_GE, + [CC_GT] =3D TCG_COND_GT, + }; unsigned int cc; unsigned int dslot; + TCGv_i32 zero, next; =20 cc =3D EXTRACT_FIELD(dc->ir, 21, 23); dslot =3D dc->ir & (1 << 25); @@ -1450,15 +1401,29 @@ static void dec_bcc(DisasContext *dc) dec_setup_dslot(dc); } =20 + dc->jmp_cond =3D mb_to_tcg_cc[cc]; + + /* Cache the condition register in cpu_bvalue across any delay slot. = */ + tcg_gen_mov_i32(cpu_bvalue, cpu_R[dc->ra]); + + /* Store the branch taken destination into btarget. */ if (dc->type_b) { - dc->jmp =3D JMP_DIRECT_CC; - dc->jmp_pc =3D dc->base.pc_next + dec_alu_typeb_imm(dc); - tcg_gen_movi_i32(cpu_btarget, dc->jmp_pc); + dc->jmp_dest =3D dc->base.pc_next + dec_alu_typeb_imm(dc); + tcg_gen_movi_i32(cpu_btarget, dc->jmp_dest); } else { - dc->jmp =3D JMP_INDIRECT; - tcg_gen_addi_i32(cpu_btarget, cpu_R[dc->rb], dc->base.pc_next); + dc->jmp_dest =3D -1; + tcg_gen_addi_i32(cpu_btarget, reg_for_read(dc, dc->rb), + dc->base.pc_next); } - eval_cc(dc, cc, cpu_btaken, cpu_R[dc->ra]); + + /* Compute the final destination into btarget. */ + zero =3D tcg_const_i32(0); + next =3D tcg_const_i32(dc->base.pc_next + (dslot + 1) * 4); + tcg_gen_movcond_i32(dc->jmp_cond, cpu_btarget, + reg_for_read(dc, dc->ra), zero, + cpu_btarget, next); + tcg_temp_free_i32(zero); + tcg_temp_free_i32(next); } =20 static void dec_br(DisasContext *dc) @@ -1479,14 +1444,13 @@ static void dec_br(DisasContext *dc) =20 add_pc =3D abs ? 0 : dc->base.pc_next; if (dc->type_b) { - dc->jmp =3D JMP_DIRECT; - dc->jmp_pc =3D add_pc + dec_alu_typeb_imm(dc); - tcg_gen_movi_i32(cpu_btarget, dc->jmp_pc); + dc->jmp_dest =3D add_pc + dec_alu_typeb_imm(dc); + tcg_gen_movi_i32(cpu_btarget, dc->jmp_dest); } else { - dc->jmp =3D JMP_INDIRECT; + dc->jmp_dest =3D -1; tcg_gen_addi_i32(cpu_btarget, cpu_R[dc->rb], add_pc); } - tcg_gen_movi_i32(cpu_btaken, 1); + dc->jmp_cond =3D TCG_COND_ALWAYS; } =20 static inline void do_rti(DisasContext *dc) @@ -1567,8 +1531,8 @@ static void dec_rts(DisasContext *dc) dc->tb_flags |=3D DRTE_FLAG; } =20 - dc->jmp =3D JMP_INDIRECT; - tcg_gen_movi_i32(cpu_btaken, 1); + dc->jmp_cond =3D TCG_COND_ALWAYS; + dc->jmp_dest =3D -1; tcg_gen_add_i32(cpu_btarget, cpu_R[dc->ra], *dec_alu_op_b(dc)); } =20 @@ -1659,13 +1623,14 @@ static void mb_tr_init_disas_context(DisasContextBa= se *dcb, CPUState *cs) =20 dc->cpu =3D cpu; dc->tb_flags =3D dc->base.tb->flags; - dc->jmp =3D dc->tb_flags & D_FLAG ? JMP_INDIRECT : JMP_NOJMP; dc->cpustate_changed =3D 0; dc->abort_at_next_insn =3D 0; dc->ext_imm =3D dc->base.tb->cs_base; dc->r0 =3D NULL; dc->r0_set =3D false; dc->mem_index =3D cpu_mmu_index(&cpu->env, false); + dc->jmp_cond =3D dc->tb_flags & D_FLAG ? TCG_COND_ALWAYS : TCG_COND_NE= VER; + dc->jmp_dest =3D -1; =20 bound =3D -(dc->base.pc_first | TARGET_PAGE_MASK) / 4; dc->base.max_insns =3D MIN(dc->base.max_insns, bound); @@ -1734,14 +1699,12 @@ static void mb_tr_translate_insn(DisasContextBase *= dcb, CPUState *cs) dc->tb_flags |=3D dc->tb_flags_to_set; dc->base.pc_next +=3D 4; =20 - if (dc->jmp !=3D JMP_NOJMP && !(dc->tb_flags & D_FLAG)) { + if (dc->jmp_cond !=3D TCG_COND_NEVER && !(dc->tb_flags & D_FLAG)) { if (dc->tb_flags & DRTI_FLAG) { do_rti(dc); - } - if (dc->tb_flags & DRTB_FLAG) { + } else if (dc->tb_flags & DRTB_FLAG) { do_rtb(dc); - } - if (dc->tb_flags & DRTE_FLAG) { + } else if (dc->tb_flags & DRTE_FLAG) { do_rte(dc); } dc->base.is_jmp =3D DISAS_JUMP; @@ -1766,19 +1729,13 @@ static void mb_tr_tb_stop(DisasContextBase *dcb, CP= UState *cs) } =20 t_sync_flags(dc); - if (dc->tb_flags & D_FLAG) { - sync_jmpstate(dc); - dc->jmp =3D JMP_NOJMP; - } =20 switch (dc->base.is_jmp) { case DISAS_TOO_MANY: - assert(dc->jmp =3D=3D JMP_NOJMP); gen_goto_tb(dc, 0, dc->base.pc_next); return; =20 case DISAS_UPDATE: - assert(dc->jmp =3D=3D JMP_NOJMP); if (unlikely(cs->singlestep_enabled)) { gen_raise_exception(dc, EXCP_DEBUG); } else { @@ -1787,35 +1744,41 @@ static void mb_tr_tb_stop(DisasContextBase *dcb, CP= UState *cs) return; =20 case DISAS_JUMP: - switch (dc->jmp) { - case JMP_INDIRECT: - { - TCGv_i32 tmp_pc =3D tcg_const_i32(dc->base.pc_next); - eval_cond_jmp(dc, cpu_btarget, tmp_pc); - tcg_temp_free_i32(tmp_pc); + if (dc->jmp_dest !=3D -1 && !cs->singlestep_enabled) { + /* Direct jump. */ + tcg_gen_discard_i32(cpu_btarget); =20 - if (unlikely(cs->singlestep_enabled)) { - gen_raise_exception(dc, EXCP_DEBUG); - } else { - tcg_gen_exit_tb(NULL, 0); - } - } - return; + if (dc->jmp_cond !=3D TCG_COND_ALWAYS) { + /* Conditional direct jump. */ + TCGLabel *taken =3D gen_new_label(); + TCGv_i32 tmp =3D tcg_temp_new_i32(); =20 - case JMP_DIRECT_CC: - { - TCGLabel *l1 =3D gen_new_label(); - tcg_gen_brcondi_i32(TCG_COND_NE, cpu_btaken, 0, l1); + /* + * Copy bvalue to a temp now, so we can discard bvalue. + * This can avoid writing bvalue to memory when the + * delay slot cannot raise an exception. + */ + tcg_gen_mov_i32(tmp, cpu_bvalue); + tcg_gen_discard_i32(cpu_bvalue); + + tcg_gen_brcondi_i32(dc->jmp_cond, tmp, 0, taken); gen_goto_tb(dc, 1, dc->base.pc_next); - gen_set_label(l1); + gen_set_label(taken); } - /* fall through */ - - case JMP_DIRECT: - gen_goto_tb(dc, 0, dc->jmp_pc); + gen_goto_tb(dc, 0, dc->jmp_dest); return; } - /* fall through */ + + /* Indirect jump (or direct jump w/ singlestep) */ + tcg_gen_mov_i32(cpu_pc, cpu_btarget); + tcg_gen_discard_i32(cpu_btarget); + + if (unlikely(cs->singlestep_enabled)) { + gen_raise_exception(dc, EXCP_DEBUG); + } else { + tcg_gen_exit_tb(NULL, 0); + } + return; =20 default: g_assert_not_reached(); @@ -1867,8 +1830,7 @@ void mb_cpu_dump_state(CPUState *cs, FILE *f, int fla= gs) qemu_fprintf(f, " BIMM"); } if (iflags & D_FLAG) { - qemu_fprintf(f, " D(btaken=3D%d btarget=3D0x%08x)", - env->btaken, env->btarget); + qemu_fprintf(f, " D(btarget=3D0x%08x)", env->btarget); } if (iflags & DRTI_FLAG) { qemu_fprintf(f, " DRTI"); @@ -1918,7 +1880,7 @@ void mb_tcg_init(void) SP(msr_c), SP(imm), SP(iflags), - SP(btaken), + SP(bvalue), SP(btarget), SP(res_val), }; --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598892057; cv=none; d=zohomail.com; s=zohoarc; b=bpOtU4jaix2AYKZEXG3bFCEORKNVHnolRngtOSbZMjWe8qSHoWqXSw0ZcBzh5db1WV1Yv5K3T7HpF7Srcaz/k6P/ZaYGZDfSuOF0+nYMrLofiFH0sx6zrUKdpeUPWUUAFjMdiN+Rv+uCT1TF/xdpaxzFilbHfKlSWDSCOmIwiAc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598892057; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=lNxGpdpg2KpPZCNJVqLbHwhbAMKlczMopXQuhke8q/4=; b=DXGQt/sncNSYX3PVK3kG0SmEtaOFOQL46xgyff8dYfbRkIeCeuUHW/mNJGhVylbDwiKsXlskCZoeywYf9TBhkpNK7JnlOgjFKH0zJJ8ZhXEvpXx99m+/MNjGkx8A8ktNQu8rXz+ONsOb69LTH5oQ7m17VkhL9jzEcKT8ibIXWno= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598892057518307.26649473473424; Mon, 31 Aug 2020 09:40:57 -0700 (PDT) Received: from localhost ([::1]:55458 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmrY-0006zz-Dt for importer@patchew.org; Mon, 31 Aug 2020 12:40:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34674) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmLI-0006RV-Ka for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:36 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]:38711) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmLG-00069X-LH for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:36 -0400 Received: by mail-pl1-x630.google.com with SMTP id t11so3247449plr.5 for ; Mon, 31 Aug 2020 09:07:34 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=lNxGpdpg2KpPZCNJVqLbHwhbAMKlczMopXQuhke8q/4=; b=dxv8LcVEWwecfxRCJfvYmEHbdR71XjfbkYnOaLcI2P2GROmTGYv/4RU8hSAkwN1za9 orqpUjU/eiBn4m70A8lgSiFQaLdQ7twDSBxY5GtbnKMPdAwWr13/N091aKoAyK/jFKLB jZSHUwJe3KSEbAKTsNRyvKJzmjpaRtalO/o+AqnlSn9JyTWku0H3xd/o9NFN0T/GOrOq wV+scaKle3dIJhoD2lRA19tuxHv5eMebs551joBfW1H23nvlIw/3/qkQr0Mltwr+hhSj lgZw2EQ6IP1S5f34VEjq9hwod6y2Y8eTSv7uMafkwuB0QiffTlv+yZETAiPkiZ8W/2as gpjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=lNxGpdpg2KpPZCNJVqLbHwhbAMKlczMopXQuhke8q/4=; b=m3cHGt+1gjsxLTm0aIKu62pmYqBCkgEKt448FaNxiQKLTm/o3q5eQk9WDoSgxsb3cQ TjOk/PpneUDj0vclA+kAslJhFO0zLyWYfESRk2Uu5qF+UmreMkcAAovNY4va6Fis+W25 a0pRF7x/RFZHPJn0gvipy0H7vrGhLHYkjL6vPvmV3JefSNHRpNr/rHWsetJ4tRyY/1D5 /KTnfw1QYvHNgQeV7EGe28vw1hMptUFWYtLUSs4Xi5xCRVQSZ5wIBXZ2bI3qogs66Ayt A6o9PUZZSFMzlT1yOgyTD/miwIGc8BobyjsNQxKq4mEfXY/xKyRjM721hLMdbFZkmIvb unNg== X-Gm-Message-State: AOAM53282YmVMLKG1Zj6hYOjS2TH2hVQc1jSuGmJv0dAZBchGu9x4SYw 2CrtbwKkZMWfxz5Dy2UdgLy0RDsdQ3z1Uw== X-Google-Smtp-Source: ABdhPJxnUCbLswOYIbkCuNq9S1bDfLLgL0Uy76nJ+WsFrfql21DQqM8KJ93WpnRDlCRFbmR5w1/dPA== X-Received: by 2002:a17:90b:4d06:: with SMTP id mw6mr87594pjb.226.1598890052859; Mon, 31 Aug 2020 09:07:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 66/76] target/microblaze: Convert dec_br to decodetree Date: Mon, 31 Aug 2020 09:05:51 -0700 Message-Id: <20200831160601.833692-67-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/insns.decode | 14 ++++++ target/microblaze/translate.c | 87 +++++++++++++++++++--------------- 2 files changed, 63 insertions(+), 38 deletions(-) diff --git a/target/microblaze/insns.decode b/target/microblaze/insns.decode index 8eba47d90c..340dd999b6 100644 --- a/target/microblaze/insns.decode +++ b/target/microblaze/insns.decode @@ -68,6 +68,20 @@ andi 101001 ..... ..... ................ = @typeb andn 100011 ..... ..... ..... 000 0000 0000 @typea andni 101011 ..... ..... ................ @typeb =20 +br 100110 ..... 00000 ..... 000 0000 0000 @typea_br +bra 100110 ..... 01000 ..... 000 0000 0000 @typea_br +brd 100110 ..... 10000 ..... 000 0000 0000 @typea_br +brad 100110 ..... 11000 ..... 000 0000 0000 @typea_br +brld 100110 ..... 10100 ..... 000 0000 0000 @typea_br +brald 100110 ..... 11100 ..... 000 0000 0000 @typea_br + +bri 101110 ..... 00000 ................ @typeb_br +brai 101110 ..... 01000 ................ @typeb_br +brid 101110 ..... 10000 ................ @typeb_br +braid 101110 ..... 11000 ................ @typeb_br +brlid 101110 ..... 10100 ................ @typeb_br +bralid 101110 ..... 11100 ................ @typeb_br + brk 100110 ..... 01100 ..... 000 0000 0000 @typea_br brki 101110 ..... 01100 ................ @typeb_br =20 diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 1545974669..5c6e6e599e 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -1048,6 +1048,53 @@ static bool trans_swx(DisasContext *dc, arg_typea *a= rg) return true; } =20 +static void setup_dslot(DisasContext *dc, bool type_b) +{ + dc->tb_flags_to_set |=3D D_FLAG; + if (type_b && (dc->tb_flags & IMM_FLAG)) { + dc->tb_flags_to_set |=3D BIMM_FLAG; + } +} + +static bool do_branch(DisasContext *dc, int dest_rb, int dest_imm, + bool delay, bool abs, int link) +{ + uint32_t add_pc; + + if (delay) { + setup_dslot(dc, dest_rb < 0); + } + + if (link) { + tcg_gen_movi_i32(cpu_R[link], dc->base.pc_next); + } + + /* Store the branch taken destination into btarget. */ + add_pc =3D abs ? 0 : dc->base.pc_next; + if (dest_rb > 0) { + dc->jmp_dest =3D -1; + tcg_gen_addi_i32(cpu_btarget, cpu_R[dest_rb], add_pc); + } else { + dc->jmp_dest =3D add_pc + dest_imm; + tcg_gen_movi_i32(cpu_btarget, dc->jmp_dest); + } + dc->jmp_cond =3D TCG_COND_ALWAYS; + return true; +} + +#define DO_BR(NAME, NAMEI, DELAY, ABS, LINK) = \ + static bool trans_##NAME(DisasContext *dc, arg_typea_br *arg) = \ + { return do_branch(dc, arg->rb, 0, DELAY, ABS, LINK ? arg->rd : 0); } = \ + static bool trans_##NAMEI(DisasContext *dc, arg_typeb_br *arg) = \ + { return do_branch(dc, -1, arg->imm, DELAY, ABS, LINK ? arg->rd : 0); } + +DO_BR(br, bri, false, false, false) +DO_BR(bra, brai, false, true, false) +DO_BR(brd, brid, true, false, false) +DO_BR(brad, braid, true, true, false) +DO_BR(brld, brlid, true, false, true) +DO_BR(brald, bralid, true, true, true) + static bool trans_brk(DisasContext *dc, arg_typea_br *arg) { if (trap_userspace(dc, true)) { @@ -1372,14 +1419,6 @@ static void dec_msr(DisasContext *dc) } } =20 -static void dec_setup_dslot(DisasContext *dc) -{ - dc->tb_flags_to_set |=3D D_FLAG; - if (dc->type_b && (dc->tb_flags & IMM_FLAG)) { - dc->tb_flags_to_set |=3D BIMM_FLAG; - } -} - static void dec_bcc(DisasContext *dc) { static const TCGCond mb_to_tcg_cc[] =3D { @@ -1398,7 +1437,7 @@ static void dec_bcc(DisasContext *dc) dslot =3D dc->ir & (1 << 25); =20 if (dslot) { - dec_setup_dslot(dc); + setup_dslot(dc, dc->type_b); } =20 dc->jmp_cond =3D mb_to_tcg_cc[cc]; @@ -1426,33 +1465,6 @@ static void dec_bcc(DisasContext *dc) tcg_temp_free_i32(next); } =20 -static void dec_br(DisasContext *dc) -{ - unsigned int dslot, link, abs; - uint32_t add_pc; - - dslot =3D dc->ir & (1 << 20); - abs =3D dc->ir & (1 << 19); - link =3D dc->ir & (1 << 18); - - if (dslot) { - dec_setup_dslot(dc); - } - if (link && dc->rd) { - tcg_gen_movi_i32(cpu_R[dc->rd], dc->base.pc_next); - } - - add_pc =3D abs ? 0 : dc->base.pc_next; - if (dc->type_b) { - dc->jmp_dest =3D add_pc + dec_alu_typeb_imm(dc); - tcg_gen_movi_i32(cpu_btarget, dc->jmp_dest); - } else { - dc->jmp_dest =3D -1; - tcg_gen_addi_i32(cpu_btarget, cpu_R[dc->rb], add_pc); - } - dc->jmp_cond =3D TCG_COND_ALWAYS; -} - static inline void do_rti(DisasContext *dc) { TCGv_i32 t0, t1; @@ -1521,7 +1533,7 @@ static void dec_rts(DisasContext *dc) return; } =20 - dec_setup_dslot(dc); + setup_dslot(dc, true); =20 if (i_bit) { dc->tb_flags |=3D DRTI_FLAG; @@ -1583,7 +1595,6 @@ static struct decoder_info { }; void (*dec)(DisasContext *dc); } decinfo[] =3D { - {DEC_BR, dec_br}, {DEC_BCC, dec_bcc}, {DEC_RTS, dec_rts}, {DEC_MSR, dec_msr}, --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891601; cv=none; d=zohomail.com; s=zohoarc; b=PiTzoz1S3hXnj3FUDl3Co6aBJQTfdafPeLCpN5ZdhphuDgCd42qunN7Y4Hz3KtabLfZ8nawrbMNeNu96Sv3yqPraqBl+tmwyR3jOSdVVbprokZdev7XSkc/fyrlYXkdE+TGlyAHfmTbE+Sjtp4W0RSsVsBwlLyeonMZh/Vs6E6E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891601; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=epqagA1a4qbo45d4ja0WxukrU+YThDkatfUkMkTy2Oo=; b=O0+8DxIwOqL7V9Gfo7Szt7wfDO6NVqxKbnHp9fWg1o8VUpAc0Y+WLXkKtn0S99ZriC3JaDkushwz72ajRvw5gC/CpoQcuCybaVzOHkH/vWXIaaDWywaoof8VuipJsnR4JR1yaEolRXe/Idlg9vMzInVrripzDsy+Mxj3eUkn/TI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891601061636.5081288705645; Mon, 31 Aug 2020 09:33:21 -0700 (PDT) Received: from localhost ([::1]:49152 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmkC-00012b-7N for importer@patchew.org; Mon, 31 Aug 2020 12:33:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34702) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmLK-0006Ve-5t for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:38 -0400 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]:40185) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmLI-00069r-0q for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:37 -0400 Received: by mail-pj1-x102e.google.com with SMTP id kx11so20047pjb.5 for ; Mon, 31 Aug 2020 09:07:35 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=epqagA1a4qbo45d4ja0WxukrU+YThDkatfUkMkTy2Oo=; b=izTxemHHBwhnzxctG4lFiuOPmHxfg27hR0T0wv6J+HmYHxwwfVqmwjsayawUlz2rsg ETSji2LvSlUdrMX9UXLwBmpBKKs64E5aQ/owe4a/xsXzaeGSXNhBTpPMsYHf7iLq/aVr CFYZow6uHNps0PPL3gUGMcF/tQ+oL9wSBdt07ruxc8dxKMkOAXQR/+CUst+5C11C1Zc0 qeP6kaz7XeFE+Rh0YCDgkSiZcF3fPs2QPqY8FJ2KPmOGG78DNqa1jGA20B+eEWZhJdED tEZt4O2mHoVU5tUsXjG4w0AP1OdcoQo0elmUERZ36ehw/UI6MoQG5eTQINe7RkVxefHH OD0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=epqagA1a4qbo45d4ja0WxukrU+YThDkatfUkMkTy2Oo=; b=D4lmBcty/CkT2tYiksGDQ1pjWAJndxXtZ0lg/WJTTj4nylfR8AKn64Me5KNJenMJem kQWuRTTE++cyMeN4gg+n6nyw6dW5wOzhvgUgN9m5RBUTxr2B/jL01SLo5i9cpGRSFXy2 va6geQGoron12VDVAGZjZtK05VwzHAdluRYus5d02HnB32HxOeQY+1N76zWrbHrr/vVO Trm00NmHjxwWgicuy+Qr9JBTh2qgdME4l0+tUM6VUAyqyoF0X03aSmqLV3xQv0ETlj8v Uf0Ag1MqKvAWouk6hE5mKR/1iHMDomPZ9SDvKoTdjSpW5gVbgmi7N/OVipHN+nwgJ46x 6rLQ== X-Gm-Message-State: AOAM533GerfUYo2lCK0Lz4vMYGidjXTFxkkXFIdKK1RgtkVpgoFdI6x2 0tv9yFcu5L9erlfNmDmPvhjZYocCxFSVow== X-Google-Smtp-Source: ABdhPJxajyekXXbz1WM258+PD+DOCBPQud/0O/eWj7mKm+5exgrHNktg0Y4WBK42BoGQDYGB1Dz/1g== X-Received: by 2002:a17:90a:3948:: with SMTP id n8mr99964pjf.156.1598890054107; Mon, 31 Aug 2020 09:07:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 67/76] target/microblaze: Convert dec_bcc to decodetree Date: Mon, 31 Aug 2020 09:05:52 -0700 Message-Id: <20200831160601.833692-68-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102e; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102e.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/insns.decode | 36 +++++++++++++ target/microblaze/translate.c | 99 ++++++++++++++++++---------------- 2 files changed, 88 insertions(+), 47 deletions(-) diff --git a/target/microblaze/insns.decode b/target/microblaze/insns.decode index 340dd999b6..e6a61f147a 100644 --- a/target/microblaze/insns.decode +++ b/target/microblaze/insns.decode @@ -20,8 +20,10 @@ &typea0 rd ra &typea rd ra rb &typea_br rd rb +&typea_bc ra rb &typeb rd ra imm &typeb_br rd imm +&typeb_bc ra imm =20 # Include any IMM prefix in the value reported. %extimm 0:s16 !function=3Dtypeb_imm @@ -35,12 +37,18 @@ # Officially typea, but with ra as opcode. @typea_br ...... rd:5 ..... rb:5 ........... &typea_br =20 +# Officially typea, but with rd as opcode. +@typea_bc ...... ..... ra:5 rb:5 ........... &typea_bc + # Officially typeb, but any immediate extension is unused. @typeb_bs ...... rd:5 ra:5 ..... ...... imm:5 &typeb =20 # Officially typeb, but with ra as opcode. @typeb_br ...... rd:5 ..... ................ &typeb_br imm=3D%e= xtimm =20 +# Officially typeb, but with rd as opcode. +@typeb_bc ...... ..... ra:5 ................ &typeb_bc imm=3D%e= xtimm + # For convenience, extract the two imm_w/imm_s fields, then pack # them back together as "imm". Doing this makes it easiest to # match the required zero at bit 5. @@ -68,6 +76,34 @@ andi 101001 ..... ..... ................ = @typeb andn 100011 ..... ..... ..... 000 0000 0000 @typea andni 101011 ..... ..... ................ @typeb =20 +beq 100111 00000 ..... ..... 000 0000 0000 @typea_bc +bge 100111 00101 ..... ..... 000 0000 0000 @typea_bc +bgt 100111 00100 ..... ..... 000 0000 0000 @typea_bc +ble 100111 00011 ..... ..... 000 0000 0000 @typea_bc +blt 100111 00010 ..... ..... 000 0000 0000 @typea_bc +bne 100111 00001 ..... ..... 000 0000 0000 @typea_bc + +beqd 100111 10000 ..... ..... 000 0000 0000 @typea_bc +bged 100111 10101 ..... ..... 000 0000 0000 @typea_bc +bgtd 100111 10100 ..... ..... 000 0000 0000 @typea_bc +bled 100111 10011 ..... ..... 000 0000 0000 @typea_bc +bltd 100111 10010 ..... ..... 000 0000 0000 @typea_bc +bned 100111 10001 ..... ..... 000 0000 0000 @typea_bc + +beqi 101111 00000 ..... ................ @typeb_bc +bgei 101111 00101 ..... ................ @typeb_bc +bgti 101111 00100 ..... ................ @typeb_bc +blei 101111 00011 ..... ................ @typeb_bc +blti 101111 00010 ..... ................ @typeb_bc +bnei 101111 00001 ..... ................ @typeb_bc + +beqid 101111 10000 ..... ................ @typeb_bc +bgeid 101111 10101 ..... ................ @typeb_bc +bgtid 101111 10100 ..... ................ @typeb_bc +bleid 101111 10011 ..... ................ @typeb_bc +bltid 101111 10010 ..... ................ @typeb_bc +bneid 101111 10001 ..... ................ @typeb_bc + br 100110 ..... 00000 ..... 000 0000 0000 @typea_br bra 100110 ..... 01000 ..... 000 0000 0000 @typea_br brd 100110 ..... 10000 ..... 000 0000 0000 @typea_br diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 5c6e6e599e..b8dcef8f1c 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -1095,6 +1095,58 @@ DO_BR(brad, braid, true, true, false) DO_BR(brld, brlid, true, false, true) DO_BR(brald, bralid, true, true, true) =20 +static bool do_bcc(DisasContext *dc, int dest_rb, int dest_imm, + TCGCond cond, int ra, bool delay) +{ + TCGv_i32 zero, next; + + if (delay) { + setup_dslot(dc, dest_rb < 0); + } + + dc->jmp_cond =3D cond; + + /* Cache the condition register in cpu_bvalue across any delay slot. = */ + tcg_gen_mov_i32(cpu_bvalue, reg_for_read(dc, ra)); + + /* Store the branch taken destination into btarget. */ + if (dest_rb > 0) { + dc->jmp_dest =3D -1; + tcg_gen_addi_i32(cpu_btarget, cpu_R[dest_rb], dc->base.pc_next); + } else { + dc->jmp_dest =3D dc->base.pc_next + dest_imm; + tcg_gen_movi_i32(cpu_btarget, dc->jmp_dest); + } + + /* Compute the final destination into btarget. */ + zero =3D tcg_const_i32(0); + next =3D tcg_const_i32(dc->base.pc_next + (delay + 1) * 4); + tcg_gen_movcond_i32(dc->jmp_cond, cpu_btarget, + reg_for_read(dc, ra), zero, + cpu_btarget, next); + tcg_temp_free_i32(zero); + tcg_temp_free_i32(next); + + return true; +} + +#define DO_BCC(NAME, COND) \ + static bool trans_##NAME(DisasContext *dc, arg_typea_bc *arg) \ + { return do_bcc(dc, arg->rb, 0, COND, arg->ra, false); } \ + static bool trans_##NAME##d(DisasContext *dc, arg_typea_bc *arg) \ + { return do_bcc(dc, arg->rb, 0, COND, arg->ra, true); } \ + static bool trans_##NAME##i(DisasContext *dc, arg_typeb_bc *arg) \ + { return do_bcc(dc, -1, arg->imm, COND, arg->ra, false); } \ + static bool trans_##NAME##id(DisasContext *dc, arg_typeb_bc *arg) \ + { return do_bcc(dc, -1, arg->imm, COND, arg->ra, true); } + +DO_BCC(beq, TCG_COND_EQ) +DO_BCC(bge, TCG_COND_GE) +DO_BCC(bgt, TCG_COND_GT) +DO_BCC(ble, TCG_COND_LE) +DO_BCC(blt, TCG_COND_LT) +DO_BCC(bne, TCG_COND_NE) + static bool trans_brk(DisasContext *dc, arg_typea_br *arg) { if (trap_userspace(dc, true)) { @@ -1419,52 +1471,6 @@ static void dec_msr(DisasContext *dc) } } =20 -static void dec_bcc(DisasContext *dc) -{ - static const TCGCond mb_to_tcg_cc[] =3D { - [CC_EQ] =3D TCG_COND_EQ, - [CC_NE] =3D TCG_COND_NE, - [CC_LT] =3D TCG_COND_LT, - [CC_LE] =3D TCG_COND_LE, - [CC_GE] =3D TCG_COND_GE, - [CC_GT] =3D TCG_COND_GT, - }; - unsigned int cc; - unsigned int dslot; - TCGv_i32 zero, next; - - cc =3D EXTRACT_FIELD(dc->ir, 21, 23); - dslot =3D dc->ir & (1 << 25); - - if (dslot) { - setup_dslot(dc, dc->type_b); - } - - dc->jmp_cond =3D mb_to_tcg_cc[cc]; - - /* Cache the condition register in cpu_bvalue across any delay slot. = */ - tcg_gen_mov_i32(cpu_bvalue, cpu_R[dc->ra]); - - /* Store the branch taken destination into btarget. */ - if (dc->type_b) { - dc->jmp_dest =3D dc->base.pc_next + dec_alu_typeb_imm(dc); - tcg_gen_movi_i32(cpu_btarget, dc->jmp_dest); - } else { - dc->jmp_dest =3D -1; - tcg_gen_addi_i32(cpu_btarget, reg_for_read(dc, dc->rb), - dc->base.pc_next); - } - - /* Compute the final destination into btarget. */ - zero =3D tcg_const_i32(0); - next =3D tcg_const_i32(dc->base.pc_next + (dslot + 1) * 4); - tcg_gen_movcond_i32(dc->jmp_cond, cpu_btarget, - reg_for_read(dc, dc->ra), zero, - cpu_btarget, next); - tcg_temp_free_i32(zero); - tcg_temp_free_i32(next); -} - static inline void do_rti(DisasContext *dc) { TCGv_i32 t0, t1; @@ -1595,7 +1601,6 @@ static struct decoder_info { }; void (*dec)(DisasContext *dc); } decinfo[] =3D { - {DEC_BCC, dec_bcc}, {DEC_RTS, dec_rts}, {DEC_MSR, dec_msr}, {DEC_STREAM, dec_stream}, --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891646; cv=none; d=zohomail.com; s=zohoarc; b=XftPNSLyeVpHSSq0B41IsFvU9o4vWYQnMYAj8M+ag6bF4udnZWkv1F1KJGGldVJPm64n/dF0LXPNxdHnX/zWK4Rvsp0nrXwmFxjNgGZPLex9kP3weJ/n+RHjzbfy/GY9S0JSmnZEpZEoPxPiwNDGRS5L2hVGuDjxG2ueCvtvhgs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891646; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=EW6QXoswK1mjFJ4YzGZRvNX8K3Up1egTxlK+WSpOGc8=; b=bp2GwgtUdHXwHa8AbRjcQsKL/VzGzzaOcYpGtVqocpvBUXOlBBmaa5om15lWDtNvKpzOKkXcnGuiuVMux9PVwuL5NuYOzwv1MZqqk42HDAabfJWmxczhrTxp/Q9icdefJ1kKni5py5tXuBeKWldT0GNf1NfBzTr/MgS4P9v7PGw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891646654811.8063680959458; Mon, 31 Aug 2020 09:34:06 -0700 (PDT) Received: from localhost ([::1]:53078 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmkv-0002bI-T6 for importer@patchew.org; Mon, 31 Aug 2020 12:34:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34726) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmLL-0006YW-6e for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:39 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]:37066) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmLJ-0006A7-Ag for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:38 -0400 Received: by mail-pl1-x633.google.com with SMTP id c15so3249219plq.4 for ; Mon, 31 Aug 2020 09:07:36 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=EW6QXoswK1mjFJ4YzGZRvNX8K3Up1egTxlK+WSpOGc8=; b=uTe0i+4QE+wNYDNwd8a4OJHnZhE9zGm7kovUhOCEwL59ffjPLcuqLYMJZhH32ZOF3x 5r70z+njDgkknESnkj5NXk9FFkHHgr01ObxBLsAyTjqVDBv0FcQtUTU7fFmjSKHnqSRv bEVwvF38icp2J9J1WwMELsnvJqImaW1ZoHOWlNpmhXseC420GIKaXuTMh3WLzuFgpwNS fiQA+aM1xbDqA1AIevilz6GRQ3Vseq60erB6z5/+yxDgZVDEGk1ETgRKjWbrKFAs+Ud+ Us/WmS9Vwsdfuk8H0/D6wg+dCNLSftJsDLxTjwy6tsGXsZRn9PfghC6XBjTGI8IJCfvK A85w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=EW6QXoswK1mjFJ4YzGZRvNX8K3Up1egTxlK+WSpOGc8=; b=tLg2MWUCuwlHeAuUmA56MPlSrwfNOLjgQgLQeOY+0BLa8GehBl+cvO6LiRE/AAUilc nj/1CFGjF/TJOmLsnPbI6MBXhCvNrsdl4YkccgOCX3HcZ/neNkLlRA+1BnKQ5OETtA01 wJAdiSb1r0utmthbsIJ2ZLg23fNh1GGBic07HB3Fj06OB7Mv79uFs/XIUWCOndE4dYwY C2jHLhZTVfujpfHO5JUfoU4F8Se/Ap8tt3s9EckHscgcbtYIYHD8q2qTgzQXsd2ao82T nmadYuoPgj9kGvP8i4+WKobKn5bRoLwkSd20RtXUPky+NyxFuUGvvOOA+OMQqgbkCMR5 pt6A== X-Gm-Message-State: AOAM5314hbi5Us+HNTEnDSj3wrZOUqQSfuIlOdghK2lTlum+RPU5Bcnr e7JbOdubhcHkRNnFLdm8D/xeJOVYSNlp/g== X-Google-Smtp-Source: ABdhPJxoWRENEqyUnramlAuAa3GE6kY/kUPgo4LtnIqR8qfMIRUqsrZJY5Fq/HaKdPvQkfaskCr3CA== X-Received: by 2002:a17:902:720a:: with SMTP id ba10mr1552113plb.41.1598890055582; Mon, 31 Aug 2020 09:07:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 68/76] target/microblaze: Convert dec_rts to decodetree Date: Mon, 31 Aug 2020 09:05:53 -0700 Message-Id: <20200831160601.833692-69-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/insns.decode | 5 ++++ target/microblaze/translate.c | 51 +++++++++++++++------------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/target/microblaze/insns.decode b/target/microblaze/insns.decode index e6a61f147a..8906058a29 100644 --- a/target/microblaze/insns.decode +++ b/target/microblaze/insns.decode @@ -202,6 +202,11 @@ rsubic 001011 ..... ..... ................ = @typeb rsubik 001101 ..... ..... ................ @typeb rsubikc 001111 ..... ..... ................ @typeb =20 +rtbd 101101 10010 ..... ................ @typeb_bc +rtid 101101 10001 ..... ................ @typeb_bc +rted 101101 10100 ..... ................ @typeb_bc +rtsd 101101 10000 ..... ................ @typeb_bc + sb 110100 ..... ..... ..... 0000 000 0000 @typea sbr 110100 ..... ..... ..... 0100 000 0000 @typea sbea 110100 ..... ..... ..... 0001 000 0000 @typea diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index b8dcef8f1c..6c1855b29a 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -1252,6 +1252,29 @@ static bool trans_mbar(DisasContext *dc, arg_mbar *a= rg) return true; } =20 +static bool do_rts(DisasContext *dc, arg_typeb_bc *arg, int to_set) +{ + if (trap_userspace(dc, to_set)) { + return true; + } + dc->tb_flags_to_set |=3D to_set; + setup_dslot(dc, true); + + dc->jmp_cond =3D TCG_COND_ALWAYS; + dc->jmp_dest =3D -1; + tcg_gen_addi_i32(cpu_btarget, reg_for_read(dc, arg->ra), arg->imm); + return true; +} + +#define DO_RTS(NAME, IFLAG) \ + static bool trans_##NAME(DisasContext *dc, arg_typeb_bc *arg) \ + { return do_rts(dc, arg, IFLAG); } + +DO_RTS(rtbd, DRTB_FLAG) +DO_RTS(rtid, DRTI_FLAG) +DO_RTS(rted, DRTE_FLAG) +DO_RTS(rtsd, 0) + static bool trans_zero(DisasContext *dc, arg_zero *arg) { /* If opcode_0_illegal, trap. */ @@ -1527,33 +1550,6 @@ static inline void do_rte(DisasContext *dc) dc->tb_flags &=3D ~DRTE_FLAG; } =20 -static void dec_rts(DisasContext *dc) -{ - unsigned int b_bit, i_bit, e_bit; - - i_bit =3D dc->ir & (1 << 21); - b_bit =3D dc->ir & (1 << 22); - e_bit =3D dc->ir & (1 << 23); - - if (trap_userspace(dc, i_bit || b_bit || e_bit)) { - return; - } - - setup_dslot(dc, true); - - if (i_bit) { - dc->tb_flags |=3D DRTI_FLAG; - } else if (b_bit) { - dc->tb_flags |=3D DRTB_FLAG; - } else if (e_bit) { - dc->tb_flags |=3D DRTE_FLAG; - } - - dc->jmp_cond =3D TCG_COND_ALWAYS; - dc->jmp_dest =3D -1; - tcg_gen_add_i32(cpu_btarget, cpu_R[dc->ra], *dec_alu_op_b(dc)); -} - static void dec_null(DisasContext *dc) { if (trap_illegal(dc, true)) { @@ -1601,7 +1597,6 @@ static struct decoder_info { }; void (*dec)(DisasContext *dc); } decinfo[] =3D { - {DEC_RTS, dec_rts}, {DEC_MSR, dec_msr}, {DEC_STREAM, dec_stream}, {{0, 0}, dec_null} --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891232; cv=none; d=zohomail.com; s=zohoarc; b=E34CLAFfqJncegb1oHc5pqT408uW+J6de7frT17HPD8otaAvoM1FTQ4NzZbYf1T0HnnHg4VFBnADORsU7bBuHkK8gqmDAlUj5oHtELH6AGacQU0gg6QwsAxMZB55+nbGCw3KipVPv3s23e6DWO5smo8OZkM24fAM6Jdzma+aOTE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891232; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=QDTm4Rd7QGp1CLW4zO3AZdAzuiw+MvOs5jtCeQIlMUE=; b=FkFPAqhVccluxZqpTWMngZyBquECO30XheeZIyuQNq6UjThtLdUW5szhf1ZpCwCh93EAm47TC5YmIEu4qWrVndWOaKElzm/qqB7ZkFEKG76HaRfRNI5zIgvAJDdKNtRXVxDNOYFOw4R/uyIhr+7LMzxaP4cp6RDqIUsytT7j+Sg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891232408661.715359106024; Mon, 31 Aug 2020 09:27:12 -0700 (PDT) Received: from localhost ([::1]:46518 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmeF-0005FW-Il for importer@patchew.org; Mon, 31 Aug 2020 12:27:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34760) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmLM-0006ca-MT for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:40 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]:41753) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmLK-0006AO-SE for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:40 -0400 Received: by mail-pl1-x631.google.com with SMTP id l9so1612307plt.8 for ; Mon, 31 Aug 2020 09:07:38 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=QDTm4Rd7QGp1CLW4zO3AZdAzuiw+MvOs5jtCeQIlMUE=; b=b/N8Y1oaLN/rI99/xNazNhszo83o8gaSFxcoLxtu9Obdb97RfUbv7/W/ewpeRdp2ka 3b0cLjvh9+OXpN4nXNWndE2lJsYX+aYEK7cUo0s2e+3QPT6Q0Hmq1aW0IemCU5ONxSiD GmdZ9dN9KheLxXbSF9f9TP+shu0FlLtCo6SllBYFr8NH+iQwLg+vr8ZznYS3sprQ4+fW JztSeOFUrdMq9kRPSnjg8Nh68y/vPLoBOfSZ8OG6aQFPTR5JsSO+JZ06/J8Jyf4pbUl3 2r1Z3s5s1jdfzLxsQFf5Gwh215kXc3ANep8nlxnCBbeKRLeMhCT8W6Z+l8SVUFSmjLpr VQOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=QDTm4Rd7QGp1CLW4zO3AZdAzuiw+MvOs5jtCeQIlMUE=; b=Eb/4Wkz2IeJMH28mRCf389rhMlLU1y1TNiGfuXdxqcDTJjutn0Hw7+LAWd8C+YFycM n0kRWZItEWPul1zcY437tVwrYnUm0C8Y0ZzFd5A0sXdnhlqLinvzplKfnZx6NhRn/f0K 9MKrh0j6plyzgjkPyG662f7UmwTQjJW8UTN35h/QhaQMXUiE8Z578dYF6uwHcvsR4W+u W4YxymcWFStZzoI6urIG6pWkOKGnGmVU+SANSp+xCDQaL5uGYI537qqXivcynx4K+/W4 SCMjVCKAc82Arud6Bvn9lLHxxybeft2CuCyAsKPZgENzWm/wVdw4WO+erMrn35CX5bJV 2pnw== X-Gm-Message-State: AOAM533AO6owdo/e0bDlc+K5vc4lRFMBlZeNukMrO28rVKRLmL5ZqMrG inEOrTj2s0AvAL4tFdPa+Pz5uR1UV1h3dQ== X-Google-Smtp-Source: ABdhPJx9hNM7993mtMy9ExFT7Vko0QsGhUhn5xxbjURvpMopkPDibIC+f/OI0tGAELXGSmd+wr1Imw== X-Received: by 2002:a17:902:6ac3:: with SMTP id i3mr1595395plt.21.1598890057109; Mon, 31 Aug 2020 09:07:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 69/76] target/microblaze: Tidy do_rti, do_rtb, do_rte Date: Mon, 31 Aug 2020 09:05:54 -0700 Message-Id: <20200831160601.833692-70-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x631.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Since cpu_msr is no longer a 64-bit quantity, we can simplify the arithmetic in these functions. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/translate.c | 65 ++++++++++++++--------------------- 1 file changed, 25 insertions(+), 40 deletions(-) diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 6c1855b29a..0872795038 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -1494,59 +1494,44 @@ static void dec_msr(DisasContext *dc) } } =20 -static inline void do_rti(DisasContext *dc) +static void do_rti(DisasContext *dc) { - TCGv_i32 t0, t1; - t0 =3D tcg_temp_new_i32(); - t1 =3D tcg_temp_new_i32(); - tcg_gen_mov_i32(t1, cpu_msr); - tcg_gen_shri_i32(t0, t1, 1); - tcg_gen_ori_i32(t1, t1, MSR_IE); - tcg_gen_andi_i32(t0, t0, (MSR_VM | MSR_UM)); + TCGv_i32 tmp =3D tcg_temp_new_i32(); =20 - tcg_gen_andi_i32(t1, t1, ~(MSR_VM | MSR_UM)); - tcg_gen_or_i32(t1, t1, t0); - msr_write(dc, t1); - tcg_temp_free_i32(t1); - tcg_temp_free_i32(t0); + tcg_gen_shri_i32(tmp, cpu_msr, 1); + tcg_gen_ori_i32(cpu_msr, cpu_msr, MSR_IE); + tcg_gen_andi_i32(tmp, tmp, MSR_VM | MSR_UM); + tcg_gen_andi_i32(cpu_msr, cpu_msr, ~(MSR_VM | MSR_UM)); + tcg_gen_or_i32(cpu_msr, cpu_msr, tmp); + + tcg_temp_free_i32(tmp); dc->tb_flags &=3D ~DRTI_FLAG; } =20 -static inline void do_rtb(DisasContext *dc) +static void do_rtb(DisasContext *dc) { - TCGv_i32 t0, t1; - t0 =3D tcg_temp_new_i32(); - t1 =3D tcg_temp_new_i32(); - tcg_gen_mov_i32(t1, cpu_msr); - tcg_gen_andi_i32(t1, t1, ~MSR_BIP); - tcg_gen_shri_i32(t0, t1, 1); - tcg_gen_andi_i32(t0, t0, (MSR_VM | MSR_UM)); + TCGv_i32 tmp =3D tcg_temp_new_i32(); =20 - tcg_gen_andi_i32(t1, t1, ~(MSR_VM | MSR_UM)); - tcg_gen_or_i32(t1, t1, t0); - msr_write(dc, t1); - tcg_temp_free_i32(t1); - tcg_temp_free_i32(t0); + tcg_gen_shri_i32(tmp, cpu_msr, 1); + tcg_gen_andi_i32(cpu_msr, cpu_msr, ~(MSR_VM | MSR_UM | MSR_BIP)); + tcg_gen_andi_i32(tmp, tmp, (MSR_VM | MSR_UM)); + tcg_gen_or_i32(cpu_msr, cpu_msr, tmp); + + tcg_temp_free_i32(tmp); dc->tb_flags &=3D ~DRTB_FLAG; } =20 -static inline void do_rte(DisasContext *dc) +static void do_rte(DisasContext *dc) { - TCGv_i32 t0, t1; - t0 =3D tcg_temp_new_i32(); - t1 =3D tcg_temp_new_i32(); + TCGv_i32 tmp =3D tcg_temp_new_i32(); =20 - tcg_gen_mov_i32(t1, cpu_msr); - tcg_gen_ori_i32(t1, t1, MSR_EE); - tcg_gen_andi_i32(t1, t1, ~MSR_EIP); - tcg_gen_shri_i32(t0, t1, 1); - tcg_gen_andi_i32(t0, t0, (MSR_VM | MSR_UM)); + tcg_gen_shri_i32(tmp, cpu_msr, 1); + tcg_gen_ori_i32(cpu_msr, cpu_msr, MSR_EE); + tcg_gen_andi_i32(tmp, tmp, (MSR_VM | MSR_UM)); + tcg_gen_andi_i32(cpu_msr, cpu_msr, ~(MSR_VM | MSR_UM | MSR_EIP)); + tcg_gen_or_i32(cpu_msr, cpu_msr, tmp); =20 - tcg_gen_andi_i32(t1, t1, ~(MSR_VM | MSR_UM)); - tcg_gen_or_i32(t1, t1, t0); - msr_write(dc, t1); - tcg_temp_free_i32(t1); - tcg_temp_free_i32(t0); + tcg_temp_free_i32(tmp); dc->tb_flags &=3D ~DRTE_FLAG; } =20 --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891672; cv=none; d=zohomail.com; s=zohoarc; b=S7DwVYPe/Eg5Ne0Y8PtSSGobPlGDPfqd1dEl8Q/+6WCWsNiPq+nPIE6JGU9ExclmFezhTpQYh6KQZYC7QvjuXTUZpY2dg9pdFseECaVw4zrA6rbQwIjNtk0cquGBQx4c2qXZ4CkkFxjL+h6xGaKV+S6fa70ffM2oA8j1ONzsoSE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891672; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=qD9TO6jGFspxgEuw853gVRm0hcTBzuluIXG7+nD8HAE=; b=F7olOq/AbjoO9z+hNhpRwzlLQAMf5EoUbtuEvH9o9AJJw/Y8X36aBxViA0LLy+GtqSTRkvDfko6gNXMYhDsVjAgoUDaaeE/b7jlfw7QmjU3l4XgfjS/LykGnE1ITTMtdJhg2EkA41Xu6OnHF7tm/cpxJ6giMZfvfORO7L0Uk2UI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891672071477.4608223425355; Mon, 31 Aug 2020 09:34:32 -0700 (PDT) Received: from localhost ([::1]:55474 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmlL-0003Yo-8R for importer@patchew.org; Mon, 31 Aug 2020 12:34:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34784) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmLO-0006gw-Bb for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:42 -0400 Received: from mail-pj1-x1042.google.com ([2607:f8b0:4864:20::1042]:55319) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmLM-0006Ai-1q for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:41 -0400 Received: by mail-pj1-x1042.google.com with SMTP id 2so21717pjx.5 for ; Mon, 31 Aug 2020 09:07:39 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=qD9TO6jGFspxgEuw853gVRm0hcTBzuluIXG7+nD8HAE=; b=it6gFr26EkQ4zo09ApJAmMqAT8cdh8Z8KCxVnMKlTHx0FF9qPpTxFlqaTEM4gC4jB/ Wmy9yt47pENq5WxxWMhT4kJZFJ+iX6cMsELMCBVV3MD3lNYHdhbtdHAbJXkRSHRlzfff QeFaKcUPpKKCv4IUJnZ+0cwmVwLvcnQ+fimHzzn0MKA6gRyqi+WMh1ed14ZTat2145YV NkjHv4FfGA9LsnA03e+66IKfMR5ZbPk+R8IHjOBuhnAUpKaGe5GYEkJO3QdNEYicFS+A dIU7KFrJ2gyondW02IOLFNloMQMCiuziILKBZaG5SnsIW5Tx+iyIkSPrvvEqt9OV/J4t HEMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=qD9TO6jGFspxgEuw853gVRm0hcTBzuluIXG7+nD8HAE=; b=P3nOBBntVHDTYXdPObk0dhQmiSS113jE+WaoiwUA8UbaroNJQddQYvD7zFAzYzDdvh oDkdTmJ1Fzn6+TTNwBo3hn14b/8xKSitNgFxYuwT3UW++tZixyYPKyB1Ks1XTcD+PX5A U6W+EmRRjmAQeUlSlMHS8bD7iKBP/dFKCj7aC6EoyEEPUim0LYHLH6zs3UhyqBbUzxg5 5n82CXrGWKFk9dWcTKP8Zeq/5mzjnlpGMjBxzPUimMv1E9YfkvcA+nfkI/8H6+8MzjJd WxcOkDzb6MYyEXkK0BWEIDzb+vK4H/Khqp+Ao1eM62QCUa3rTUfBTYw4sToNPOEHPcAl Lcww== X-Gm-Message-State: AOAM531LbSKPa6bswsnNOsSkwfo1dIvKTCTuhtig1uFQvuRluFyIo4Yh /JJlViykVc91QofI+chZAcHg617MO9GZ6g== X-Google-Smtp-Source: ABdhPJyrwMu1p78EmpJJLxe3yoWFxhh9H6yCyeoZmSyLMls9BFx5kBJOvWx1bPNwwnKHnHb7OrkkfA== X-Received: by 2002:a17:90a:bc8c:: with SMTP id x12mr97622pjr.106.1598890058276; Mon, 31 Aug 2020 09:07:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 70/76] target/microblaze: Convert msrclr, msrset to decodetree Date: Mon, 31 Aug 2020 09:05:55 -0700 Message-Id: <20200831160601.833692-71-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1042; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1042.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Split this out of dec_msr. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/insns.decode | 6 +++ target/microblaze/translate.c | 85 +++++++++++++++++++--------------- 2 files changed, 54 insertions(+), 37 deletions(-) diff --git a/target/microblaze/insns.decode b/target/microblaze/insns.decode index 8906058a29..ed3312982f 100644 --- a/target/microblaze/insns.decode +++ b/target/microblaze/insns.decode @@ -24,6 +24,7 @@ &typeb rd ra imm &typeb_br rd imm &typeb_bc ra imm +&type_msr rd imm =20 # Include any IMM prefix in the value reported. %extimm 0:s16 !function=3Dtypeb_imm @@ -55,6 +56,8 @@ %ieimm 6:5 0:5 @typeb_ie ...... rd:5 ra:5 ..... ..... . ..... &typeb imm=3D%ieimm =20 +@type_msr ...... rd:5 ...... imm:15 &type_msr + ### =20 { @@ -179,6 +182,9 @@ lwi 111010 ..... ..... ................ = @typeb =20 mbar 101110 imm:5 00010 0000 0000 0000 0100 =20 +msrclr 100101 ..... 100010 ............... @type_msr +msrset 100101 ..... 100000 ............... @type_msr + mul 010000 ..... ..... ..... 000 0000 0000 @typea mulh 010000 ..... ..... ..... 000 0000 0001 @typea mulhu 010000 ..... ..... ..... 000 0000 0011 @typea diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 0872795038..9479dbc103 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -1311,16 +1311,61 @@ static void msr_write(DisasContext *dc, TCGv_i32 v) tcg_gen_andi_i32(cpu_msr, v, ~(MSR_C | MSR_CC | MSR_PVR)); } =20 +static bool do_msrclrset(DisasContext *dc, arg_type_msr *arg, bool set) +{ + uint32_t imm =3D arg->imm; + + if (trap_userspace(dc, imm !=3D MSR_C)) { + return true; + } + + if (arg->rd) { + msr_read(dc, cpu_R[arg->rd]); + } + + /* + * Handle the carry bit separately. + * This is the only bit that userspace can modify. + */ + if (imm & MSR_C) { + tcg_gen_movi_i32(cpu_msr_c, set); + } + + /* + * MSR_C and MSR_CC set above. + * MSR_PVR is not writable, and is always clear. + */ + imm &=3D ~(MSR_C | MSR_CC | MSR_PVR); + + if (imm !=3D 0) { + if (set) { + tcg_gen_ori_i32(cpu_msr, cpu_msr, imm); + } else { + tcg_gen_andi_i32(cpu_msr, cpu_msr, ~imm); + } + dc->cpustate_changed =3D 1; + } + return true; +} + +static bool trans_msrclr(DisasContext *dc, arg_type_msr *arg) +{ + return do_msrclrset(dc, arg, false); +} + +static bool trans_msrset(DisasContext *dc, arg_type_msr *arg) +{ + return do_msrclrset(dc, arg, true); +} + static void dec_msr(DisasContext *dc) { CPUState *cs =3D CPU(dc->cpu); - TCGv_i32 t0, t1; unsigned int sr, rn; - bool to, clrset, extended =3D false; + bool to, extended =3D false; =20 sr =3D extract32(dc->imm, 0, 14); to =3D extract32(dc->imm, 14, 1); - clrset =3D extract32(dc->imm, 15, 1) =3D=3D 0; dc->type_b =3D 1; if (to) { dc->cpustate_changed =3D 1; @@ -1334,40 +1379,6 @@ static void dec_msr(DisasContext *dc) extended =3D extract32(dc->imm, e_bit[to], 1); } =20 - /* msrclr and msrset. */ - if (clrset) { - bool clr =3D extract32(dc->ir, 16, 1); - - if (!dc->cpu->cfg.use_msr_instr) { - /* nop??? */ - return; - } - - if (trap_userspace(dc, dc->imm !=3D 4 && dc->imm !=3D 0)) { - return; - } - - if (dc->rd) - msr_read(dc, cpu_R[dc->rd]); - - t0 =3D tcg_temp_new_i32(); - t1 =3D tcg_temp_new_i32(); - msr_read(dc, t0); - tcg_gen_mov_i32(t1, *(dec_alu_op_b(dc))); - - if (clr) { - tcg_gen_not_i32(t1, t1); - tcg_gen_and_i32(t0, t0, t1); - } else - tcg_gen_or_i32(t0, t0, t1); - msr_write(dc, t0); - tcg_temp_free_i32(t0); - tcg_temp_free_i32(t1); - tcg_gen_movi_i32(cpu_pc, dc->base.pc_next + 4); - dc->base.is_jmp =3D DISAS_UPDATE; - return; - } - if (trap_userspace(dc, to)) { return; } --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598892135; cv=none; d=zohomail.com; s=zohoarc; b=YZBgyP7HGjqZik9x/cmlaA9WrIgGofF+3aDj2JhOZVZUYUMDMkd7bSDtpph7jyKbZViKr3hS7FHTbceEqvtOqWrRDQBpCLE/CKEzO9geNWu7+IUAMPnkqdSPMQbn9zIIfjXqqjDkQB1MDOe2RR+q+SY2ghod2y4HXT83CKjjEGI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598892135; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Hba68ezEWb+nS0e4nSSkWGW78a7UsmlXp2xiIpotygQ=; b=P7XOpxmNHClPur5bN/21Gl8j5vqpRewOIyCAZB62ibi/H41Q8SPvUJXDuBwEIxHTOo4z8i41UIuG1Ai9ocGQbgbvViiPibBy/o0g44+6gc0xRsEbyBV86hSKRXfxyRKcRlgHgr+NRyfNrPX8lo+aoof2HET0R394UYd0hep05fs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598892135459170.34244521365304; Mon, 31 Aug 2020 09:42:15 -0700 (PDT) Received: from localhost ([::1]:59696 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmsn-0000J4-To for importer@patchew.org; Mon, 31 Aug 2020 12:42:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34816) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmLP-0006l2-SR for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:43 -0400 Received: from mail-pl1-x642.google.com ([2607:f8b0:4864:20::642]:44882) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmLN-0006B0-DK for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:43 -0400 Received: by mail-pl1-x642.google.com with SMTP id q3so3234680pls.11 for ; Mon, 31 Aug 2020 09:07:40 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Hba68ezEWb+nS0e4nSSkWGW78a7UsmlXp2xiIpotygQ=; b=WzoIcbAPp9R7brAgHL5BISzHwIOYaCl+YKm4rFuUOLMHGfLCu35dev5PFuYeg2sVLl PddIUAYIGFI9uMy46kO8/3yZLo0OncFg0gW9C4HWsBZxBlstMrzoSiQ4MO2OLd5X5UR3 3sbrDCyRk0nEz+654EzqJe0MeifuCzWHz3LrhY35J34p+4exOdGmkFyW45gQ4c78zdzx 6AvQcC2NGMWHeIJIH0weCGW6NUW9Rq1hCLmOIDl/ynVpbkjrLwbbJTJElV131cfYPC26 E/cTePPKlpzBvZlPSU1X6fLqNVyswHq4OlYuLACnbKnHxs/axETB5nLOKPrb8GBgueV6 mCbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Hba68ezEWb+nS0e4nSSkWGW78a7UsmlXp2xiIpotygQ=; b=CBXFspi333dB1Z3cf1DjiFerIFuy6HPrKXLbTjZ73Cldn3Q1w6kS3gTg448Tq7Ahav 2fbMYarEZdtMilrxR5qJhPOpArCU9cv9jQvwy78JpKZq4IZejdEvI19yDMPY+z+1saC7 UI0BcpuXb+ygLo/uSIRLZyWW3nw9mIJ+L4Qmz5fLaogiuwdNa+H4aGvYgteucS76vld+ 5m3kNwUPsj5PAM5gUBoENS2Z9Se0BQnc91vH0F6TgoIFQwB9vESauE05Ri498iTKefFf GsWEXUZRUU327FgCjF8AIbhu3knGGkP16J2Hk58g+UNuQTI7YlZ0/D9zu+x3oObXSj0f +1xQ== X-Gm-Message-State: AOAM531FHsy1x85YMm861jqBAYICr3NZvN6el6i+xG8+nkyCyuJiuwaS DwzTgNzvysgTihYxm4imrRGpjJYTMQJoJw== X-Google-Smtp-Source: ABdhPJyeY9Vz59LpQIyQvzlKSZpNhQ/pIvxnkKYEfofJR0DWGU0Unz5QBqbNRpMrBFuYnqAO5+JR4Q== X-Received: by 2002:a17:90b:1988:: with SMTP id mv8mr85832pjb.23.1598890059551; Mon, 31 Aug 2020 09:07:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 71/76] target/microblaze: Convert dec_msr to decodetree Date: Mon, 31 Aug 2020 09:05:56 -0700 Message-Id: <20200831160601.833692-72-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::642; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x642.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/insns.decode | 3 + target/microblaze/translate.c | 270 +++++++++++++++++---------------- 2 files changed, 139 insertions(+), 134 deletions(-) diff --git a/target/microblaze/insns.decode b/target/microblaze/insns.decode index ed3312982f..43c9e16819 100644 --- a/target/microblaze/insns.decode +++ b/target/microblaze/insns.decode @@ -182,6 +182,9 @@ lwi 111010 ..... ..... ................ = @typeb =20 mbar 101110 imm:5 00010 0000 0000 0000 0100 =20 +mfs 100101 rd:5 0 e:1 000 10 rs:14 +mts 100101 0 e:1 000 ra:5 11 rs:14 + msrclr 100101 ..... 100010 ............... @type_msr msrset 100101 ..... 100000 ............... @type_msr =20 diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 9479dbc103..582f5a1577 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -1300,6 +1300,7 @@ static void msr_read(DisasContext *dc, TCGv_i32 d) tcg_temp_free_i32(t); } =20 +#ifndef CONFIG_USER_ONLY static void msr_write(DisasContext *dc, TCGv_i32 v) { dc->cpustate_changed =3D 1; @@ -1310,6 +1311,7 @@ static void msr_write(DisasContext *dc, TCGv_i32 v) /* Clear MSR_C and MSR_CC; MSR_PVR is not writable, and is always clea= r. */ tcg_gen_andi_i32(cpu_msr, v, ~(MSR_C | MSR_CC | MSR_PVR)); } +#endif =20 static bool do_msrclrset(DisasContext *dc, arg_type_msr *arg, bool set) { @@ -1358,151 +1360,152 @@ static bool trans_msrset(DisasContext *dc, arg_ty= pe_msr *arg) return do_msrclrset(dc, arg, true); } =20 -static void dec_msr(DisasContext *dc) +static bool trans_mts(DisasContext *dc, arg_mts *arg) { - CPUState *cs =3D CPU(dc->cpu); - unsigned int sr, rn; - bool to, extended =3D false; - - sr =3D extract32(dc->imm, 0, 14); - to =3D extract32(dc->imm, 14, 1); - dc->type_b =3D 1; - if (to) { - dc->cpustate_changed =3D 1; + if (trap_userspace(dc, true)) { + return true; } =20 - /* Extended MSRs are only available if addr_size > 32. */ - if (dc->cpu->cfg.addr_size > 32) { - /* The E-bit is encoded differently for To/From MSR. */ - static const unsigned int e_bit[] =3D { 19, 24 }; - - extended =3D extract32(dc->imm, e_bit[to], 1); +#ifdef CONFIG_USER_ONLY + g_assert_not_reached(); +#else + if (arg->e && arg->rs !=3D 0x1003) { + qemu_log_mask(LOG_GUEST_ERROR, + "Invalid extended mts reg 0x%x\n", arg->rs); + return true; } =20 - if (trap_userspace(dc, to)) { - return; - } + TCGv_i32 src =3D reg_for_read(dc, arg->ra); + switch (arg->rs) { + case SR_MSR: + msr_write(dc, src); + break; + case SR_FSR: + tcg_gen_st_i32(src, cpu_env, offsetof(CPUMBState, fsr)); + break; + case 0x800: + tcg_gen_st_i32(src, cpu_env, offsetof(CPUMBState, slr)); + break; + case 0x802: + tcg_gen_st_i32(src, cpu_env, offsetof(CPUMBState, shr)); + break; =20 -#if !defined(CONFIG_USER_ONLY) - /* Catch read/writes to the mmu block. */ - if ((sr & ~0xff) =3D=3D 0x1000) { - TCGv_i32 tmp_ext =3D tcg_const_i32(extended); - TCGv_i32 tmp_sr; + case 0x1000: /* PID */ + case 0x1001: /* ZPR */ + case 0x1002: /* TLBX */ + case 0x1003: /* TLBLO */ + case 0x1004: /* TLBHI */ + case 0x1005: /* TLBSX */ + { + TCGv_i32 tmp_ext =3D tcg_const_i32(arg->e); + TCGv_i32 tmp_reg =3D tcg_const_i32(arg->rs & 7); =20 - sr &=3D 7; - tmp_sr =3D tcg_const_i32(sr); - if (to) { - gen_helper_mmu_write(cpu_env, tmp_ext, tmp_sr, cpu_R[dc->ra]); - } else { - gen_helper_mmu_read(cpu_R[dc->rd], cpu_env, tmp_ext, tmp_sr); + gen_helper_mmu_write(cpu_env, tmp_ext, tmp_reg, src); + tcg_temp_free_i32(tmp_reg); + tcg_temp_free_i32(tmp_ext); } - tcg_temp_free_i32(tmp_sr); - tcg_temp_free_i32(tmp_ext); - return; + break; + + default: + qemu_log_mask(LOG_GUEST_ERROR, "Invalid mts reg 0x%x\n", arg->rs); + return true; } + dc->cpustate_changed =3D 1; + return true; +#endif +} + +static bool trans_mfs(DisasContext *dc, arg_mfs *arg) +{ + TCGv_i32 dest =3D reg_for_write(dc, arg->rd); + + if (arg->e) { + switch (arg->rs) { + case SR_EAR: + { + TCGv_i64 t64 =3D tcg_temp_new_i64(); + tcg_gen_ld_i64(t64, cpu_env, offsetof(CPUMBState, ear)); + tcg_gen_extrh_i64_i32(dest, t64); + tcg_temp_free_i64(t64); + } + return true; +#ifndef CONFIG_USER_ONLY + case 0x1003: /* TLBLO */ + /* Handled below. */ + break; +#endif + case 0x2006 ... 0x2009: + /* High bits of PVR6-9 not implemented. */ + tcg_gen_movi_i32(dest, 0); + return true; + default: + qemu_log_mask(LOG_GUEST_ERROR, + "Invalid extended mfs reg 0x%x\n", arg->rs); + return true; + } + } + + switch (arg->rs) { + case SR_PC: + tcg_gen_movi_i32(dest, dc->base.pc_next); + break; + case SR_MSR: + msr_read(dc, dest); + break; + case SR_EAR: + { + TCGv_i64 t64 =3D tcg_temp_new_i64(); + tcg_gen_ld_i64(t64, cpu_env, offsetof(CPUMBState, ear)); + tcg_gen_extrl_i64_i32(dest, t64); + tcg_temp_free_i64(t64); + } + break; + case SR_ESR: + tcg_gen_ld_i32(dest, cpu_env, offsetof(CPUMBState, esr)); + break; + case SR_FSR: + tcg_gen_ld_i32(dest, cpu_env, offsetof(CPUMBState, fsr)); + break; + case SR_BTR: + tcg_gen_ld_i32(dest, cpu_env, offsetof(CPUMBState, btr)); + break; + case SR_EDR: + tcg_gen_ld_i32(dest, cpu_env, offsetof(CPUMBState, edr)); + break; + case 0x800: + tcg_gen_ld_i32(dest, cpu_env, offsetof(CPUMBState, slr)); + break; + case 0x802: + tcg_gen_ld_i32(dest, cpu_env, offsetof(CPUMBState, shr)); + break; + +#ifndef CONFIG_USER_ONLY + case 0x1000: /* PID */ + case 0x1001: /* ZPR */ + case 0x1002: /* TLBX */ + case 0x1003: /* TLBLO */ + case 0x1004: /* TLBHI */ + case 0x1005: /* TLBSX */ + { + TCGv_i32 tmp_ext =3D tcg_const_i32(arg->e); + TCGv_i32 tmp_reg =3D tcg_const_i32(arg->rs & 7); + + gen_helper_mmu_read(dest, cpu_env, tmp_ext, tmp_reg); + tcg_temp_free_i32(tmp_reg); + tcg_temp_free_i32(tmp_ext); + } + break; #endif =20 - if (to) { - switch (sr) { - case SR_PC: - break; - case SR_MSR: - msr_write(dc, cpu_R[dc->ra]); - break; - case SR_EAR: - { - TCGv_i64 t64 =3D tcg_temp_new_i64(); - tcg_gen_extu_i32_i64(t64, cpu_R[dc->ra]); - tcg_gen_st_i64(t64, cpu_env, offsetof(CPUMBState, ear)= ); - tcg_temp_free_i64(t64); - } - break; - case SR_ESR: - tcg_gen_st_i32(cpu_R[dc->ra], - cpu_env, offsetof(CPUMBState, esr)); - break; - case SR_FSR: - tcg_gen_st_i32(cpu_R[dc->ra], - cpu_env, offsetof(CPUMBState, fsr)); - break; - case SR_BTR: - tcg_gen_st_i32(cpu_R[dc->ra], - cpu_env, offsetof(CPUMBState, btr)); - break; - case SR_EDR: - tcg_gen_st_i32(cpu_R[dc->ra], - cpu_env, offsetof(CPUMBState, edr)); - break; - case 0x800: - tcg_gen_st_i32(cpu_R[dc->ra], - cpu_env, offsetof(CPUMBState, slr)); - break; - case 0x802: - tcg_gen_st_i32(cpu_R[dc->ra], - cpu_env, offsetof(CPUMBState, shr)); - break; - default: - cpu_abort(CPU(dc->cpu), "unknown mts reg %x\n", sr); - break; - } - } else { - switch (sr) { - case SR_PC: - tcg_gen_movi_i32(cpu_R[dc->rd], dc->base.pc_next); - break; - case SR_MSR: - msr_read(dc, cpu_R[dc->rd]); - break; - case SR_EAR: - { - TCGv_i64 t64 =3D tcg_temp_new_i64(); - tcg_gen_ld_i64(t64, cpu_env, offsetof(CPUMBState, ear)= ); - if (extended) { - tcg_gen_extrh_i64_i32(cpu_R[dc->rd], t64); - } else { - tcg_gen_extrl_i64_i32(cpu_R[dc->rd], t64); - } - tcg_temp_free_i64(t64); - } - break; - case SR_ESR: - tcg_gen_ld_i32(cpu_R[dc->rd], - cpu_env, offsetof(CPUMBState, esr)); - break; - case SR_FSR: - tcg_gen_ld_i32(cpu_R[dc->rd], - cpu_env, offsetof(CPUMBState, fsr)); - break; - case SR_BTR: - tcg_gen_ld_i32(cpu_R[dc->rd], - cpu_env, offsetof(CPUMBState, btr)); - break; - case SR_EDR: - tcg_gen_ld_i32(cpu_R[dc->rd], - cpu_env, offsetof(CPUMBState, edr)); - break; - case 0x800: - tcg_gen_ld_i32(cpu_R[dc->rd], - cpu_env, offsetof(CPUMBState, slr)); - break; - case 0x802: - tcg_gen_ld_i32(cpu_R[dc->rd], - cpu_env, offsetof(CPUMBState, shr)); - break; - case 0x2000 ... 0x200c: - rn =3D sr & 0xf; - tcg_gen_ld_i32(cpu_R[dc->rd], - cpu_env, offsetof(CPUMBState, pvr.regs[rn])); - break; - default: - cpu_abort(cs, "unknown mfs reg %x\n", sr); - break; - } - } - - if (dc->rd =3D=3D 0) { - tcg_gen_movi_i32(cpu_R[0], 0); + case 0x2000 ... 0x200c: + tcg_gen_ld_i32(dest, cpu_env, + offsetof(CPUMBState, pvr.regs[arg->rs - 0x2000])); + break; + default: + qemu_log_mask(LOG_GUEST_ERROR, "Invalid mfs reg 0x%x\n", arg->rs); + break; } + return true; } =20 static void do_rti(DisasContext *dc) @@ -1593,7 +1596,6 @@ static struct decoder_info { }; void (*dec)(DisasContext *dc); } decinfo[] =3D { - {DEC_MSR, dec_msr}, {DEC_STREAM, dec_stream}, {{0, 0}, dec_null} }; --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891746; cv=none; d=zohomail.com; s=zohoarc; b=d1aoO+2Jn3YTcE3ITiTQUhECdBltTyCUhcLXN9yR1wpRVcKilQqoIGDFTyjBxVKkkQcOdqQ75vei9NSjQx4Vk+ArCuUVUdRP3O3gFF4WeywkuUdUnJfSLHagicOQq52d/n3eUDbOZ2kAiuNFOsiYDw8eJyY9rsv2g+69ydIOLwk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891746; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=C3as3kqyszotGpdBkj2bOoUSS0AWrFxb8GKuwRxYQYE=; b=SQ2mLZzXMwUfyloTgT44jxeamPwd1tGa+MvngpB9AAbPOxHUcVIfOGRpVClYBsUqT12HWBXP8yqeLa/ZBAzEcGm2ELdzXdLWxmMyH2iFqlbBq1Dz61Foo+R+6V+lRros5n7DP+n0sB+3J6sn2oglpEo7Gei4AIb4omImq4Ght48= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891746854351.3902731704452; Mon, 31 Aug 2020 09:35:46 -0700 (PDT) Received: from localhost ([::1]:33410 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmmY-00061a-3Y for importer@patchew.org; Mon, 31 Aug 2020 12:35:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34826) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmLR-0006o9-0w for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:45 -0400 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]:40976) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmLO-0006BE-Eb for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:44 -0400 Received: by mail-pf1-x42b.google.com with SMTP id t9so806719pfq.8 for ; Mon, 31 Aug 2020 09:07:41 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=C3as3kqyszotGpdBkj2bOoUSS0AWrFxb8GKuwRxYQYE=; b=mT8X+1VN1HgSi0mpV3XkzeuIp/VDAYCP6lNT1rQ/W11XO/Z4RP8STF/UcB4vuJkZOc 3oxvXgTi5V8eeAaw/cr7eJ6Phu7W6wJO19UeFZr/fHMCcyIJms5xQgncKslqSGUHjrMh R2UNoatuKOl8mbPLrBLENqftWbexoLb4Fi04r6vy9PKUOCGPCqtSsBHeeQ3nL9gHPngX jorzeQ6yR+uSdoVazaEnwph0zxrGe5OO5PYJEsGc5Uu4ARrcJmLne6puMkMhoHfwOVOp 8FeQtvsCE+xwQ2ougaXLqo1TJIj6FyekJHFpkuVtz9zMl6aIQaS3UfMEwLTafzFTAyvc 12aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=C3as3kqyszotGpdBkj2bOoUSS0AWrFxb8GKuwRxYQYE=; b=gGp/8qScSyKKdhSRAvpJAwfBu0mtnBNurt+V28KGAkYYUG9S9SKrhzfge8MTs0V9RE RyWOFgtQ2i7aunlRTP41l9zWS9Xk17Za7OBQJUws8HnUNjWlFpSOpzA6MCaAFo4m3PfZ lsbZNinY3/SNVSY++HGSG4g0Gp5uverw0seHPi9hEuo7mhjdIikcrAyGVEui/emZGOYC 6MnuIYkX0fpSQCjN8IL1svwOlWQjixXBVeQ8HzV7wTxJvJdntr5yQqwM2zrZhO2ney6h Jc0/R65n9VRyI+1q9Imc+JS6Fu0hhabEYRcicpaCPAEbm53TtNs6PvuZiBTHdzf4D2KI qgPw== X-Gm-Message-State: AOAM530e/KjU6lOKTCb8wbFr29aXVR04Bj2KKx3gGiRHVpMaiXXIlFzr m+9aTLy0wjUo+prsSbG+PRSQihfZua/5cg== X-Google-Smtp-Source: ABdhPJyQBRJEyQBl8WRT9z3iOs7TXI1fFXnlpg5gvO2Jd43fcdTbnBl0ug+LlMaqX17ojlrO7ZPanA== X-Received: by 2002:a62:c5c6:: with SMTP id j189mr1861039pfg.145.1598890060751; Mon, 31 Aug 2020 09:07:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 72/76] target/microblaze: Convert dec_stream to decodetree Date: Mon, 31 Aug 2020 09:05:57 -0700 Message-Id: <20200831160601.833692-73-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42b.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/insns.decode | 6 ++++ target/microblaze/translate.c | 64 ++++++++++++++++++++++++++-------- 2 files changed, 55 insertions(+), 15 deletions(-) diff --git a/target/microblaze/insns.decode b/target/microblaze/insns.decode index 43c9e16819..fb0f0e6838 100644 --- a/target/microblaze/insns.decode +++ b/target/microblaze/insns.decode @@ -159,6 +159,9 @@ flt 010110 ..... ..... ----- 0101 000 0000 = @typea0 fint 010110 ..... ..... ----- 0110 000 0000 @typea0 fsqrt 010110 ..... ..... 00000 0111 000 0000 @typea0 =20 +get 011011 rd:5 00000 0 ctrl:5 000000 imm:4 +getd 010011 rd:5 00000 rb:5 0 ctrl:5 00000 + idiv 010010 ..... ..... ..... 000 0000 0000 @typea idivu 010010 ..... ..... ..... 000 0000 0010 @typea =20 @@ -201,6 +204,9 @@ pcmpbf 100000 ..... ..... ..... 100 0000 0000 = @typea pcmpeq 100010 ..... ..... ..... 100 0000 0000 @typea pcmpne 100011 ..... ..... ..... 100 0000 0000 @typea =20 +put 011011 00000 ra:5 1 ctrl:5 000000 imm:4 +putd 010011 00000 ra:5 rb:5 1 ctrl:5 00000 + rsub 000001 ..... ..... ..... 000 0000 0000 @typea rsubc 000011 ..... ..... ..... 000 0000 0000 @typea rsubk 000101 ..... ..... ..... 000 0000 0000 @typea diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 582f5a1577..2c87d671ae 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -1560,33 +1560,68 @@ static void dec_null(DisasContext *dc) } =20 /* Insns connected to FSL or AXI stream attached devices. */ -static void dec_stream(DisasContext *dc) +static bool do_get(DisasContext *dc, int rd, int rb, int imm, int ctrl) { TCGv_i32 t_id, t_ctrl; - int ctrl; =20 if (trap_userspace(dc, true)) { - return; + return true; } =20 t_id =3D tcg_temp_new_i32(); - if (dc->type_b) { - tcg_gen_movi_i32(t_id, dc->imm & 0xf); - ctrl =3D dc->imm >> 10; + if (rb) { + tcg_gen_andi_i32(t_id, cpu_R[rb], 0xf); } else { - tcg_gen_andi_i32(t_id, cpu_R[dc->rb], 0xf); - ctrl =3D dc->imm >> 5; + tcg_gen_movi_i32(t_id, imm); } =20 t_ctrl =3D tcg_const_i32(ctrl); - - if (dc->rd =3D=3D 0) { - gen_helper_put(t_id, t_ctrl, cpu_R[dc->ra]); - } else { - gen_helper_get(cpu_R[dc->rd], t_id, t_ctrl); - } + gen_helper_get(reg_for_write(dc, rd), t_id, t_ctrl); tcg_temp_free_i32(t_id); tcg_temp_free_i32(t_ctrl); + return true; +} + +static bool trans_get(DisasContext *dc, arg_get *arg) +{ + return do_get(dc, arg->rd, 0, arg->imm, arg->ctrl); +} + +static bool trans_getd(DisasContext *dc, arg_getd *arg) +{ + return do_get(dc, arg->rd, arg->rb, 0, arg->ctrl); +} + +static bool do_put(DisasContext *dc, int ra, int rb, int imm, int ctrl) +{ + TCGv_i32 t_id, t_ctrl; + + if (trap_userspace(dc, true)) { + return true; + } + + t_id =3D tcg_temp_new_i32(); + if (rb) { + tcg_gen_andi_i32(t_id, cpu_R[rb], 0xf); + } else { + tcg_gen_movi_i32(t_id, imm); + } + + t_ctrl =3D tcg_const_i32(ctrl); + gen_helper_put(t_id, t_ctrl, reg_for_read(dc, ra)); + tcg_temp_free_i32(t_id); + tcg_temp_free_i32(t_ctrl); + return true; +} + +static bool trans_put(DisasContext *dc, arg_put *arg) +{ + return do_put(dc, arg->ra, 0, arg->imm, arg->ctrl); +} + +static bool trans_putd(DisasContext *dc, arg_putd *arg) +{ + return do_put(dc, arg->ra, arg->rb, 0, arg->ctrl); } =20 static struct decoder_info { @@ -1596,7 +1631,6 @@ static struct decoder_info { }; void (*dec)(DisasContext *dc); } decinfo[] =3D { - {DEC_STREAM, dec_stream}, {{0, 0}, dec_null} }; =20 --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891823; cv=none; d=zohomail.com; s=zohoarc; b=FlaPfUMp6jrziQAq6zQryYlfBisyPvEaxwc/od5nJfRGuawH9PDTNJD0tshJeyz0qzQuYbQkiqv9rU6kccQ0oTGTbC5vl9tQuol45x3WXcT97cPx3bTVNrT/UMXmHWW+zZjGaaIh4Bz12mAZdg+Xhg3Ya0AGkck3fmratFg/kDA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891823; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=VlVvLuwvJhqN5DUGPUSEKxjopLK3XRPeauR+IVz+80Y=; b=TuwauxtfuOaDxH8ZPrubYdnDTjYiVk8o0gqnr58UqhqsgGNpJHuiS4d+7uw+j+5h8rFp13KY4JelF5InJ4j/x9J9x+wslB0zQBmggBkiUl1F56IXBtMbivxgpYTBEpFBaJoJudmVUDhQZiKpxQuDcy+qaRrHOgV3Jb1rlan1XvY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891823707715.7755893617867; Mon, 31 Aug 2020 09:37:03 -0700 (PDT) Received: from localhost ([::1]:39710 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmnm-00009K-Fn for importer@patchew.org; Mon, 31 Aug 2020 12:37:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34854) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmLS-0006rR-9r for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:46 -0400 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]:38604) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmLP-0006BV-Ua for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:45 -0400 Received: by mail-pj1-x1030.google.com with SMTP id ls14so26229pjb.3 for ; Mon, 31 Aug 2020 09:07:43 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=VlVvLuwvJhqN5DUGPUSEKxjopLK3XRPeauR+IVz+80Y=; b=g+/KovhH2JGR8JZYQi0xdB3dwyIIHBg6n48noeQelptkxQDESh6LCw/uV8qg4CXO9u VWKxOVd4BiMqupb1Ckw0nFQn7ZZjr4ZoevmbqpSIHWvMYceZujtNBN5VPhmm7Pv/VwGT 6NGMwo4yNKaVFZoauFPBd2q6oRaOOFEfd09rkgv8mppBa8WPqVwi+Hd9u+2xIXD/3ePX Kgil0Yb+mDfwReJ7yc9CvW5P7DSnc2WVUyV3+7f2QnNdAzpJ9kl8n7Y3HtG91JBwvQLy 2xZGxdA7kQaYML/aK8OYh6kzzK8+42CRLb7CeKEeDuQDb2/aqwjtnerw67nG4OvnI8+b QLgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=VlVvLuwvJhqN5DUGPUSEKxjopLK3XRPeauR+IVz+80Y=; b=aYA6fG2uNtt3dxbw7kwgkVxdFmSZUUhme54lsNx5oQoG+Nsmycypk3VLSSoReZIJtG c2++pw5eXdWJdXV5h2EB9uWBSuqcqddBRDK8qOFOG+P5ovo2gW6AHCAn6CTHgn7Iozfz gQ0mhk5fCNXpGJyEIQ29AQIm7dS7JqIDuh6zjGO19tV+JnWB4W+9BwSJFOtJvhq9f8P0 4tXIbIHuIEuyyDHLr9VyCJO/iMJY70Lq5xEgUe2jGfeQes8wNQPDQRpvLBRO0Apezgr9 pCQTAatEjZREWx7GO2jrPBI1ExtSzb7rJ6u5hu9bCW+aDNxW/0YgBqrJy4z+b6FogN9M F97A== X-Gm-Message-State: AOAM531uJ6yYMwPQRZzJyKLLB4+/3E5cxxrjTiuKuxMkyqGX78hNswas RixzQOhqD4CvZYhGvO8o0CIR2buFZJ0RMg== X-Google-Smtp-Source: ABdhPJzGmatiyHRoZVMd0Ke3HTlzCh4S+4tnuXItWoJDvs/INKEVHeUn7Lna0CQudfDzEjctAD6hIw== X-Received: by 2002:a17:90a:fb52:: with SMTP id iq18mr96348pjb.162.1598890062128; Mon, 31 Aug 2020 09:07:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 73/76] target/microblaze: Remove last of old decoder Date: Mon, 31 Aug 2020 09:05:58 -0700 Message-Id: <20200831160601.833692-74-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1030; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1030.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" All instructions have been convered. Issue sigill if decodetree does not match. Remove argument decode from DisasContext. Remove microblaze-decode.h. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/microblaze-decode.h | 59 ---------------------- target/microblaze/translate.c | 73 +-------------------------- 2 files changed, 1 insertion(+), 131 deletions(-) delete mode 100644 target/microblaze/microblaze-decode.h diff --git a/target/microblaze/microblaze-decode.h b/target/microblaze/micr= oblaze-decode.h deleted file mode 100644 index 17b2f29fff..0000000000 --- a/target/microblaze/microblaze-decode.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * MicroBlaze insn decoding macros. - * - * Copyright (c) 2009 Edgar E. Iglesias - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, see . - */ - -#ifndef TARGET_MICROBLAZE_MICROBLAZE_DECODE_H -#define TARGET_MICROBLAZE_MICROBLAZE_DECODE_H - -/* Convenient binary macros. */ -#define HEX__(n) 0x##n##LU -#define B8__(x) ((x&0x0000000FLU)?1:0) \ - + ((x&0x000000F0LU)?2:0) \ - + ((x&0x00000F00LU)?4:0) \ - + ((x&0x0000F000LU)?8:0) \ - + ((x&0x000F0000LU)?16:0) \ - + ((x&0x00F00000LU)?32:0) \ - + ((x&0x0F000000LU)?64:0) \ - + ((x&0xF0000000LU)?128:0) -#define B8(d) ((unsigned char)B8__(HEX__(d))) - -/* Decode logic, value and mask. */ -#define DEC_ADD {B8(00000000), B8(00110001)} -#define DEC_SUB {B8(00000001), B8(00110001)} -#define DEC_AND {B8(00100001), B8(00110101)} -#define DEC_XOR {B8(00100010), B8(00110111)} -#define DEC_OR {B8(00100000), B8(00110111)} -#define DEC_BIT {B8(00100100), B8(00111111)} -#define DEC_MSR {B8(00100101), B8(00111111)} - -#define DEC_BARREL {B8(00010001), B8(00110111)} -#define DEC_MUL {B8(00010000), B8(00110111)} -#define DEC_DIV {B8(00010010), B8(00110111)} -#define DEC_FPU {B8(00010110), B8(00111111)} - -#define DEC_LD {B8(00110000), B8(00110100)} -#define DEC_ST {B8(00110100), B8(00110100)} -#define DEC_IMM {B8(00101100), B8(00111111)} - -#define DEC_BR {B8(00100110), B8(00110111)} -#define DEC_BCC {B8(00100111), B8(00110111)} -#define DEC_RTS {B8(00101101), B8(00111111)} - -#define DEC_STREAM {B8(00010011), B8(00110111)} - -#endif diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 2c87d671ae..8f69ca50b2 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -24,7 +24,6 @@ #include "exec/exec-all.h" #include "tcg/tcg-op.h" #include "exec/helper-proto.h" -#include "microblaze-decode.h" #include "exec/cpu_ldst.h" #include "exec/helper-gen.h" #include "exec/translator.h" @@ -65,13 +64,7 @@ typedef struct DisasContext { bool r0_set; =20 /* Decoder. */ - int type_b; - uint32_t ir; uint32_t ext_imm; - uint8_t opcode; - uint8_t rd, ra, rb; - uint16_t imm; - unsigned int cpustate_changed; unsigned int tb_flags; unsigned int tb_flags_to_set; @@ -82,8 +75,6 @@ typedef struct DisasContext { =20 /* Immediate branch-taken destination, or -1 for indirect. */ uint32_t jmp_dest; - - int abort_at_next_insn; } DisasContext; =20 static int typeb_imm(DisasContext *dc, int x) @@ -184,21 +175,6 @@ static bool trap_userspace(DisasContext *dc, bool cond) return cond_user; } =20 -static int32_t dec_alu_typeb_imm(DisasContext *dc) -{ - tcg_debug_assert(dc->type_b); - return typeb_imm(dc, (int16_t)dc->imm); -} - -static inline TCGv_i32 *dec_alu_op_b(DisasContext *dc) -{ - if (dc->type_b) { - tcg_gen_movi_i32(cpu_imm, dec_alu_typeb_imm(dc)); - return &cpu_imm; - } - return &cpu_R[dc->rb]; -} - static TCGv_i32 reg_for_read(DisasContext *dc, int reg) { if (likely(reg !=3D 0)) { @@ -1549,16 +1525,6 @@ static void do_rte(DisasContext *dc) dc->tb_flags &=3D ~DRTE_FLAG; } =20 -static void dec_null(DisasContext *dc) -{ - if (trap_illegal(dc, true)) { - return; - } - qemu_log_mask(LOG_GUEST_ERROR, "unknown insn pc=3D%x opc=3D%x\n", - (uint32_t)dc->base.pc_next, dc->opcode); - dc->abort_at_next_insn =3D 1; -} - /* Insns connected to FSL or AXI stream attached devices. */ static bool do_get(DisasContext *dc, int rd, int rb, int imm, int ctrl) { @@ -1624,40 +1590,6 @@ static bool trans_putd(DisasContext *dc, arg_putd *a= rg) return do_put(dc, arg->ra, arg->rb, 0, arg->ctrl); } =20 -static struct decoder_info { - struct { - uint32_t bits; - uint32_t mask; - }; - void (*dec)(DisasContext *dc); -} decinfo[] =3D { - {{0, 0}, dec_null} -}; - -static void old_decode(DisasContext *dc, uint32_t ir) -{ - int i; - - dc->ir =3D ir; - - /* bit 2 seems to indicate insn type. */ - dc->type_b =3D ir & (1 << 29); - - dc->opcode =3D EXTRACT_FIELD(ir, 26, 31); - dc->rd =3D EXTRACT_FIELD(ir, 21, 25); - dc->ra =3D EXTRACT_FIELD(ir, 16, 20); - dc->rb =3D EXTRACT_FIELD(ir, 11, 15); - dc->imm =3D EXTRACT_FIELD(ir, 0, 15); - - /* Large switch for all insns. */ - for (i =3D 0; i < ARRAY_SIZE(decinfo); i++) { - if ((dc->opcode & decinfo[i].mask) =3D=3D decinfo[i].bits) { - decinfo[i].dec(dc); - break; - } - } -} - static void mb_tr_init_disas_context(DisasContextBase *dcb, CPUState *cs) { DisasContext *dc =3D container_of(dcb, DisasContext, base); @@ -1667,7 +1599,6 @@ static void mb_tr_init_disas_context(DisasContextBase= *dcb, CPUState *cs) dc->cpu =3D cpu; dc->tb_flags =3D dc->base.tb->flags; dc->cpustate_changed =3D 0; - dc->abort_at_next_insn =3D 0; dc->ext_imm =3D dc->base.tb->cs_base; dc->r0 =3D NULL; dc->r0_set =3D false; @@ -1724,7 +1655,7 @@ static void mb_tr_translate_insn(DisasContextBase *dc= b, CPUState *cs) =20 ir =3D cpu_ldl_code(env, dc->base.pc_next); if (!decode(dc, ir)) { - old_decode(dc, ir); + trap_illegal(dc, true); } =20 if (dc->r0) { @@ -1764,8 +1695,6 @@ static void mb_tr_tb_stop(DisasContextBase *dcb, CPUS= tate *cs) { DisasContext *dc =3D container_of(dcb, DisasContext, base); =20 - assert(!dc->abort_at_next_insn); - if (dc->base.is_jmp =3D=3D DISAS_NORETURN) { /* We have already exited the TB. */ return; --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891746; cv=none; d=zohomail.com; s=zohoarc; b=MqirVc0UT2n8kcUzv2kRjQIPKdjQtQ+wVfFsnTPi4ygg2VpXtPEkfBkarlvqtVnwR5BWZc8HYDPEEieEoveCKEiz5cIuKT64CZ1kGFWmskUdPzNedCDFhAtvlxIUckJI0b/T06yNiFsYce4p9m5HZVCgVuiuoGjbmboA+nzbMUA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891746; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=NFMrG515781fPkhuV8GqRES+jyHXpSFNJfiQ1prWFi4=; b=GruqA/+rzq1YxRZOdhm2qmOWApv6nH55V7yK5msrYehZzix7aneYHlXIu+/AAZvsXxlWfKkuNwhO3VCARKDhMpmK3HlPmCXKm7G1+RrAYdVlJJp04NxlWYhwd1DcDxbvao3moWhjDmlX+mA1kGF62GIzLZ/fPbhuYvQpYhlavjU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891746603463.90489046416144; Mon, 31 Aug 2020 09:35:46 -0700 (PDT) Received: from localhost ([::1]:33456 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmmX-00062d-RU for importer@patchew.org; Mon, 31 Aug 2020 12:35:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34860) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmLS-0006sj-R1 for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:46 -0400 Received: from mail-pl1-x642.google.com ([2607:f8b0:4864:20::642]:46618) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmLR-0006Bh-3m for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:46 -0400 Received: by mail-pl1-x642.google.com with SMTP id k13so3225923plk.13 for ; Mon, 31 Aug 2020 09:07:44 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=NFMrG515781fPkhuV8GqRES+jyHXpSFNJfiQ1prWFi4=; b=Eq2G/QjMwh1Lud9/DfzphAKW/OOoMT9096Ls4XhI0plD82Ti/L9FE6SxHlUEzXllmo OAZqmCFsmiFpU3PTjLwvduWtSMh4gxca9SPyA6Qastx2hZgkgFF2KO03ybOMCKxNO+xM w4hQ/YaBPYADuNKL962McDeBV9+bnNjt4V8R7uGv3uUWNL8GZgPVu7SgAzSPV41fdDP2 LDs69udQczV0lIic5dEWKggEE4cWkd/G+Nt5tkYHz6rjueBbQcX1a1oQxB9+epP3YOwF TXMQCgd+7UQOzrljVY4co3dQbGKuB4kdxw0whpm3FRIYBdS6OJ6XmnAE+9DlKMiVHa74 0vqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=NFMrG515781fPkhuV8GqRES+jyHXpSFNJfiQ1prWFi4=; b=nUS0oTFDaWVNTH52Ut4x5kmKD+u84mVX37HmZnLzyhSVess2SAaAy/KveS4RjHqbNy RLvSpt1erv9KFyM4YqgeOZiE3QssikgEUH2qlkeuS24pamwqq9nTuKThvyOdCCdwMg0i waQC4pXcifd3UpAJn4IE0J98c7x4FhptEzfKHHBP5/Jg9KPRecbMb7v4KAyMRuQJnzj6 UC/TnGMVRPqbINnxiQdxlCh4ta5Xam7imabZBAtoGkCSHuMK+cnym5GT1DUFcO1QOneO X/sk666TX7Jx6fOGcfM3Wg8Ki4JLPYaHyTJDopo6tLQQ2C1nKy0DTGXt1mJVCHCL9Mo/ a5jw== X-Gm-Message-State: AOAM5308vdKXFhVTXNpDFeqe5+79L7PdVm8YF7fzAOarw9ROx67W/zH1 YSevufG6bav+ofiR6tBl7KSjF4v5RqnLmA== X-Google-Smtp-Source: ABdhPJwQnPRqEYc24API2DgEvxKw9MmSElFjqQ5Tm1LLagQjvxcSIPH7SzbHM+hq906YM/LH42pjVg== X-Received: by 2002:a17:90a:2b88:: with SMTP id u8mr76295pjd.37.1598890063437; Mon, 31 Aug 2020 09:07:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 74/76] target/microblaze: Remove cpu_R[0] Date: Mon, 31 Aug 2020 09:05:59 -0700 Message-Id: <20200831160601.833692-75-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::642; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x642.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Do not initialize cpu_R[0], as this should be totally unused. The cpu_for_read and cpu_for_write functions use a local temp. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/translate.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 8f69ca50b2..8c287457a9 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -1842,7 +1842,13 @@ void mb_tcg_init(void) static const struct { TCGv_i32 *var; int ofs; char name[8]; } i32s[] =3D { - R(0), R(1), R(2), R(3), R(4), R(5), R(6), R(7), + /* + * Note that r0 is handled specially in reg_for_read + * and reg_for_write. Nothing should touch cpu_R[0]. + * Leave that element NULL, which will assert quickly + * inside the tcg generator functions. + */ + R(1), R(2), R(3), R(4), R(5), R(6), R(7), R(8), R(9), R(10), R(11), R(12), R(13), R(14), R(15), R(16), R(17), R(18), R(19), R(20), R(21), R(22), R(23), R(24), R(25), R(26), R(27), R(28), R(29), R(30), R(31), --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598892208; cv=none; d=zohomail.com; s=zohoarc; b=c4tFvIfFktEpb1rewNxkL8EHYjvhFB67obqMdN0ZmW80Fm3UJBj5T2+5jfEf23jryPgqEzCTXnACmYKBaQvvMKj8mnNO/VJrzZo+tEJudFXZniE/FVHFiKgKN9QlEPXJTNKeN8GRkVKFM8EfMY3IquL7f8LNU2oxvBuzsAWzRbw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598892208; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=b/gvE9gRrBdUc3JON5McXpRJVtB1reGxqOBY4wQzJOY=; b=RiYBGH9BlB7mnTHf7GAD1xp2A1q0e8rCeHxyi3fMyFktTUbS0G5fxDiDbfKxZNm7M8nk4oouDCc+bahQDUSkt83YIiktBF6RgCfMQHAYjDHyHOBR2ulJ7l0ja0uBv7Zwt41Gfo+5sARa+9f8BO26LtM51f0ZzcT3Te4PTQq/xCc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598892208300218.3179493043118; Mon, 31 Aug 2020 09:43:28 -0700 (PDT) Received: from localhost ([::1]:35796 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmtz-000239-Dj for importer@patchew.org; Mon, 31 Aug 2020 12:43:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34872) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmLU-0006wL-4F for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:48 -0400 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]:52138) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmLS-0006By-C4 for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:47 -0400 Received: by mail-pj1-x1035.google.com with SMTP id ds1so32988pjb.1 for ; Mon, 31 Aug 2020 09:07:45 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=b/gvE9gRrBdUc3JON5McXpRJVtB1reGxqOBY4wQzJOY=; b=oTjhePcCcl59mZVSlQQ5cEys26p1YinKmHKROoaM8d8m8w/dvrW/3nDg2HcxHJRL8J mKL+IJy8VvfJ6owhVbuFAyo1MENokHLKRzGY2oSQVWj1fLjph86FMgK/D3B+R+SnSAsQ tijzlIzI7L40DwaSUdE8I1qWZY1/ljQi63npgdg2QRkw5iIatqKnFzisdSsYkkMlJARY 3bvD3Ke7WIwGe6uAusNHsk3h2Ei7T67PKilnsaQ2n4OdphalUIyQP+MN6wwJhLNVaLxB vyCvA1Y0s8CIjFY5xTPLSk3zNqzp75yFE+Kv9yuHSivKwl4mS/ModOjibn4ANN4bgwnO LP8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=b/gvE9gRrBdUc3JON5McXpRJVtB1reGxqOBY4wQzJOY=; b=Qp2oj6i1L7BqqoCskVD7zF+E/uJfuDPIvYK+md9hvVc2y24rlFRmB5yqrvsyqM9YTl reO4VlDvyQ44zxOSeONIo+EX0T0muFKND0ZvF3eNI83uh/q6uJ4ZxbnPQXfA/zue/AMp 3lnSNd/85vWdZf8Y/kfAG66lDu4KbxnA1763AKCE58hAlDtmELq0Kwz8UQrLT0u5/uYe BldAnG7n+OtBVuVBKI+VJwAGNRNBzQcQs/VODr+mGPe6BZ5BzYWZ0Gx7xN8WSTXjoqnn PeEJ8EKK4bOgnprdP9FPhbRwIe/mnrfg8ttAC62gM5DgXctZ4XLyysi3AYPZL7IUy/6w GY+A== X-Gm-Message-State: AOAM531wUCEIFQWNfvZL0oVZQin1IPcueYLpKL4SZn/1LiZiKTCE2ofW 1EGhWeWxc1ThT/YeJFB7FU7vb+/cEbcZqw== X-Google-Smtp-Source: ABdhPJw1zO/15yWVZQHzg82Co05z/6pC52SDbb7r0jrz85WQNO3U7UKbh0WlxfAuIVzsImdIk1o1iw== X-Received: by 2002:a17:90b:4b89:: with SMTP id lr9mr96294pjb.190.1598890064662; Mon, 31 Aug 2020 09:07:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 75/76] target/microblaze: Add flags markup to some helpers Date: Mon, 31 Aug 2020 09:06:00 -0700 Message-Id: <20200831160601.833692-76-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1035.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The mmu_read, mmu_write, get, and put helpers do not touch the general registers, or any of the other variables managed by tcg. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/helper.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/target/microblaze/helper.h b/target/microblaze/helper.h index 3980fba797..f740835fcb 100644 --- a/target/microblaze/helper.h +++ b/target/microblaze/helper.h @@ -21,11 +21,11 @@ DEF_HELPER_FLAGS_3(fcmp_ge, TCG_CALL_NO_WG, i32, env, i= 32, i32) =20 DEF_HELPER_FLAGS_2(pcmpbf, TCG_CALL_NO_RWG_SE, i32, i32, i32) #if !defined(CONFIG_USER_ONLY) -DEF_HELPER_3(mmu_read, i32, env, i32, i32) -DEF_HELPER_4(mmu_write, void, env, i32, i32, i32) +DEF_HELPER_FLAGS_3(mmu_read, TCG_CALL_NO_RWG, i32, env, i32, i32) +DEF_HELPER_FLAGS_4(mmu_write, TCG_CALL_NO_RWG, void, env, i32, i32, i32) #endif =20 DEF_HELPER_FLAGS_2(stackprot, TCG_CALL_NO_WG, void, env, tl) =20 -DEF_HELPER_2(get, i32, i32, i32) -DEF_HELPER_3(put, void, i32, i32, i32) +DEF_HELPER_FLAGS_2(get, TCG_CALL_NO_RWG, i32, i32, i32) +DEF_HELPER_FLAGS_3(put, TCG_CALL_NO_RWG, void, i32, i32, i32) --=20 2.25.1 From nobody Mon Feb 9 16:03:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1598891825; cv=none; d=zohomail.com; s=zohoarc; b=k4uOV0/VNp0AMU10Gdxl2+qCuek5/sgYwXV0KCBmID+FtL7RIl8nY2DeNt0ek5K3XsWwGe6CYUWkfbtLFZcW+ZiXb6Q99ycuAiEB6WI8dwcdHwoqghAUqb6ppzXJbtFkbnbLkE+Msrfqah2v2Hw952264cuIzsuC17YF/M1wFLE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598891825; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=1WdUOJWGCdcV9QIGGOS0y70LT85NGsncqmvGoqTi8AE=; b=BqM19UtwoXYM39rfs94tGTRiQs/idKvMH1me5CJfsKRVlUzo5fkXVIQmkO+VBjqbrhdcDExvGAgYzrFxRjOgSlSRrEIBidT/6kAqOub3RDDWHJYD2TqaDP1df7tOtDkMDYjMwh9xWzj+Y5ra4SSuDKrqdZScuvOvIFn+Re4WJEw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) 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 (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598891825580384.08967992215105; Mon, 31 Aug 2020 09:37:05 -0700 (PDT) Received: from localhost ([::1]:39830 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kCmno-0000CT-IE for importer@patchew.org; Mon, 31 Aug 2020 12:37:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34886) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kCmLW-00072n-Mx for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:50 -0400 Received: from mail-pg1-x544.google.com ([2607:f8b0:4864:20::544]:34142) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kCmLU-0006CK-OU for qemu-devel@nongnu.org; Mon, 31 Aug 2020 12:07:50 -0400 Received: by mail-pg1-x544.google.com with SMTP id i10so846115pgk.1 for ; Mon, 31 Aug 2020 09:07:48 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id gt13sm17218pjb.43.2020.08.31.09.07.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 09:07:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=1WdUOJWGCdcV9QIGGOS0y70LT85NGsncqmvGoqTi8AE=; b=e69b8CsJeYkWnBKvekJVHEOqMk9y1E4fM/sL+A12hFC5kyXMEE4NYTB9HkSwooL6Z1 tuIJCTBcW9Fn6CF1UGzNux4+Q/kpIcCjBW0025jOvaepFCcRdpnuDsh8/asu0GrEj+Zx CjW6ji916SXGhWbeHNjoQLdICCwiNcSRVrI7WJmtJeOb8/yeKu0V8EeRTlX2fRv/aU3P GjC4kfEMqWK/f/reTysvW86vO1n7PJ0sLRUGOdzCppqiLBWZRbYR2lSB7GYvxurAqKQ4 IYWCWsI2YI+QesbKQkCRdiV4g3u3vPdWJqignyDN9nCS0jYrNiBYoWpzl4882ji7bDkS G+XQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=1WdUOJWGCdcV9QIGGOS0y70LT85NGsncqmvGoqTi8AE=; b=OoDKvVwxZt5PukGYZMMWA7E0RI16UHW4swXM+VovC2pHcOQNxGIYoIIAXOPjsDPwfq fMGerLys+PvZ7Bv3Ao3qcraMvHkV66HzDDQcyW5btw6IYzfRNBIJ8uG57vKh5oHVGG8r gxFXAj4rixH/zJ/5ZDduCpnAqDfJ4WeLcSCM/mLaAzc6XMKpZ0NdQdMrE2uIv0Q7NuHN sThQ8CG5K8pFj9y+yLvumFr/CvILSDsFyhFht4chUH4jvIEOqnBMsOoxPaNeCsAvMv/n t6ssf/DMF/uLTCSUcpYCC8tGLnV/LGYR8AX9iMdKP3kaovJoko77Dy3XX8Gwy1tQtT90 eMjA== X-Gm-Message-State: AOAM532lPc5eQgWuXdmCx8reWTLbRaTH54jBY3pK4K43uh/FV3wJL3O4 pRYYNqHW+lb+//xKc+x7XtWtYzcHWGXGxA== X-Google-Smtp-Source: ABdhPJzFbcohSmZKJviXBgQG6bENMT3+OcH0MDMKGiZL7tgmnD5bsreHKmqLzefXolvheZu9Ev9WYA== X-Received: by 2002:a65:6882:: with SMTP id e2mr1803507pgt.290.1598890065867; Mon, 31 Aug 2020 09:07:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 76/76] target/microblaze: Reduce linux-user address space to 32-bit Date: Mon, 31 Aug 2020 09:06:01 -0700 Message-Id: <20200831160601.833692-77-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200831160601.833692-1-richard.henderson@linaro.org> References: <20200831160601.833692-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::544; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x544.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" User-space programs cannot use the 64-bit lwea/swea instructions. We can improve code generation and runtime by restricting the user-only address space to 32-bit. Tested-by: Edgar E. Iglesias Reviewed-by: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target/microblaze/cpu-param.h | 15 +++++++++++++++ target/microblaze/cpu.h | 2 +- target/microblaze/helper.c | 4 ++-- target/microblaze/translate.c | 28 +++++++++++++++++++++++++++- 4 files changed, 45 insertions(+), 4 deletions(-) diff --git a/target/microblaze/cpu-param.h b/target/microblaze/cpu-param.h index 4abbc62d50..4d8297fa94 100644 --- a/target/microblaze/cpu-param.h +++ b/target/microblaze/cpu-param.h @@ -8,9 +8,24 @@ #ifndef MICROBLAZE_CPU_PARAM_H #define MICROBLAZE_CPU_PARAM_H 1 =20 +/* + * While system mode can address up to 64 bits of address space, + * this is done via the lea/sea instructions, which are system-only + * (as they also bypass the mmu). + * + * We can improve the user-only experience by only exposing 32 bits + * of address space. + */ +#ifdef CONFIG_USER_ONLY +#define TARGET_LONG_BITS 32 +#define TARGET_PHYS_ADDR_SPACE_BITS 32 +#define TARGET_VIRT_ADDR_SPACE_BITS 32 +#else #define TARGET_LONG_BITS 64 #define TARGET_PHYS_ADDR_SPACE_BITS 64 #define TARGET_VIRT_ADDR_SPACE_BITS 64 +#endif + /* FIXME: MB uses variable pages down to 1K but linux only uses 4k. */ #define TARGET_PAGE_BITS 12 #define NB_MMU_MODES 3 diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index 4298f242a6..d11b6fa995 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -242,7 +242,7 @@ struct CPUMBState { uint32_t pc; uint32_t msr; /* All bits of MSR except MSR[C] and MSR[CC] */ uint32_t msr_c; /* MSR[C], in low bit; other bits must be 0 */ - uint64_t ear; + target_ulong ear; uint32_t esr; uint32_t fsr; uint32_t btr; diff --git a/target/microblaze/helper.c b/target/microblaze/helper.c index 1667822fb7..48547385b0 100644 --- a/target/microblaze/helper.c +++ b/target/microblaze/helper.c @@ -303,8 +303,8 @@ void mb_cpu_do_unaligned_access(CPUState *cs, vaddr add= r, iflags =3D cpu->env.iflags; =20 qemu_log_mask(CPU_LOG_INT, - "Unaligned access addr=3D" TARGET_FMT_lx - " pc=3D%x iflags=3D%x\n", addr, cpu->env.pc, iflags); + "Unaligned access addr=3D" TARGET_FMT_lx " pc=3D%x iflag= s=3D%x\n", + (target_ulong)addr, cpu->env.pc, iflags); =20 esr =3D ESR_EC_UNALIGNED_DATA; if (likely(iflags & ESR_ESS_FLAG)) { diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 8c287457a9..a377818b5e 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -687,6 +687,7 @@ static TCGv compute_ldst_addr_typeb(DisasContext *dc, i= nt ra, int imm) return ret; } =20 +#ifndef CONFIG_USER_ONLY static TCGv compute_ldst_addr_ea(DisasContext *dc, int ra, int rb) { int addr_size =3D dc->cpu->cfg.addr_size; @@ -712,6 +713,7 @@ static TCGv compute_ldst_addr_ea(DisasContext *dc, int = ra, int rb) } return ret; } +#endif =20 static void record_unaligned_ess(DisasContext *dc, int rd, MemOp size, bool store) @@ -776,8 +778,12 @@ static bool trans_lbuea(DisasContext *dc, arg_typea *a= rg) if (trap_userspace(dc, true)) { return true; } +#ifdef CONFIG_USER_ONLY + return true; +#else TCGv addr =3D compute_ldst_addr_ea(dc, arg->ra, arg->rb); return do_load(dc, arg->rd, addr, MO_UB, MMU_NOMMU_IDX, false); +#endif } =20 static bool trans_lbui(DisasContext *dc, arg_typeb *arg) @@ -803,8 +809,12 @@ static bool trans_lhuea(DisasContext *dc, arg_typea *a= rg) if (trap_userspace(dc, true)) { return true; } +#ifdef CONFIG_USER_ONLY + return true; +#else TCGv addr =3D compute_ldst_addr_ea(dc, arg->ra, arg->rb); return do_load(dc, arg->rd, addr, MO_TEUW, MMU_NOMMU_IDX, false); +#endif } =20 static bool trans_lhui(DisasContext *dc, arg_typeb *arg) @@ -830,8 +840,12 @@ static bool trans_lwea(DisasContext *dc, arg_typea *ar= g) if (trap_userspace(dc, true)) { return true; } +#ifdef CONFIG_USER_ONLY + return true; +#else TCGv addr =3D compute_ldst_addr_ea(dc, arg->ra, arg->rb); return do_load(dc, arg->rd, addr, MO_TEUL, MMU_NOMMU_IDX, false); +#endif } =20 static bool trans_lwi(DisasContext *dc, arg_typeb *arg) @@ -910,8 +924,12 @@ static bool trans_sbea(DisasContext *dc, arg_typea *ar= g) if (trap_userspace(dc, true)) { return true; } +#ifdef CONFIG_USER_ONLY + return true; +#else TCGv addr =3D compute_ldst_addr_ea(dc, arg->ra, arg->rb); return do_store(dc, arg->rd, addr, MO_UB, MMU_NOMMU_IDX, false); +#endif } =20 static bool trans_sbi(DisasContext *dc, arg_typeb *arg) @@ -937,8 +955,12 @@ static bool trans_shea(DisasContext *dc, arg_typea *ar= g) if (trap_userspace(dc, true)) { return true; } +#ifdef CONFIG_USER_ONLY + return true; +#else TCGv addr =3D compute_ldst_addr_ea(dc, arg->ra, arg->rb); return do_store(dc, arg->rd, addr, MO_TEUW, MMU_NOMMU_IDX, false); +#endif } =20 static bool trans_shi(DisasContext *dc, arg_typeb *arg) @@ -964,8 +986,12 @@ static bool trans_swea(DisasContext *dc, arg_typea *ar= g) if (trap_userspace(dc, true)) { return true; } +#ifdef CONFIG_USER_ONLY + return true; +#else TCGv addr =3D compute_ldst_addr_ea(dc, arg->ra, arg->rb); return do_store(dc, arg->rd, addr, MO_TEUL, MMU_NOMMU_IDX, false); +#endif } =20 static bool trans_swi(DisasContext *dc, arg_typeb *arg) @@ -1818,7 +1844,7 @@ void mb_cpu_dump_state(CPUState *cs, FILE *f, int fla= gs) } =20 qemu_fprintf(f, "\nesr=3D0x%04x fsr=3D0x%02x btr=3D0x%08x edr=3D0x%x\n" - "ear=3D0x%016" PRIx64 " slr=3D0x%x shr=3D0x%x\n", + "ear=3D0x" TARGET_FMT_lx " slr=3D0x%x shr=3D0x%x\n", env->esr, env->fsr, env->btr, env->edr, env->ear, env->slr, env->shr); =20 --=20 2.25.1