From nobody Tue May 7 05:56:19 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1677544693; cv=none; d=zohomail.com; s=zohoarc; b=nnrfNLxN1RI+vW7U+RaSb/jmUswn3o/Cf5mKdMjevdE8k+ztl6fzR3NzeNxoLg02OCvg+AhzAV+Qf4gLGc/6tIboxF6NUjGVcA4ZjDgZMuc1nUP7ncpGYxv+Y9MBEx/QReg/PFt0RgWYnX3QM1cqp/IC6DLm0rTWNqMNwxzwxWs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1677544693; 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=q4xxvNNq9D11d2cHOwhM2OgWfJwvQhuk5jBDpKihxi4=; b=ZzjzNp9o5mQKc3HezDnuZhdGzrYHDBXJ/cr+iK1UZBYjhniQKVF3FyeYMzFgmj5yjnbze9+l3dXmBr55kAbJiOYAAtB0wpAeFePsgR8CWhk9m3mouF+DdyOZkDR1Var2Aj9yEqxQ32iuD73Am5ZrSeKC8htJ6WlAsTP7kk/wknE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1677544693820735.7958483520595; Mon, 27 Feb 2023 16:38:13 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pWnzf-0006SN-4U; Mon, 27 Feb 2023 19:37:23 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pWnzd-0006Qd-AH for qemu-devel@nongnu.org; Mon, 27 Feb 2023 19:37:21 -0500 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pWnzb-0001XI-Fe for qemu-devel@nongnu.org; Mon, 27 Feb 2023 19:37:21 -0500 Received: by mail-pj1-x1036.google.com with SMTP id oj5so4083611pjb.5 for ; Mon, 27 Feb 2023 16:37:19 -0800 (PST) Received: from stoup.. (rrcs-173-198-77-218.west.biz.rr.com. [173.198.77.218]) by smtp.gmail.com with ESMTPSA id p19-20020a1709028a9300b0019cec7d88c3sm5192651plo.236.2023.02.27.16.37.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Feb 2023 16:37:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=q4xxvNNq9D11d2cHOwhM2OgWfJwvQhuk5jBDpKihxi4=; b=ze2l0GJ1BJATmCRIXOfRHppbNHxsT0HPiXQI7hw6Ow5iJQqyguT1nORQXuaxzQDokU B+YvXMSrWZi41Yg9zArlfaPPjwR8lPDhQLp2n57duPN39gKySJ3nldu6RHoCz+ddbjfc IF2PlZ+7UKVwitEHBKh+xWDgPQFCMMsp0SPWD76+0J/2ppViJminzoh1h5+2IPJmzRmP KJ/mnmxEvO9KPCww0LUDlh/PzLqxx3DNMyDd3SyblFcEVYzZmlJBaZNkoS5cQDW5CTa4 i99SlENejdZeu6uQa26sPjTHoaOrwAjkmGM+gZqjlVt6KhnMsR+8T++KKGSMKIiGbZmj QUIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=q4xxvNNq9D11d2cHOwhM2OgWfJwvQhuk5jBDpKihxi4=; b=DGtDsV06Y769+A4WiVArBZQUoS1Sma1C+IeEAxv4+1KJ+Awzs6EI+stc2WMIyHToB/ V5djWt3B4i0cbcVxeFGTzU9DtVbj6epVqq0aB/LwvOpSWLdUU0uS8UYMGGf+dQKo5yRA 6LgVS684wJ4XGtCITn/FOXkCG1YVJfEl2V0yaSb+p3VwEyQaGkHTC5KWkMLb2TfBLJKC UZILn61ARDy6oofHrOxYfWpCLw7TIPX9b3Z/fRdY6jl7lLH6Ik4Vrian95kdY/2S53gg 9BNuGKzjroqr1PhhmucqUzuHE5yYCdt1U50WoGexfkaBJr3vQxGMu64r/uTfsOB9ST30 yJuw== X-Gm-Message-State: AO0yUKWPwrpBy4vyKI4ivvpsuLPJVp7X39egHc6tzUKWv7uii80SxYFh N/gFiQoKGqALOmiG1Ouyx3ApJdXeOXwU3J3ltvk= X-Google-Smtp-Source: AK7set9moNBzltlY6F876/ChdDP9KTgfjLP1IkkCGSApPLdV1CoSEuE6wA8pTqlCmRW79fXKYV6eNA== X-Received: by 2002:a17:903:1386:b0:19c:f18d:96b6 with SMTP id jx6-20020a170903138600b0019cf18d96b6mr617218plb.36.1677544637966; Mon, 27 Feb 2023 16:37:17 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 1/3] target/arm: Avoid splitting Zregs across lines in dump Date: Mon, 27 Feb 2023 14:37:11 -1000 Message-Id: <20230228003713.861168-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230228003713.861168-1-richard.henderson@linaro.org> References: <20230228003713.861168-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+importer2=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-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=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1677544695298100003 Content-Type: text/plain; charset="utf-8" Allow the line length to extend to 548 columns. While annoyingly wide, it's still less confusing than the continuations we print. Also, the default VL used by Linux (and max for A64FX) uses only 140 columns. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/cpu.c | 36 ++++++++++++++---------------------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 5182ed0c91..f1f454e7a0 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -953,7 +953,7 @@ static void aarch64_cpu_dump_state(CPUState *cs, FILE *= f, int flags) ARMCPU *cpu =3D ARM_CPU(cs); CPUARMState *env =3D &cpu->env; uint32_t psr =3D pstate_read(env); - int i; + int i, j; int el =3D arm_current_el(env); const char *ns_status; bool sve; @@ -1012,7 +1012,7 @@ static void aarch64_cpu_dump_state(CPUState *cs, FILE= *f, int flags) } =20 if (sve) { - int j, zcr_len =3D sve_vqm1_for_el(env, el); + int zcr_len =3D sve_vqm1_for_el(env, el); =20 for (i =3D 0; i <=3D FFR_PRED_NUM; i++) { bool eol; @@ -1052,32 +1052,24 @@ static void aarch64_cpu_dump_state(CPUState *cs, FI= LE *f, int flags) } } =20 - for (i =3D 0; i < 32; i++) { - if (zcr_len =3D=3D 0) { + if (zcr_len =3D=3D 0) { + /* + * With vl=3D16, there are only 37 columns per register, + * so output two registers per line. + */ + for (i =3D 0; i < 32; i++) { qemu_fprintf(f, "Z%02d=3D%016" PRIx64 ":%016" PRIx64 "%s", i, env->vfp.zregs[i].d[1], env->vfp.zregs[i].d[0], i & 1 ? "\n" : " "); - } else if (zcr_len =3D=3D 1) { - qemu_fprintf(f, "Z%02d=3D%016" PRIx64 ":%016" PRIx64 - ":%016" PRIx64 ":%016" PRIx64 "\n", - i, env->vfp.zregs[i].d[3], env->vfp.zregs[i].= d[2], - env->vfp.zregs[i].d[1], env->vfp.zregs[i].d[0= ]); - } else { + } + } else { + for (i =3D 0; i < 32; i++) { + qemu_fprintf(f, "Z%02d=3D", i); for (j =3D zcr_len; j >=3D 0; j--) { - bool odd =3D (zcr_len - j) % 2 !=3D 0; - if (j =3D=3D zcr_len) { - qemu_fprintf(f, "Z%02d[%x-%x]=3D", i, j, j - 1); - } else if (!odd) { - if (j > 0) { - qemu_fprintf(f, " [%x-%x]=3D", j, j - 1); - } else { - qemu_fprintf(f, " [%x]=3D", j); - } - } qemu_fprintf(f, "%016" PRIx64 ":%016" PRIx64 "%s", env->vfp.zregs[i].d[j * 2 + 1], - env->vfp.zregs[i].d[j * 2], - odd || j =3D=3D 0 ? "\n" : ":"); + env->vfp.zregs[i].d[j * 2 + 0], + j ? ":" : "\n"); } } } --=20 2.34.1 From nobody Tue May 7 05:56:19 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1677544672; cv=none; d=zohomail.com; s=zohoarc; b=c7ZW23G7s8GWc5blCnGT/uodR9S5l2GUtmkQjYV4tK4s2BYMMWvWVKYxw91Xe2nZVd9NmxoN3QmaQ9pBjJsd+B1Kk7yan/75zXi4FsvnFfWkgESDUhppTmkCsaW5ABEWx/LVim6HKvIA1hB0aXCwV7TnYqzeLfjiM4yf1t6/mEA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1677544672; 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=ySb1mvjSXZ66e2yK3BcHGU3IqS6n9iUd4Z/aLHtfxkk=; b=aHjw2B40sMCixO6EUstSQb18iptsqZih61pUdSuodFS3cc82LtlvPKSVWFSaf/FuWy8NzrRd9gyjXzRWpEZtt/pLA3FzV1t4/lOtTai79+iWjpnlLpvN65oAQKhKUU5OKECgtjSSzBSXgIdf6QOcYtswcDjYk7BavDoSZtBNeik= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1677544672669833.6911626336504; Mon, 27 Feb 2023 16:37:52 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pWnzg-0006Sv-3s; Mon, 27 Feb 2023 19:37:24 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pWnze-0006RE-HJ for qemu-devel@nongnu.org; Mon, 27 Feb 2023 19:37:22 -0500 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pWnzc-0001XY-Je for qemu-devel@nongnu.org; Mon, 27 Feb 2023 19:37:21 -0500 Received: by mail-pl1-x62d.google.com with SMTP id y11so4570878plg.1 for ; Mon, 27 Feb 2023 16:37:20 -0800 (PST) Received: from stoup.. (rrcs-173-198-77-218.west.biz.rr.com. [173.198.77.218]) by smtp.gmail.com with ESMTPSA id p19-20020a1709028a9300b0019cec7d88c3sm5192651plo.236.2023.02.27.16.37.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Feb 2023 16:37:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ySb1mvjSXZ66e2yK3BcHGU3IqS6n9iUd4Z/aLHtfxkk=; b=YavU0Zk6UhmnvxJG1bZoCZUmPutdbySIKFxXEW3MkowWrvGRW5U5k886pN8h5MhXOq RHktwBnkenNfGO00sVi0uhttapKfNQYCoM8R1BLXsqDBBKUefftpifM0hKyBNIkcWYqi qb7nAVWZmtS2N2Sar2EOaqvITqJ/mac6GhM/v49IlBo4BKEHBueksDxo+5u7Tw+0xmpl UCGuXc8XkfCj1Cc0jvHXpPtcB3ARHA1KQ/oU5fGz4d86fi/DWeVzBwF4QtCw+Lq793RN sYIi2IaxIn3+GKhFog1UK8vrPQvjzHx+Zgdl1S9y/lo+VraVOeeV8AzsPUDJtV/AeBRY lsBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ySb1mvjSXZ66e2yK3BcHGU3IqS6n9iUd4Z/aLHtfxkk=; b=ddcSYLA7fAO7/39z5+ATYAnxZdyyZ19y9+cDxzhlT0mDN3xu7mDIL53tQCJcoFpO1n JUtrpnH/51BbowjGOO2btA+NwplvCWPNFdwSIyQUA7PQGPWa+RyvvYvY0VgxI0+m8LKh zJx2eymqawkIRCdy2cRowz36/cvqU/9HJBx1KVV+yOO4DG8WW/glItKOkCx5Ujf0KVah CKhuWdJWc2SmINOfLrdaNbodeXZo9vFPFus7CN6BjOX5MqVfiuBr+IBaJoLryLBe7FnV y1nLGZi060Hem3C9oChCZIuHmzgjLCdJgAIl5gqsQS+T9UdV6BdxvUk4GqBnwvL4FUaQ 2V6Q== X-Gm-Message-State: AO0yUKVY6iYEdfet8ZGPU9Sg21XmG5Cc+B4rLvubOWDMttsRvn52ghZ/ V0p/GFNhbe8ore+BkZcNky8tJVgQgZBD9YiK0zc= X-Google-Smtp-Source: AK7set+4cxUCW/Q0JmwX55miRpHgGAw7+UrOIYLCwgyIUTdAqABVI1MOpFYKLXuNZXJfbAkUgRNDaw== X-Received: by 2002:a17:903:234e:b0:19b:64bb:d546 with SMTP id c14-20020a170903234e00b0019b64bbd546mr1178025plh.18.1677544639241; Mon, 27 Feb 2023 16:37:19 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 2/3] target/arm: Dump ZA[] when active Date: Mon, 27 Feb 2023 14:37:12 -1000 Message-Id: <20230228003713.861168-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230228003713.861168-1-richard.henderson@linaro.org> References: <20230228003713.861168-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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62d.google.com 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=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1677544673440100001 Content-Type: text/plain; charset="utf-8" Always print each matrix row whole, one per line, so that we get the entire matrix in the proper shape. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/cpu.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/target/arm/cpu.c b/target/arm/cpu.c index f1f454e7a0..0e54e19b05 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -1080,6 +1080,24 @@ static void aarch64_cpu_dump_state(CPUState *cs, FIL= E *f, int flags) i, q[1], q[0], (i & 1 ? "\n" : " ")); } } + + if (cpu_isar_feature(aa64_sme, cpu) && + FIELD_EX64(env->svcr, SVCR, ZA) && + sme_exception_el(env, el) =3D=3D 0) { + int zcr_len =3D sve_vqm1_for_el_sm(env, el, true); + int svl =3D (zcr_len + 1) * 16; + int svl_lg10 =3D svl < 100 ? 2 : 3; + + for (i =3D 0; i < svl; i++) { + qemu_fprintf(f, "ZA[%0*d]=3D", svl_lg10, i); + for (j =3D zcr_len; j >=3D 0; --j) { + qemu_fprintf(f, "%016" PRIx64 ":%016" PRIx64 "%c", + env->zarray[i].d[2 * j + 1], + env->zarray[i].d[2 * j], + j ? ':' : '\n'); + } + } + } } =20 #else --=20 2.34.1 From nobody Tue May 7 05:56:19 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1677544695; cv=none; d=zohomail.com; s=zohoarc; b=fUQ+mbR63NNeIx9FiQ6L1q8sLgLaerN1qlgnUtF/LX6s21Arsn+ko5p72CAa+0UOKIVYJtQJq9KXZqDZPEnD5u0kepkXTzMyy3lQrlZMaki55smixtvVNxcpz7Ae5ugNuTW4+mMl56aIv3ZmC8BBZqf8fCFYxJ51w6e6BEkoXvs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1677544695; 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=hB69UJs6DFGk5NVC6xvA04dBA1lHgG7I+VN9AFpQB6Q=; b=DaFyVZ7N3fx8UXt4G8Rku2Tbe9Wc3Q8dQ+Kh0PECLGSfXdHBfhWdr1Q/YPuKzbjz41+is9OXOhRDMOZMbyxweZAdQHIpXOTDmI7bNHDVhgtM35Y3p+VSeKCMGJSUi+l2ZDObev/f0Hp/GP06HYMqvQUBPyYY1wIm0vyr7xOY7Uw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1677544695836206.55175534339855; Mon, 27 Feb 2023 16:38:15 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pWnzh-0006TK-Mt; Mon, 27 Feb 2023 19:37:25 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pWnzf-0006So-VB for qemu-devel@nongnu.org; Mon, 27 Feb 2023 19:37:23 -0500 Received: from mail-pj1-x1043.google.com ([2607:f8b0:4864:20::1043]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pWnze-0001Y3-1R for qemu-devel@nongnu.org; Mon, 27 Feb 2023 19:37:23 -0500 Received: by mail-pj1-x1043.google.com with SMTP id y15-20020a17090aa40f00b00237ad8ee3a0so7961447pjp.2 for ; Mon, 27 Feb 2023 16:37:21 -0800 (PST) Received: from stoup.. (rrcs-173-198-77-218.west.biz.rr.com. [173.198.77.218]) by smtp.gmail.com with ESMTPSA id p19-20020a1709028a9300b0019cec7d88c3sm5192651plo.236.2023.02.27.16.37.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Feb 2023 16:37:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hB69UJs6DFGk5NVC6xvA04dBA1lHgG7I+VN9AFpQB6Q=; b=M4nHd6R8BWQhOYrvrQ5nUXpXx6OfgqNQJ7qzcIVZzvk6JnPNYxVbd7QJxK1eBmQd4H DYARK/NUv6f+iqAqgmFZzOozKYUVDmfkr+0fXNUiSjl8hZVtGpDCNQKxWYnkPa8/UH94 acPvEfFYB+znDsoUeM8EK+jFnD/Es3fhLYFzjA+lTe2e1XQkrAiMtKlPy0f8LS8FGn7M Mp/p+FG8iOBWcagT5L0pOdSAw0mAlJ3bgpGiOt71yCLhRfIl8DF4yJMojMbstZRJOoTM 365oUlLhwbp/FHW2yt5eHSAe/x4vNM/5zPNIn7OQwUpkzB08zzGYvH2VkhX4SnM7y2+A Q3aA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hB69UJs6DFGk5NVC6xvA04dBA1lHgG7I+VN9AFpQB6Q=; b=QDfuQoo2HnTO4KwYeaSfjqITu9PTmPkTt/CZEeEIzkoJCPnxLuYetA6bDtwNTJp6Y9 4q72OxGJZO9iJKXd2tjUXUeW6JrG1wQpmoPzIJ4p3orUCSeH5Zyizaq64Cxa4Gmw8y3Y 13cssME7i8diuFozPaQhZdhG/opCgtwG4UzXfjJTNdPHgT8BmjJP2b3Y68kD5XAVW0cz Xsmud4VjtMYtmg2wfO/Oz2RlisWwwPgLQZeIbC/Al93fLFTs0krRkAuJlX1N7dRGids1 5KWmxLQZAa2eGGv6xZVXNsdEDZbwF03B6nt2ixzgpp7EMa0hZLUfyrd3U49ukQJbQpRy lIdA== X-Gm-Message-State: AO0yUKV/2Ao089kUE6nqJX+i2Ym+kL2Qmjj9JbUpQ13kdyeidFMi/SLX 4SvLPV4EFfN4DTf3MSaSeGdqNfKrhYuNnQ6cpJJlOQ== X-Google-Smtp-Source: AK7set/KRWB1nO47H7+TKi+G2IMv8MYdg87yPOxUso+9TDRgZAuW9hNY8ysWkY0RggTKcCsIPb7WcA== X-Received: by 2002:a17:903:1c1:b0:19d:20f7:dafa with SMTP id e1-20020a17090301c100b0019d20f7dafamr838651plh.43.1677544640562; Mon, 27 Feb 2023 16:37:20 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 3/3] target/arm: Support reading ZA[] from gdbstub Date: Mon, 27 Feb 2023 14:37:13 -1000 Message-Id: <20230228003713.861168-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230228003713.861168-1-richard.henderson@linaro.org> References: <20230228003713.861168-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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1043; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1043.google.com 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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1677544697282100007 Content-Type: text/plain; charset="utf-8" Mirror the existing support for SVE. Signed-off-by: Richard Henderson --- target/arm/cpu.h | 1 + target/arm/internals.h | 3 ++ target/arm/gdbstub.c | 8 ++++ target/arm/gdbstub64.c | 88 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 100 insertions(+) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 6e97a256fb..9971280577 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -869,6 +869,7 @@ struct ArchCPU { =20 DynamicGDBXMLInfo dyn_sysreg_xml; DynamicGDBXMLInfo dyn_svereg_xml; + DynamicGDBXMLInfo dyn_zareg_xml; DynamicGDBXMLInfo dyn_m_systemreg_xml; DynamicGDBXMLInfo dyn_m_secextreg_xml; =20 diff --git a/target/arm/internals.h b/target/arm/internals.h index a03748aa10..a27e5b3f28 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1343,12 +1343,15 @@ static inline uint64_t pmu_counter_mask(CPUARMState= *env) =20 #ifdef TARGET_AARCH64 int arm_gen_dynamic_svereg_xml(CPUState *cpu, int base_reg); +int arm_gen_dynamic_zareg_xml(CPUState *cpu, int base_reg); int aarch64_gdb_get_sve_reg(CPUARMState *env, GByteArray *buf, int reg); int aarch64_gdb_set_sve_reg(CPUARMState *env, uint8_t *buf, int reg); int aarch64_gdb_get_fpu_reg(CPUARMState *env, GByteArray *buf, int reg); int aarch64_gdb_set_fpu_reg(CPUARMState *env, uint8_t *buf, int reg); int aarch64_gdb_get_pauth_reg(CPUARMState *env, GByteArray *buf, int reg); int aarch64_gdb_set_pauth_reg(CPUARMState *env, uint8_t *buf, int reg); +int aarch64_gdb_get_za_reg(CPUARMState *env, GByteArray *buf, int reg); +int aarch64_gdb_set_za_reg(CPUARMState *env, uint8_t *buf, int reg); void arm_cpu_sve_finalize(ARMCPU *cpu, Error **errp); void arm_cpu_sme_finalize(ARMCPU *cpu, Error **errp); void arm_cpu_pauth_finalize(ARMCPU *cpu, Error **errp); diff --git a/target/arm/gdbstub.c b/target/arm/gdbstub.c index 3f799f5d05..60a9ade732 100644 --- a/target/arm/gdbstub.c +++ b/target/arm/gdbstub.c @@ -488,6 +488,8 @@ const char *arm_gdb_get_dynamic_xml(CPUState *cs, const= char *xmlname) return cpu->dyn_sysreg_xml.desc; } else if (strcmp(xmlname, "sve-registers.xml") =3D=3D 0) { return cpu->dyn_svereg_xml.desc; + } else if (strcmp(xmlname, "za-registers.xml") =3D=3D 0) { + return cpu->dyn_zareg_xml.desc; } else if (strcmp(xmlname, "arm-m-system.xml") =3D=3D 0) { return cpu->dyn_m_systemreg_xml.desc; #ifndef CONFIG_USER_ONLY @@ -524,6 +526,12 @@ void arm_cpu_register_gdb_regs_for_features(ARMCPU *cp= u) aarch64_gdb_set_pauth_reg, 4, "aarch64-pauth.xml", 0); } + if (cpu_isar_feature(aa64_sme, cpu)) { + int nreg =3D arm_gen_dynamic_zareg_xml(cs, cs->gdb_num_regs); + gdb_register_coprocessor(cs, aarch64_gdb_get_za_reg, + aarch64_gdb_set_za_reg, nreg, + "za-registers.xml", 0); + } #endif } else { if (arm_feature(env, ARM_FEATURE_NEON)) { diff --git a/target/arm/gdbstub64.c b/target/arm/gdbstub64.c index 3bee892fb7..9210d12c4e 100644 --- a/target/arm/gdbstub64.c +++ b/target/arm/gdbstub64.c @@ -244,6 +244,61 @@ int aarch64_gdb_set_pauth_reg(CPUARMState *env, uint8_= t *buf, int reg) return 0; } =20 +static int max_svq(ARMCPU *cpu) +{ + return 32 - clz32(cpu->sme_vq.map); +} + +int aarch64_gdb_get_za_reg(CPUARMState *env, GByteArray *buf, int reg) +{ + ARMCPU *cpu =3D env_archcpu(env); + int max_vq =3D max_svq(cpu); + int cur_vq =3D EX_TBFLAG_A64(env->hflags, SVL) + 1; + int i; + + if (reg >=3D max_vq * 16) { + return 0; + } + + /* If ZA is unset, or reg out of range, the contents are zero. */ + if (FIELD_EX64(env->svcr, SVCR, ZA) && reg < cur_vq * 16) { + for (i =3D 0; i < cur_vq; i++) { + gdb_get_reg128(buf, env->zarray[reg].d[i * 2 + 1], + env->zarray[reg].d[i * 2]); + } + } else { + cur_vq =3D 0; + } + + for (i =3D cur_vq; i < max_vq; i++) { + gdb_get_reg128(buf, 0, 0); + } + + return max_vq * 16; +} + +int aarch64_gdb_set_za_reg(CPUARMState *env, uint8_t *buf, int reg) +{ + ARMCPU *cpu =3D env_archcpu(env); + uint64_t *p =3D (uint64_t *) buf; + int max_vq =3D max_svq(cpu); + int cur_vq =3D EX_TBFLAG_A64(env->hflags, SVL) + 1; + int i; + + if (reg >=3D max_vq * 16) { + return 0; + } + + /* If ZA is unset, or reg out of range, the contents are zero. */ + if (FIELD_EX64(env->svcr, SVCR, ZA) && reg < cur_vq * 16) { + for (i =3D 0; i < cur_vq; i++) { + env->zarray[reg].d[i * 2 + 1] =3D *p++; + env->zarray[reg].d[i * 2 + 0] =3D *p++; + } + } + return max_vq * 16; +} + static void output_vector_union_type(GString *s, int reg_width, const char *name) { @@ -376,3 +431,36 @@ int arm_gen_dynamic_svereg_xml(CPUState *cs, int orig_= base_reg) info->num =3D base_reg - orig_base_reg; return info->num; } + +/* + * Generate the xml for SME, with matrix size set to the maximum + * for the cpu. Returns the number of registers generated. + */ +int arm_gen_dynamic_zareg_xml(CPUState *cs, int base_reg) +{ + ARMCPU *cpu =3D ARM_CPU(cs); + GString *s =3D g_string_new(NULL); + int vq =3D max_svq(cpu); + int row_count =3D vq * 16; + int row_width =3D vq * 128; + int i; + + g_string_printf(s, ""); + g_string_append_printf(s, "= "); + g_string_append_printf(s, ""); + + output_vector_union_type(s, row_width, "zav"); + + for (i =3D 0; i < row_count; i++) { + g_string_append_printf(s, + "", + i, row_width, base_reg + i); + } + + g_string_append_printf(s, ""); + + cpu->dyn_zareg_xml.num =3D row_count; + cpu->dyn_zareg_xml.desc =3D g_string_free(s, false); + return row_count; +} --=20 2.34.1