From nobody Thu Apr 3 10:05:54 2025 Delivered-To: importer@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+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1742210269; cv=none; d=zohomail.com; s=zohoarc; b=OcD7ENWlhdKKp+xQuaY237F5t3mWLjVsr69dkQ/VXxOTETcsKCavZk8G9TkywIklgwyZSzah3p+x6VGY9A7tfZwmLj8q6uJbHmtAhCFTWgDiHdrxJZ2yKxIlzJGT2EDU+fFUBL4ExbyGnxBFw9mPKzDmVeHMbWbPA/PJk0S5v6g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1742210269; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=r2O1pMlyZZY5oK2UwLivZo1tzJeM0s0EMnsqH/IhdLM=; b=B6B5ueNzeJhKlZXggm2J2XeGDDg67lMF6oPop7aINultEME5Xmjf9fipitqsRTBRS7RNqHzMlck+UK5zw5UxUFbG1qvsIzJdoroF+3TNW2Tqf6IwHERUgSlNWER50w8CgzGxmSZ3unvWoNOuB1u0Ts7G9yX1hJUMDJcxzn/LZFE= 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+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17422102694982.5919529030328476; Mon, 17 Mar 2025 04:17:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tu8Sb-0003EW-Hr; Mon, 17 Mar 2025 07:16:46 -0400 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 1tu8SY-0003DI-Pg for qemu-devel@nongnu.org; Mon, 17 Mar 2025 07:16:43 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tu8ST-0003km-9S for qemu-devel@nongnu.org; Mon, 17 Mar 2025 07:16:42 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-226185948ffso11747735ad.0 for ; Mon, 17 Mar 2025 04:16:36 -0700 (PDT) Received: from localhost ([157.82.207.107]) by smtp.gmail.com with UTF8SMTPSA id 98e67ed59e1d1-3015363217dsm5778581a91.32.2025.03.17.04.16.32 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 17 Mar 2025 04:16:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=daynix-com.20230601.gappssmtp.com; s=20230601; t=1742210195; x=1742814995; darn=nongnu.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=r2O1pMlyZZY5oK2UwLivZo1tzJeM0s0EMnsqH/IhdLM=; b=eIBGh+5eLp1+Z0B7mOHzCmJfccem7fY9kNR3/xiRMlfTEO0xUgTL6HX5TMez8ntFtF 8om3seighRjspV696LbQHF94Ww1m6Ea9fdzmjwA7u9cuTgVRZECpiKJa3WPqQb2a2vsR EtyKfXSP6C9DZDdPRcKURc8XVl7dpZiu7Ju6G9RH56Yhglfs9d9YOaLr4d6dXi6EkGQ0 p8fxvcciv+sF7PwsIC99KFK9en0ky0771CgCGQxS1bfmMwiqyhXC0mt0hlXgPoskZ4XY t58aTqAUDjh2FzqSyvbnC0a93GH0aal7zjbh+E35CKWr53wi0HGj/6qOoAqXMYT47sYj nJ4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742210195; x=1742814995; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=r2O1pMlyZZY5oK2UwLivZo1tzJeM0s0EMnsqH/IhdLM=; b=skbHh9qj80Dw2TMWKCCzU9XJXNaOY5M2JP7885UZdHk8Gt2ZcEA93bV3l432Q2K9bl ygfvn1j+sAoKmB7i2aXlgppEThdYCg3aZPoVdduzm2DD1GvCIkgxGYhI3nc/rSo2H3We Uj7AQdTcdl2AH+HIFelhY+6kdXr//47WhxsogSICycjkPQSvybmG5S6ammXLvrSpSY/a ARP8XGJ/okB1wOu1waLoI90zTZv2z3Pa6pAs6lo1ci/UcZLm5yVOAPbsrbdl/TtruvN2 vGPXvPbwgachDcUekXkIsBHpOkBjnonrMxMAVZIJj7YWD3eS/fH1Vmsvfl8ZyxQG7n1U Jjqg== X-Gm-Message-State: AOJu0YxsGp33S+ioKtEzbEw7tZSeMwi1yzQm1UYlfzr6EE3Zz7lJFXVH 76qv1W2d9+XMUMMBumXeoW3o/IVe8Ku+3wBZrWysuk55uqMRT5MwiE0yYICPZIU= X-Gm-Gg: ASbGncvJQbTm8+qi6boqDuV6URoFkmC77AC5CV/eiVJqZX8OlIKcnBxCXvXbawqmJNe wVBgPwW0cEiINJxxSsWMhknnIXCmjRPHvjmGKIkP8p8PVq6seNmlNBHCvpdds0JT827h+53TWaD M1NGPG/HG2OFsgnDo/crJqI2xMQNRJFNQZnqMRmZutdqIkNLetdZvvYlfmSYsUFJVjXJYTgqG/g c5qCTW158Vu2FgplhCB5R6TodXWEunJIWlqrGFEZ1XcfPLqKwGE5MxqD1g8VyPXUGO+YzY0c2po fcg2+wSD65Nd4ho6B9QC6GXN1W9JN22wnzgPOTnplWmAggYC X-Google-Smtp-Source: AGHT+IEouTg5RX3PYGW3UOrD0h1NXDqErq26SoRz0sOn1Q0YIGUM/Dno8RQ8KfLF9krEh0iuryIo5A== X-Received: by 2002:a17:90b:544c:b0:2ff:692b:b15 with SMTP id 98e67ed59e1d1-30151d8eed2mr15855700a91.33.1742210194739; Mon, 17 Mar 2025 04:16:34 -0700 (PDT) From: Akihiko Odaki Date: Mon, 17 Mar 2025 20:16:22 +0900 Subject: [PATCH 1/4] target/arm: Explicitly set ARM_CP_NO_GDB MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250317-raw-v1-1-09e2dfff0e90@daynix.com> References: <20250317-raw-v1-0-09e2dfff0e90@daynix.com> In-Reply-To: <20250317-raw-v1-0-09e2dfff0e90@daynix.com> To: qemu-devel@nongnu.org Cc: Peter Maydell , qemu-arm@nongnu.org, devel@daynix.com, Akihiko Odaki X-Mailer: b4 0.15-dev-edae6 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=akihiko.odaki@daynix.com; helo=mail-pl1-x634.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @daynix-com.20230601.gappssmtp.com) X-ZM-MESSAGEID: 1742210272225019100 Explicitly set ARM_CP_NO_GDB when ARM_CP_NO_RAW is set. Signed-off-by: Akihiko Odaki --- hw/intc/arm_gicv3_cpuif.c | 100 +++++++++--------- hw/intc/arm_gicv3_kvm.c | 2 +- target/arm/debug_helper.c | 2 +- target/arm/helper.c | 219 +++++++++++++++++++++----------------- target/arm/tcg/tlb-insns.c | 256 +++++++++++++++++++++++++----------------= ---- 5 files changed, 321 insertions(+), 258 deletions(-) diff --git a/hw/intc/arm_gicv3_cpuif.c b/hw/intc/arm_gicv3_cpuif.c index 7f1d071c198b..e02854204d25 100644 --- a/hw/intc/arm_gicv3_cpuif.c +++ b/hw/intc/arm_gicv3_cpuif.c @@ -2432,7 +2432,7 @@ static void icc_reset(CPUARMState *env, const ARMCPRe= gInfo *ri) static const ARMCPRegInfo gicv3_cpuif_reginfo[] =3D { { .name =3D "ICC_PMR_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 4, .crm =3D 6, .opc2 =3D 0, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_RW, .accessfn =3D gicv3_irqfiq_access, .readfn =3D icc_pmr_read, .writefn =3D icc_pmr_write, @@ -2444,32 +2444,32 @@ static const ARMCPRegInfo gicv3_cpuif_reginfo[] =3D= { }, { .name =3D "ICC_IAR0_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 8, .opc2 =3D 0, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_R, .accessfn =3D gicv3_fiq_access, .readfn =3D icc_iar0_read, }, { .name =3D "ICC_EOIR0_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 8, .opc2 =3D 1, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_W, .accessfn =3D gicv3_fiq_access, .writefn =3D icc_eoir_write, }, { .name =3D "ICC_HPPIR0_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 8, .opc2 =3D 2, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_R, .accessfn =3D gicv3_fiq_access, .readfn =3D icc_hppir0_read, }, { .name =3D "ICC_BPR0_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 8, .opc2 =3D 3, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_RW, .accessfn =3D gicv3_fiq_access, .readfn =3D icc_bpr_read, .writefn =3D icc_bpr_write, }, { .name =3D "ICC_AP0R0_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 8, .opc2 =3D 4, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_RW, .accessfn =3D gicv3_fiq_access, .readfn =3D icc_ap_read, .writefn =3D icc_ap_write, @@ -2477,81 +2477,81 @@ static const ARMCPRegInfo gicv3_cpuif_reginfo[] =3D= { /* All the ICC_AP1R*_EL1 registers are banked */ { .name =3D "ICC_AP1R0_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 9, .opc2 =3D 0, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_RW, .accessfn =3D gicv3_irq_access, .readfn =3D icc_ap_read, .writefn =3D icc_ap_write, }, { .name =3D "ICC_DIR_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 11, .opc2 =3D 1, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_W, .accessfn =3D gicv3_dir_access, .writefn =3D icc_dir_write, }, { .name =3D "ICC_RPR_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 11, .opc2 =3D 3, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_R, .accessfn =3D gicv3_irqfiq_access, .readfn =3D icc_rpr_read, }, { .name =3D "ICC_SGI1R_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 11, .opc2 =3D 5, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_W, .accessfn =3D gicv3_sgi_access, .writefn =3D icc_sgi1r_write, }, { .name =3D "ICC_SGI1R", .cp =3D 15, .opc1 =3D 0, .crm =3D 12, - .type =3D ARM_CP_64BIT | ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_64BIT | ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_W, .accessfn =3D gicv3_sgi_access, .writefn =3D icc_sgi1r_write, }, { .name =3D "ICC_ASGI1R_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 11, .opc2 =3D 6, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_W, .accessfn =3D gicv3_sgi_access, .writefn =3D icc_asgi1r_write, }, { .name =3D "ICC_ASGI1R", .cp =3D 15, .opc1 =3D 1, .crm =3D 12, - .type =3D ARM_CP_64BIT | ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_64BIT | ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_W, .accessfn =3D gicv3_sgi_access, .writefn =3D icc_asgi1r_write, }, { .name =3D "ICC_SGI0R_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 11, .opc2 =3D 7, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_W, .accessfn =3D gicv3_sgi_access, .writefn =3D icc_sgi0r_write, }, { .name =3D "ICC_SGI0R", .cp =3D 15, .opc1 =3D 2, .crm =3D 12, - .type =3D ARM_CP_64BIT | ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_64BIT | ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_W, .accessfn =3D gicv3_sgi_access, .writefn =3D icc_sgi0r_write, }, { .name =3D "ICC_IAR1_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 12, .opc2 =3D 0, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_R, .accessfn =3D gicv3_irq_access, .readfn =3D icc_iar1_read, }, { .name =3D "ICC_EOIR1_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 12, .opc2 =3D 1, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_W, .accessfn =3D gicv3_irq_access, .writefn =3D icc_eoir_write, }, { .name =3D "ICC_HPPIR1_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 12, .opc2 =3D 2, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_R, .accessfn =3D gicv3_irq_access, .readfn =3D icc_hppir1_read, }, /* This register is banked */ { .name =3D "ICC_BPR1_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 12, .opc2 =3D 3, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_RW, .accessfn =3D gicv3_irq_access, .readfn =3D icc_bpr_read, .writefn =3D icc_bpr_write, @@ -2559,14 +2559,14 @@ static const ARMCPRegInfo gicv3_cpuif_reginfo[] =3D= { /* This register is banked */ { .name =3D "ICC_CTLR_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 12, .opc2 =3D 4, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_RW, .accessfn =3D gicv3_irqfiq_access, .readfn =3D icc_ctlr_el1_read, .writefn =3D icc_ctlr_el1_write, }, { .name =3D "ICC_SRE_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 12, .opc2 =3D 5, - .type =3D ARM_CP_NO_RAW | ARM_CP_CONST, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_CONST, .access =3D PL1_RW, /* We don't support IRQ/FIQ bypass and system registers are * always enabled, so all our bits are RAZ/WI or RAO/WI. @@ -2577,7 +2577,7 @@ static const ARMCPRegInfo gicv3_cpuif_reginfo[] =3D { }, { .name =3D "ICC_IGRPEN0_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 12, .opc2 =3D 6, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_RW, .accessfn =3D gicv3_fiq_access, .fgt =3D FGT_ICC_IGRPENN_EL1, .readfn =3D icc_igrpen_read, @@ -2586,7 +2586,7 @@ static const ARMCPRegInfo gicv3_cpuif_reginfo[] =3D { /* This register is banked */ { .name =3D "ICC_IGRPEN1_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 12, .opc2 =3D 7, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_RW, .accessfn =3D gicv3_irq_access, .fgt =3D FGT_ICC_IGRPENN_EL1, .readfn =3D icc_igrpen_read, @@ -2594,7 +2594,7 @@ static const ARMCPRegInfo gicv3_cpuif_reginfo[] =3D { }, { .name =3D "ICC_SRE_EL2", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 12, .crm =3D 9, .opc2 =3D 5, - .type =3D ARM_CP_NO_RAW | ARM_CP_CONST, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_CONST, .access =3D PL2_RW, /* We don't support IRQ/FIQ bypass and system registers are * always enabled, so all our bits are RAZ/WI or RAO/WI. @@ -2603,14 +2603,14 @@ static const ARMCPRegInfo gicv3_cpuif_reginfo[] =3D= { }, { .name =3D "ICC_CTLR_EL3", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 6, .crn =3D 12, .crm =3D 12, .opc2 =3D 4, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL3_RW, .readfn =3D icc_ctlr_el3_read, .writefn =3D icc_ctlr_el3_write, }, { .name =3D "ICC_SRE_EL3", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 6, .crn =3D 12, .crm =3D 12, .opc2 =3D 5, - .type =3D ARM_CP_NO_RAW | ARM_CP_CONST, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_CONST, .access =3D PL3_RW, /* We don't support IRQ/FIQ bypass and system registers are * always enabled, so all our bits are RAZ/WI or RAO/WI. @@ -2619,7 +2619,7 @@ static const ARMCPRegInfo gicv3_cpuif_reginfo[] =3D { }, { .name =3D "ICC_IGRPEN1_EL3", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 6, .crn =3D 12, .crm =3D 12, .opc2 =3D 7, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL3_RW, .readfn =3D icc_igrpen1_el3_read, .writefn =3D icc_igrpen1_el3_write, @@ -2629,14 +2629,14 @@ static const ARMCPRegInfo gicv3_cpuif_reginfo[] =3D= { static const ARMCPRegInfo gicv3_cpuif_icc_apxr1_reginfo[] =3D { { .name =3D "ICC_AP0R1_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 8, .opc2 =3D 5, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_RW, .accessfn =3D gicv3_fiq_access, .readfn =3D icc_ap_read, .writefn =3D icc_ap_write, }, { .name =3D "ICC_AP1R1_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 9, .opc2 =3D 1, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_RW, .accessfn =3D gicv3_irq_access, .readfn =3D icc_ap_read, .writefn =3D icc_ap_write, @@ -2646,28 +2646,28 @@ static const ARMCPRegInfo gicv3_cpuif_icc_apxr1_reg= info[] =3D { static const ARMCPRegInfo gicv3_cpuif_icc_apxr23_reginfo[] =3D { { .name =3D "ICC_AP0R2_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 8, .opc2 =3D 6, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_RW, .accessfn =3D gicv3_fiq_access, .readfn =3D icc_ap_read, .writefn =3D icc_ap_write, }, { .name =3D "ICC_AP0R3_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 8, .opc2 =3D 7, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_RW, .accessfn =3D gicv3_fiq_access, .readfn =3D icc_ap_read, .writefn =3D icc_ap_write, }, { .name =3D "ICC_AP1R2_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 9, .opc2 =3D 2, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_RW, .accessfn =3D gicv3_irq_access, .readfn =3D icc_ap_read, .writefn =3D icc_ap_write, }, { .name =3D "ICC_AP1R3_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 9, .opc2 =3D 3, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_RW, .accessfn =3D gicv3_irq_access, .readfn =3D icc_ap_read, .writefn =3D icc_ap_write, @@ -2677,7 +2677,7 @@ static const ARMCPRegInfo gicv3_cpuif_icc_apxr23_regi= nfo[] =3D { static const ARMCPRegInfo gicv3_cpuif_gicv3_nmi_reginfo[] =3D { { .name =3D "ICC_NMIAR1_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 9, .opc2 =3D 5, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_R, .accessfn =3D gicv3_irq_access, .readfn =3D icc_nmiar1_read, }, @@ -2893,7 +2893,7 @@ static uint64_t ich_elrsr_read(CPUARMState *env, cons= t ARMCPRegInfo *ri) static const ARMCPRegInfo gicv3_cpuif_hcr_reginfo[] =3D { { .name =3D "ICH_AP0R0_EL2", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 12, .crm =3D 8, .opc2 =3D 0, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .nv2_redirect_offset =3D 0x480, .access =3D PL2_RW, .readfn =3D ich_ap_read, @@ -2901,7 +2901,7 @@ static const ARMCPRegInfo gicv3_cpuif_hcr_reginfo[] = =3D { }, { .name =3D "ICH_AP1R0_EL2", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 12, .crm =3D 9, .opc2 =3D 0, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .nv2_redirect_offset =3D 0x4a0, .access =3D PL2_RW, .readfn =3D ich_ap_read, @@ -2909,7 +2909,7 @@ static const ARMCPRegInfo gicv3_cpuif_hcr_reginfo[] = =3D { }, { .name =3D "ICH_HCR_EL2", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 12, .crm =3D 11, .opc2 =3D 0, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .nv2_redirect_offset =3D 0x4c0, .access =3D PL2_RW, .readfn =3D ich_hcr_read, @@ -2917,31 +2917,31 @@ static const ARMCPRegInfo gicv3_cpuif_hcr_reginfo[]= =3D { }, { .name =3D "ICH_VTR_EL2", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 12, .crm =3D 11, .opc2 =3D 1, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL2_R, .readfn =3D ich_vtr_read, }, { .name =3D "ICH_MISR_EL2", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 12, .crm =3D 11, .opc2 =3D 2, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL2_R, .readfn =3D ich_misr_read, }, { .name =3D "ICH_EISR_EL2", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 12, .crm =3D 11, .opc2 =3D 3, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL2_R, .readfn =3D ich_eisr_read, }, { .name =3D "ICH_ELRSR_EL2", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 12, .crm =3D 11, .opc2 =3D 5, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL2_R, .readfn =3D ich_elrsr_read, }, { .name =3D "ICH_VMCR_EL2", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 12, .crm =3D 11, .opc2 =3D 7, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .nv2_redirect_offset =3D 0x4c8, .access =3D PL2_RW, .readfn =3D ich_vmcr_read, @@ -2952,7 +2952,7 @@ static const ARMCPRegInfo gicv3_cpuif_hcr_reginfo[] = =3D { static const ARMCPRegInfo gicv3_cpuif_ich_apxr1_reginfo[] =3D { { .name =3D "ICH_AP0R1_EL2", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 12, .crm =3D 8, .opc2 =3D 1, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .nv2_redirect_offset =3D 0x488, .access =3D PL2_RW, .readfn =3D ich_ap_read, @@ -2960,7 +2960,7 @@ static const ARMCPRegInfo gicv3_cpuif_ich_apxr1_regin= fo[] =3D { }, { .name =3D "ICH_AP1R1_EL2", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 12, .crm =3D 9, .opc2 =3D 1, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .nv2_redirect_offset =3D 0x4a8, .access =3D PL2_RW, .readfn =3D ich_ap_read, @@ -2971,7 +2971,7 @@ static const ARMCPRegInfo gicv3_cpuif_ich_apxr1_regin= fo[] =3D { static const ARMCPRegInfo gicv3_cpuif_ich_apxr23_reginfo[] =3D { { .name =3D "ICH_AP0R2_EL2", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 12, .crm =3D 8, .opc2 =3D 2, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .nv2_redirect_offset =3D 0x490, .access =3D PL2_RW, .readfn =3D ich_ap_read, @@ -2979,7 +2979,7 @@ static const ARMCPRegInfo gicv3_cpuif_ich_apxr23_regi= nfo[] =3D { }, { .name =3D "ICH_AP0R3_EL2", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 12, .crm =3D 8, .opc2 =3D 3, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .nv2_redirect_offset =3D 0x498, .access =3D PL2_RW, .readfn =3D ich_ap_read, @@ -2987,7 +2987,7 @@ static const ARMCPRegInfo gicv3_cpuif_ich_apxr23_regi= nfo[] =3D { }, { .name =3D "ICH_AP1R2_EL2", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 12, .crm =3D 9, .opc2 =3D 2, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .nv2_redirect_offset =3D 0x4b0, .access =3D PL2_RW, .readfn =3D ich_ap_read, @@ -2995,7 +2995,7 @@ static const ARMCPRegInfo gicv3_cpuif_ich_apxr23_regi= nfo[] =3D { }, { .name =3D "ICH_AP1R3_EL2", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 12, .crm =3D 9, .opc2 =3D 3, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .nv2_redirect_offset =3D 0x4b8, .access =3D PL2_RW, .readfn =3D ich_ap_read, @@ -3130,7 +3130,7 @@ void gicv3_init_cpuif(GICv3State *s) { .name =3D "ICH_LRn_EL2", .state =3D ARM_CP_STATE_BOT= H, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 12, .crm =3D 12 + (j >> 3), .opc2 =3D j & 7, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .nv2_redirect_offset =3D 0x400 + 8 * j, .access =3D PL2_RW, .readfn =3D ich_lr_read, @@ -3139,7 +3139,7 @@ void gicv3_init_cpuif(GICv3State *s) { .name =3D "ICH_LRCn_EL2", .state =3D ARM_CP_STATE_AA= 32, .cp =3D 15, .opc1 =3D 4, .crn =3D 12, .crm =3D 14 + (j >> 3), .opc2 =3D j & 7, - .type =3D ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL2_RW, .readfn =3D ich_lr_read, .writefn =3D ich_lr_write, diff --git a/hw/intc/arm_gicv3_kvm.c b/hw/intc/arm_gicv3_kvm.c index 8e17cab2a0fe..910ffe7c2baa 100644 --- a/hw/intc/arm_gicv3_kvm.c +++ b/hw/intc/arm_gicv3_kvm.c @@ -736,7 +736,7 @@ static const ARMCPRegInfo gicv3_cpuif_reginfo[] =3D { * If ARM_CP_NOP is used, resetfn is not called, * So ARM_CP_NO_RAW is appropriate type. */ - .type =3D ARM_CP_NO_RAW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_RW, .readfn =3D arm_cp_read_zero, .writefn =3D arm_cp_write_ignore, diff --git a/target/arm/debug_helper.c b/target/arm/debug_helper.c index a9a619ba6b1b..1c0a633e0f09 100644 --- a/target/arm/debug_helper.c +++ b/target/arm/debug_helper.c @@ -1013,7 +1013,7 @@ static const ARMCPRegInfo debug_cp_reginfo[] =3D { .fieldoffset =3D offsetof(CPUARMState, cp15.mdscr_el1), }, { .name =3D "OSLAR_EL1", .state =3D ARM_CP_STATE_BOTH, .cp =3D 14, .opc0 =3D 2, .opc1 =3D 0, .crn =3D 1, .crm =3D 0, .opc2 = =3D 4, - .access =3D PL1_W, .type =3D ARM_CP_NO_RAW, + .access =3D PL1_W, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .accessfn =3D access_tdosa, .fgt =3D FGT_OSLAR_EL1, .writefn =3D oslar_write }, diff --git a/target/arm/helper.c b/target/arm/helper.c index f0ead22937bf..5ce468ac2693 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -521,7 +521,7 @@ static const ARMCPRegInfo not_v7_cp_reginfo[] =3D { .resetvalue =3D 0 }, /* v6 doesn't have the cache ID registers but Linux reads them anyway = */ { .name =3D "DUMMY", .cp =3D 15, .crn =3D 0, .crm =3D 0, .opc1 =3D 1, = .opc2 =3D CP_ANY, - .access =3D PL1_R, .type =3D ARM_CP_CONST | ARM_CP_NO_RAW, + .access =3D PL1_R, .type =3D ARM_CP_CONST | ARM_CP_NO_RAW | ARM_CP_N= O_GDB, .resetvalue =3D 0 }, /* * We don't implement pre-v7 debug but most CPUs had at least a DBGDID= R; @@ -652,7 +652,8 @@ static const ARMCPRegInfo v6_cp_reginfo[] =3D { * So use arm_cp_write_ignore() function instead of ARM_CP_NOP flag. */ { .name =3D "ISB", .cp =3D 15, .crn =3D 7, .crm =3D 5, .opc1 =3D 0, .o= pc2 =3D 4, - .access =3D PL0_W, .type =3D ARM_CP_NO_RAW, .writefn =3D arm_cp_writ= e_ignore }, + .access =3D PL0_W, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, + .writefn =3D arm_cp_write_ignore }, { .name =3D "DSB", .cp =3D 15, .crn =3D 7, .crm =3D 10, .opc1 =3D 0, .= opc2 =3D 4, .access =3D PL0_W, .type =3D ARM_CP_NOP }, { .name =3D "DMB", .cp =3D 15, .crn =3D 7, .crm =3D 10, .opc1 =3D 0, .= opc2 =3D 5, @@ -1926,13 +1927,13 @@ static const ARMCPRegInfo v7_cp_reginfo[] =3D { { .name =3D "PMSWINC", .cp =3D 15, .crn =3D 9, .crm =3D 12, .opc1 =3D = 0, .opc2 =3D 4, .access =3D PL0_W, .accessfn =3D pmreg_access_swinc, .fgt =3D FGT_PMSWINC_EL0, - .type =3D ARM_CP_NO_RAW | ARM_CP_IO, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_IO, .writefn =3D pmswinc_write }, { .name =3D "PMSWINC_EL0", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 3, .crn =3D 9, .crm =3D 12, .opc2 =3D 4, .access =3D PL0_W, .accessfn =3D pmreg_access_swinc, .fgt =3D FGT_PMSWINC_EL0, - .type =3D ARM_CP_NO_RAW | ARM_CP_IO, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_IO, .writefn =3D pmswinc_write }, { .name =3D "PMSELR", .cp =3D 15, .crn =3D 9, .crm =3D 12, .opc1 =3D 0= , .opc2 =3D 5, .access =3D PL0_RW, .type =3D ARM_CP_ALIAS, @@ -1974,24 +1975,24 @@ static const ARMCPRegInfo v7_cp_reginfo[] =3D { .fieldoffset =3D offsetof(CPUARMState, cp15.pmccfiltr_el0), .resetvalue =3D 0, }, { .name =3D "PMXEVTYPER", .cp =3D 15, .crn =3D 9, .crm =3D 13, .opc1 = =3D 0, .opc2 =3D 1, - .access =3D PL0_RW, .type =3D ARM_CP_NO_RAW | ARM_CP_IO, + .access =3D PL0_RW, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP= _IO, .accessfn =3D pmreg_access, .fgt =3D FGT_PMEVTYPERN_EL0, .writefn =3D pmxevtyper_write, .readfn =3D pmxevtyper_read }, { .name =3D "PMXEVTYPER_EL0", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 3, .crn =3D 9, .crm =3D 13, .opc2 =3D 1, - .access =3D PL0_RW, .type =3D ARM_CP_NO_RAW | ARM_CP_IO, + .access =3D PL0_RW, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP= _IO, .accessfn =3D pmreg_access, .fgt =3D FGT_PMEVTYPERN_EL0, .writefn =3D pmxevtyper_write, .readfn =3D pmxevtyper_read }, { .name =3D "PMXEVCNTR", .cp =3D 15, .crn =3D 9, .crm =3D 13, .opc1 = =3D 0, .opc2 =3D 2, - .access =3D PL0_RW, .type =3D ARM_CP_NO_RAW | ARM_CP_IO, + .access =3D PL0_RW, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP= _IO, .accessfn =3D pmreg_access_xevcntr, .fgt =3D FGT_PMEVCNTRN_EL0, .writefn =3D pmxevcntr_write, .readfn =3D pmxevcntr_read }, { .name =3D "PMXEVCNTR_EL0", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 3, .crn =3D 9, .crm =3D 13, .opc2 =3D 2, - .access =3D PL0_RW, .type =3D ARM_CP_NO_RAW | ARM_CP_IO, + .access =3D PL0_RW, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP= _IO, .accessfn =3D pmreg_access_xevcntr, .fgt =3D FGT_PMEVCNTRN_EL0, .writefn =3D pmxevcntr_write, .readfn =3D pmxevcntr_read }, @@ -2024,14 +2025,14 @@ static const ARMCPRegInfo v7_cp_reginfo[] =3D { { .name =3D "PMINTENCLR", .cp =3D 15, .crn =3D 9, .crm =3D 14, .opc1 = =3D 0, .opc2 =3D 2, .access =3D PL1_RW, .accessfn =3D access_tpm, .fgt =3D FGT_PMINTEN, - .type =3D ARM_CP_ALIAS | ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_ALIAS | ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .fieldoffset =3D offsetof(CPUARMState, cp15.c9_pminten), .writefn =3D pmintenclr_write, }, { .name =3D "PMINTENCLR_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 9, .crm =3D 14, .opc2 =3D 2, .access =3D PL1_RW, .accessfn =3D access_tpm, .fgt =3D FGT_PMINTEN, - .type =3D ARM_CP_ALIAS | ARM_CP_IO | ARM_CP_NO_RAW, + .type =3D ARM_CP_ALIAS | ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .fieldoffset =3D offsetof(CPUARMState, cp15.c9_pminten), .writefn =3D pmintenclr_write }, { .name =3D "CCSIDR", .state =3D ARM_CP_STATE_BOTH, @@ -2039,7 +2040,7 @@ static const ARMCPRegInfo v7_cp_reginfo[] =3D { .access =3D PL1_R, .accessfn =3D access_tid4, .fgt =3D FGT_CCSIDR_EL1, - .readfn =3D ccsidr_read, .type =3D ARM_CP_NO_RAW }, + .readfn =3D ccsidr_read, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB }, { .name =3D "CSSELR", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .crn =3D 0, .crm =3D 0, .opc1 =3D 2, .opc2 =3D 0, .access =3D PL1_RW, @@ -2113,7 +2114,8 @@ static const ARMCPRegInfo v7_cp_reginfo[] =3D { { .name =3D "ISR_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 1, .opc2 =3D 0, .fgt =3D FGT_ISR_EL1, - .type =3D ARM_CP_NO_RAW, .access =3D PL1_R, .readfn =3D isr_read }, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, + .access =3D PL1_R, .readfn =3D isr_read }, }; =20 static const ARMCPRegInfo pmovsset_cp_reginfo[] =3D { @@ -3204,53 +3206,55 @@ static const ARMCPRegInfo generic_timer_cp_reginfo[= ] =3D { /* TimerValue views: a 32 bit downcounting view of the underlying stat= e */ { .name =3D "CNTP_TVAL", .cp =3D 15, .crn =3D 14, .crm =3D 2, .opc1 = =3D 0, .opc2 =3D 0, .secure =3D ARM_CP_SECSTATE_NS, - .type =3D ARM_CP_NO_RAW | ARM_CP_IO, .access =3D PL0_RW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_IO, .access =3D PL0= _RW, .accessfn =3D gt_ptimer_access, .readfn =3D gt_phys_redir_tval_read, .writefn =3D gt_phys_redir_tval= _write, }, { .name =3D "CNTP_TVAL_S", .cp =3D 15, .crn =3D 14, .crm =3D 2, .opc1 =3D 0, .opc2 =3D 0, .secure =3D ARM_CP_SECSTATE_S, - .type =3D ARM_CP_NO_RAW | ARM_CP_IO, .access =3D PL0_RW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_IO, .access =3D PL0= _RW, .accessfn =3D gt_ptimer_access, .readfn =3D gt_sec_tval_read, .writefn =3D gt_sec_tval_write, }, { .name =3D "CNTP_TVAL_EL0", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 3, .crn =3D 14, .crm =3D 2, .opc2 =3D 0, - .type =3D ARM_CP_NO_RAW | ARM_CP_IO, .access =3D PL0_RW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_IO, .access =3D PL0= _RW, .accessfn =3D gt_ptimer_access, .resetfn =3D gt_phys_timer_reset, .readfn =3D gt_phys_redir_tval_read, .writefn =3D gt_phys_redir_tval= _write, }, { .name =3D "CNTV_TVAL", .cp =3D 15, .crn =3D 14, .crm =3D 3, .opc1 = =3D 0, .opc2 =3D 0, - .type =3D ARM_CP_NO_RAW | ARM_CP_IO, .access =3D PL0_RW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_IO, .access =3D PL0= _RW, .accessfn =3D gt_vtimer_access, .readfn =3D gt_virt_redir_tval_read, .writefn =3D gt_virt_redir_tval= _write, }, { .name =3D "CNTV_TVAL_EL0", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 3, .crn =3D 14, .crm =3D 3, .opc2 =3D 0, - .type =3D ARM_CP_NO_RAW | ARM_CP_IO, .access =3D PL0_RW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_IO, .access =3D PL0= _RW, .accessfn =3D gt_vtimer_access, .resetfn =3D gt_virt_timer_reset, .readfn =3D gt_virt_redir_tval_read, .writefn =3D gt_virt_redir_tval= _write, }, /* The counter itself */ { .name =3D "CNTPCT", .cp =3D 15, .crm =3D 14, .opc1 =3D 0, - .access =3D PL0_R, .type =3D ARM_CP_64BIT | ARM_CP_NO_RAW | ARM_CP_I= O, + .access =3D PL0_R, + .type =3D ARM_CP_64BIT | ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_IO, .accessfn =3D gt_pct_access, .readfn =3D gt_cnt_read, .resetfn =3D arm_cp_reset_ignore, }, { .name =3D "CNTPCT_EL0", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 3, .crn =3D 14, .crm =3D 0, .opc2 =3D 1, - .access =3D PL0_R, .type =3D ARM_CP_NO_RAW | ARM_CP_IO, + .access =3D PL0_R, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_= IO, .accessfn =3D gt_pct_access, .readfn =3D gt_cnt_read, }, { .name =3D "CNTVCT", .cp =3D 15, .crm =3D 14, .opc1 =3D 1, - .access =3D PL0_R, .type =3D ARM_CP_64BIT | ARM_CP_NO_RAW | ARM_CP_I= O, + .access =3D PL0_R, + .type =3D ARM_CP_64BIT | ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_IO, .accessfn =3D gt_vct_access, .readfn =3D gt_virt_cnt_read, .resetfn =3D arm_cp_reset_ignore, }, { .name =3D "CNTVCT_EL0", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 3, .crn =3D 14, .crm =3D 0, .opc2 =3D 2, - .access =3D PL0_R, .type =3D ARM_CP_NO_RAW | ARM_CP_IO, + .access =3D PL0_R, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_= IO, .accessfn =3D gt_vct_access, .readfn =3D gt_virt_cnt_read, }, /* Comparison value, indicating when the timer goes off */ @@ -3305,7 +3309,7 @@ static const ARMCPRegInfo generic_timer_cp_reginfo[] = =3D { */ { .name =3D "CNTPS_TVAL_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 7, .crn =3D 14, .crm =3D 2, .opc2 =3D 0, - .type =3D ARM_CP_NO_RAW | ARM_CP_IO, .access =3D PL1_RW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_IO, .access =3D PL1= _RW, .accessfn =3D gt_stimer_access, .readfn =3D gt_sec_tval_read, .writefn =3D gt_sec_tval_write, @@ -3335,23 +3339,27 @@ static const ARMCPRegInfo generic_timer_cp_reginfo[= ] =3D { */ static const ARMCPRegInfo gen_timer_ecv_cp_reginfo[] =3D { { .name =3D "CNTVCTSS", .cp =3D 15, .crm =3D 14, .opc1 =3D 9, - .access =3D PL0_R, .type =3D ARM_CP_64BIT | ARM_CP_NO_RAW | ARM_CP_I= O, + .access =3D PL0_R, + .type =3D ARM_CP_64BIT | ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_IO, .accessfn =3D gt_vct_access, .readfn =3D gt_virt_cnt_read, .resetfn =3D arm_cp_reset_ignore, }, { .name =3D "CNTVCTSS_EL0", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 3, .crn =3D 14, .crm =3D 0, .opc2 =3D 6, - .access =3D PL0_R, .type =3D ARM_CP_NO_RAW | ARM_CP_IO, + .access =3D PL0_R, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_IO, .accessfn =3D gt_vct_access, .readfn =3D gt_virt_cnt_read, }, { .name =3D "CNTPCTSS", .cp =3D 15, .crm =3D 14, .opc1 =3D 8, - .access =3D PL0_R, .type =3D ARM_CP_64BIT | ARM_CP_NO_RAW | ARM_CP_I= O, + .access =3D PL0_R, + .type =3D ARM_CP_64BIT | ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_IO, .accessfn =3D gt_pct_access, .readfn =3D gt_cnt_read, .resetfn =3D arm_cp_reset_ignore, }, { .name =3D "CNTPCTSS_EL0", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 3, .crn =3D 14, .crm =3D 0, .opc2 =3D 5, - .access =3D PL0_R, .type =3D ARM_CP_NO_RAW | ARM_CP_IO, + .access =3D PL0_R, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_IO, .accessfn =3D gt_pct_access, .readfn =3D gt_cnt_read, }, }; @@ -3413,7 +3421,7 @@ static const ARMCPRegInfo generic_timer_cp_reginfo[] = =3D { }, { .name =3D "CNTVCT_EL0", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 3, .crn =3D 14, .crm =3D 0, .opc2 =3D 2, - .access =3D PL0_R, .type =3D ARM_CP_NO_RAW | ARM_CP_IO, + .access =3D PL0_R, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_= IO, .readfn =3D gt_virt_cnt_read, }, }; @@ -3425,7 +3433,7 @@ static const ARMCPRegInfo generic_timer_cp_reginfo[] = =3D { static const ARMCPRegInfo gen_timer_ecv_cp_reginfo[] =3D { { .name =3D "CNTVCTSS_EL0", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 3, .crn =3D 14, .crm =3D 0, .opc2 =3D 6, - .access =3D PL0_R, .type =3D ARM_CP_NO_RAW | ARM_CP_IO, + .access =3D PL0_R, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_= IO, .readfn =3D gt_virt_cnt_read, }, }; @@ -4118,12 +4126,12 @@ static uint64_t pmsav8r_regn_read(CPUARMState *env,= const ARMCPRegInfo *ri) static const ARMCPRegInfo pmsav8r_cp_reginfo[] =3D { { .name =3D "PRBAR", .cp =3D 15, .opc1 =3D 0, .crn =3D 6, .crm =3D 3, .opc2 =3D 0, - .access =3D PL1_RW, .type =3D ARM_CP_NO_RAW, + .access =3D PL1_RW, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .accessfn =3D access_tvm_trvm, .readfn =3D prbar_read, .writefn =3D prbar_write }, { .name =3D "PRLAR", .cp =3D 15, .opc1 =3D 0, .crn =3D 6, .crm =3D 3, .opc2 =3D 1, - .access =3D PL1_RW, .type =3D ARM_CP_NO_RAW, + .access =3D PL1_RW, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .accessfn =3D access_tvm_trvm, .readfn =3D prlar_read, .writefn =3D prlar_write }, { .name =3D "PRSELR", .resetvalue =3D 0, @@ -4133,11 +4141,11 @@ static const ARMCPRegInfo pmsav8r_cp_reginfo[] =3D { .fieldoffset =3D offsetof(CPUARMState, pmsav7.rnr[M_REG_NS]) }, { .name =3D "HPRBAR", .resetvalue =3D 0, .cp =3D 15, .opc1 =3D 4, .crn =3D 6, .crm =3D 3, .opc2 =3D 0, - .access =3D PL2_RW, .type =3D ARM_CP_NO_RAW, + .access =3D PL2_RW, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .readfn =3D hprbar_read, .writefn =3D hprbar_write }, { .name =3D "HPRLAR", .cp =3D 15, .opc1 =3D 4, .crn =3D 6, .crm =3D 3, .opc2 =3D 1, - .access =3D PL2_RW, .type =3D ARM_CP_NO_RAW, + .access =3D PL2_RW, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .readfn =3D hprlar_read, .writefn =3D hprlar_write }, { .name =3D "HPRSELR", .resetvalue =3D 0, .cp =3D 15, .opc1 =3D 4, .crn =3D 6, .crm =3D 2, .opc2 =3D 1, @@ -4146,7 +4154,7 @@ static const ARMCPRegInfo pmsav8r_cp_reginfo[] =3D { .fieldoffset =3D offsetof(CPUARMState, pmsav8.hprselr) }, { .name =3D "HPRENR", .cp =3D 15, .opc1 =3D 4, .crn =3D 6, .crm =3D 1, .opc2 =3D 1, - .access =3D PL2_RW, .type =3D ARM_CP_NO_RAW, + .access =3D PL2_RW, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .readfn =3D hprenr_read, .writefn =3D hprenr_write }, }; =20 @@ -4157,17 +4165,17 @@ static const ARMCPRegInfo pmsav7_cp_reginfo[] =3D { * not register cpregs but still need the state to be reset. */ { .name =3D "DRBAR", .cp =3D 15, .crn =3D 6, .opc1 =3D 0, .crm =3D 1, = .opc2 =3D 0, - .access =3D PL1_RW, .type =3D ARM_CP_NO_RAW, + .access =3D PL1_RW, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .fieldoffset =3D offsetof(CPUARMState, pmsav7.drbar), .readfn =3D pmsav7_read, .writefn =3D pmsav7_write, .resetfn =3D arm_cp_reset_ignore }, { .name =3D "DRSR", .cp =3D 15, .crn =3D 6, .opc1 =3D 0, .crm =3D 1, .= opc2 =3D 2, - .access =3D PL1_RW, .type =3D ARM_CP_NO_RAW, + .access =3D PL1_RW, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .fieldoffset =3D offsetof(CPUARMState, pmsav7.drsr), .readfn =3D pmsav7_read, .writefn =3D pmsav7_write, .resetfn =3D arm_cp_reset_ignore }, { .name =3D "DRACR", .cp =3D 15, .crn =3D 6, .opc1 =3D 0, .crm =3D 1, = .opc2 =3D 4, - .access =3D PL1_RW, .type =3D ARM_CP_NO_RAW, + .access =3D PL1_RW, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .fieldoffset =3D offsetof(CPUARMState, pmsav7.dracr), .readfn =3D pmsav7_read, .writefn =3D pmsav7_write, .resetfn =3D arm_cp_reset_ignore }, @@ -4451,7 +4459,7 @@ static const ARMCPRegInfo omap_cp_reginfo[] =3D { .writefn =3D omap_threadid_write }, { .name =3D "TI925T_STATUS", .cp =3D 15, .crn =3D 15, .crm =3D 8, .opc1 =3D 0, .opc2 =3D 0, .access =3D PL1_RW, - .type =3D ARM_CP_NO_RAW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .readfn =3D arm_cp_read_zero, .writefn =3D omap_wfi_write, }, /* * TODO: Peripheral port remap register: @@ -4461,7 +4469,7 @@ static const ARMCPRegInfo omap_cp_reginfo[] =3D { */ { .name =3D "OMAP_CACHEMAINT", .cp =3D 15, .crn =3D 7, .crm =3D CP_ANY, .opc1 =3D 0, .opc2 =3D CP_ANY, .access =3D PL1_W, - .type =3D ARM_CP_OVERRIDE | ARM_CP_NO_RAW, + .type =3D ARM_CP_OVERRIDE | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .writefn =3D omap_cachemaint_write }, { .name =3D "C9", .cp =3D 15, .crn =3D 9, .crm =3D CP_ANY, .opc1 =3D CP_ANY, .opc2 =3D CP_ANY, .access =3D PL1= _RW, @@ -4511,21 +4519,21 @@ static const ARMCPRegInfo dummy_c15_cp_reginfo[] = =3D { { .name =3D "C15_IMPDEF", .cp =3D 15, .crn =3D 15, .crm =3D CP_ANY, .opc1 =3D CP_ANY, .opc2 =3D CP_ANY, .access =3D PL1_RW, - .type =3D ARM_CP_CONST | ARM_CP_NO_RAW | ARM_CP_OVERRIDE, + .type =3D ARM_CP_CONST | ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_OVER= RIDE, .resetvalue =3D 0 }, }; =20 static const ARMCPRegInfo cache_dirty_status_cp_reginfo[] =3D { /* Cache status: RAZ because we have no cache so it's always clean */ { .name =3D "CDSR", .cp =3D 15, .crn =3D 7, .crm =3D 10, .opc1 =3D 0, = .opc2 =3D 6, - .access =3D PL1_R, .type =3D ARM_CP_CONST | ARM_CP_NO_RAW, + .access =3D PL1_R, .type =3D ARM_CP_CONST | ARM_CP_NO_RAW | ARM_CP_N= O_GDB, .resetvalue =3D 0 }, }; =20 static const ARMCPRegInfo cache_block_ops_cp_reginfo[] =3D { /* We never have a block transfer operation in progress */ { .name =3D "BXSR", .cp =3D 15, .crn =3D 7, .crm =3D 12, .opc1 =3D 0, = .opc2 =3D 4, - .access =3D PL0_R, .type =3D ARM_CP_CONST | ARM_CP_NO_RAW, + .access =3D PL0_R, .type =3D ARM_CP_CONST | ARM_CP_NO_RAW | ARM_CP_N= O_GDB, .resetvalue =3D 0 }, /* The cache ops themselves: these all NOP for QEMU */ { .name =3D "IICR", .cp =3D 15, .crm =3D 5, .opc1 =3D 0, @@ -4548,10 +4556,10 @@ static const ARMCPRegInfo cache_test_clean_cp_regin= fo[] =3D { * to indicate that there are no dirty cache lines. */ { .name =3D "TC_DCACHE", .cp =3D 15, .crn =3D 7, .crm =3D 10, .opc1 = =3D 0, .opc2 =3D 3, - .access =3D PL0_R, .type =3D ARM_CP_CONST | ARM_CP_NO_RAW, + .access =3D PL0_R, .type =3D ARM_CP_CONST | ARM_CP_NO_RAW | ARM_CP_N= O_GDB, .resetvalue =3D (1 << 30) }, { .name =3D "TCI_DCACHE", .cp =3D 15, .crn =3D 7, .crm =3D 14, .opc1 = =3D 0, .opc2 =3D 3, - .access =3D PL0_R, .type =3D ARM_CP_CONST | ARM_CP_NO_RAW, + .access =3D PL0_R, .type =3D ARM_CP_CONST | ARM_CP_NO_RAW | ARM_CP_N= O_GDB, .resetvalue =3D (1 << 30) }, }; =20 @@ -4560,7 +4568,7 @@ static const ARMCPRegInfo strongarm_cp_reginfo[] =3D { { .name =3D "C9_READBUFFER", .cp =3D 15, .crn =3D 9, .crm =3D CP_ANY, .opc1 =3D CP_ANY, .opc2 =3D CP_ANY, .access =3D PL1_RW, .resetvalue =3D 0, - .type =3D ARM_CP_CONST | ARM_CP_OVERRIDE | ARM_CP_NO_RAW }, + .type =3D ARM_CP_CONST | ARM_CP_OVERRIDE | ARM_CP_NO_RAW | ARM_CP_NO= _GDB }, }; =20 static uint64_t midr_read(CPUARMState *env, const ARMCPRegInfo *ri) @@ -4683,7 +4691,7 @@ static void aa64_pan_write(CPUARMState *env, const AR= MCPRegInfo *ri, static const ARMCPRegInfo pan_reginfo =3D { .name =3D "PAN", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 4, .crm =3D 2, .opc2 =3D 3, - .type =3D ARM_CP_NO_RAW, .access =3D PL1_RW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_RW, .readfn =3D aa64_pan_read, .writefn =3D aa64_pan_write }; =20 @@ -4701,7 +4709,7 @@ static void aa64_uao_write(CPUARMState *env, const AR= MCPRegInfo *ri, static const ARMCPRegInfo uao_reginfo =3D { .name =3D "UAO", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 4, .crm =3D 2, .opc2 =3D 4, - .type =3D ARM_CP_NO_RAW, .access =3D PL1_RW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_RW, .readfn =3D aa64_uao_read, .writefn =3D aa64_uao_write }; =20 @@ -4719,7 +4727,7 @@ static void aa64_dit_write(CPUARMState *env, const AR= MCPRegInfo *ri, static const ARMCPRegInfo dit_reginfo =3D { .name =3D "DIT", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 3, .crn =3D 4, .crm =3D 2, .opc2 =3D 5, - .type =3D ARM_CP_NO_RAW, .access =3D PL0_RW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL0_RW, .readfn =3D aa64_dit_read, .writefn =3D aa64_dit_write }; =20 @@ -4737,7 +4745,7 @@ static void aa64_ssbs_write(CPUARMState *env, const A= RMCPRegInfo *ri, static const ARMCPRegInfo ssbs_reginfo =3D { .name =3D "SSBS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 3, .crn =3D 4, .crm =3D 2, .opc2 =3D 6, - .type =3D ARM_CP_NO_RAW, .access =3D PL0_RW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL0_RW, .readfn =3D aa64_ssbs_read, .writefn =3D aa64_ssbs_write }; =20 @@ -5001,7 +5009,7 @@ static const ARMCPRegInfo v8_cp_reginfo[] =3D { .access =3D PL0_RW, .type =3D ARM_CP_NZCV }, { .name =3D "DAIF", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 3, .opc2 =3D 1, .crn =3D 4, .crm =3D 2, - .type =3D ARM_CP_NO_RAW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL0_RW, .accessfn =3D aa64_daif_access, .fieldoffset =3D offsetof(CPUARMState, daif), .writefn =3D aa64_daif_write, .resetfn =3D arm_cp_reset_ignore }, @@ -5015,7 +5023,7 @@ static const ARMCPRegInfo v8_cp_reginfo[] =3D { .readfn =3D aa64_fpsr_read, .writefn =3D aa64_fpsr_write }, { .name =3D "DCZID_EL0", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 3, .opc2 =3D 7, .crn =3D 0, .crm =3D 0, - .access =3D PL0_R, .type =3D ARM_CP_NO_RAW, + .access =3D PL0_R, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .fgt =3D FGT_DCZID_EL0, .readfn =3D aa64_dczid_read }, { .name =3D "DC_ZVA", .state =3D ARM_CP_STATE_AA64, @@ -5050,7 +5058,7 @@ static const ARMCPRegInfo v8_cp_reginfo[] =3D { .fgt =3D FGT_ICIVAU, .accessfn =3D access_tocu, #ifdef CONFIG_USER_ONLY - .type =3D ARM_CP_NO_RAW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .writefn =3D ic_ivau_write #else .type =3D ARM_CP_NOP @@ -5093,48 +5101,58 @@ static const ARMCPRegInfo v8_cp_reginfo[] =3D { /* 64 bit address translation operations */ { .name =3D "AT_S1E1R", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 7, .crm =3D 8, .opc2 =3D 0, - .access =3D PL1_W, .type =3D ARM_CP_NO_RAW | ARM_CP_RAISES_EXC, + .access =3D PL1_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_RAISES_EXC, .fgt =3D FGT_ATS1E1R, .accessfn =3D at_s1e01_access, .writefn =3D ats_write64 }, { .name =3D "AT_S1E1W", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 7, .crm =3D 8, .opc2 =3D 1, - .access =3D PL1_W, .type =3D ARM_CP_NO_RAW | ARM_CP_RAISES_EXC, + .access =3D PL1_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_RAISES_EXC, .fgt =3D FGT_ATS1E1W, .accessfn =3D at_s1e01_access, .writefn =3D ats_write64 }, { .name =3D "AT_S1E0R", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 7, .crm =3D 8, .opc2 =3D 2, - .access =3D PL1_W, .type =3D ARM_CP_NO_RAW | ARM_CP_RAISES_EXC, + .access =3D PL1_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_RAISES_EXC, .fgt =3D FGT_ATS1E0R, .accessfn =3D at_s1e01_access, .writefn =3D ats_write64 }, { .name =3D "AT_S1E0W", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 7, .crm =3D 8, .opc2 =3D 3, - .access =3D PL1_W, .type =3D ARM_CP_NO_RAW | ARM_CP_RAISES_EXC, + .access =3D PL1_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_RAISES_EXC, .fgt =3D FGT_ATS1E0W, .accessfn =3D at_s1e01_access, .writefn =3D ats_write64 }, { .name =3D "AT_S12E1R", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 7, .crm =3D 8, .opc2 =3D 4, - .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_RAISES_EXC, + .access =3D PL2_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_RAISES_EXC, .accessfn =3D at_e012_access, .writefn =3D ats_write64 }, { .name =3D "AT_S12E1W", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 7, .crm =3D 8, .opc2 =3D 5, - .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_RAISES_EXC, + .access =3D PL2_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_RAISES_EXC, .accessfn =3D at_e012_access, .writefn =3D ats_write64 }, { .name =3D "AT_S12E0R", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 7, .crm =3D 8, .opc2 =3D 6, - .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_RAISES_EXC, + .access =3D PL2_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_RAISES_EXC, .accessfn =3D at_e012_access, .writefn =3D ats_write64 }, { .name =3D "AT_S12E0W", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 7, .crm =3D 8, .opc2 =3D 7, - .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_RAISES_EXC, + .access =3D PL2_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_RAISES_EXC, .accessfn =3D at_e012_access, .writefn =3D ats_write64 }, /* AT S1E2* are elsewhere as they UNDEF from EL3 if EL2 is not present= */ { .name =3D "AT_S1E3R", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 6, .crn =3D 7, .crm =3D 8, .opc2 =3D 0, - .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_RAISES_EXC, + .access =3D PL3_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_RAISES_EXC, .writefn =3D ats_write64 }, { .name =3D "AT_S1E3W", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 6, .crn =3D 7, .crm =3D 8, .opc2 =3D 1, - .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_RAISES_EXC, + .access =3D PL3_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_RAISES_EXC, .writefn =3D ats_write64 }, { .name =3D "PAR_EL1", .state =3D ARM_CP_STATE_AA64, .type =3D ARM_CP_ALIAS, @@ -5206,7 +5224,7 @@ static const ARMCPRegInfo v8_cp_reginfo[] =3D { .fieldoffset =3D offsetof(CPUARMState, sp_el[1]) }, { .name =3D "SPSel", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 4, .crm =3D 2, .opc2 =3D 0, - .type =3D ARM_CP_NO_RAW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_RW, .readfn =3D spsel_read, .writefn =3D spsel_write= }, { .name =3D "SPSR_IRQ", .state =3D ARM_CP_STATE_AA64, .type =3D ARM_CP_ALIAS, @@ -5742,12 +5760,12 @@ static const ARMCPRegInfo el2_cp_reginfo[] =3D { { .name =3D "AT_S1E2R", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 7, .crm =3D 8, .opc2 =3D 0, .access =3D PL2_W, .accessfn =3D at_s1e2_access, - .type =3D ARM_CP_NO_RAW | ARM_CP_RAISES_EXC | ARM_CP_EL3_NO_EL2_UNDE= F, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_RAISES_EXC | ARM_CP= _EL3_NO_EL2_UNDEF, .writefn =3D ats_write64 }, { .name =3D "AT_S1E2W", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 7, .crm =3D 8, .opc2 =3D 1, .access =3D PL2_W, .accessfn =3D at_s1e2_access, - .type =3D ARM_CP_NO_RAW | ARM_CP_RAISES_EXC | ARM_CP_EL3_NO_EL2_UNDE= F, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_RAISES_EXC | ARM_CP= _EL3_NO_EL2_UNDEF, .writefn =3D ats_write64 }, /* * The AArch32 ATS1H* operations are CONSTRAINED UNPREDICTABLE @@ -5757,10 +5775,12 @@ static const ARMCPRegInfo el2_cp_reginfo[] =3D { */ { .name =3D "ATS1HR", .cp =3D 15, .opc1 =3D 4, .crn =3D 7, .crm =3D 8,= .opc2 =3D 0, .access =3D PL2_W, - .writefn =3D ats1h_write, .type =3D ARM_CP_NO_RAW | ARM_CP_RAISES_EX= C }, + .writefn =3D ats1h_write, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_RAISES_EXC }, { .name =3D "ATS1HW", .cp =3D 15, .opc1 =3D 4, .crn =3D 7, .crm =3D 8,= .opc2 =3D 1, .access =3D PL2_W, - .writefn =3D ats1h_write, .type =3D ARM_CP_NO_RAW | ARM_CP_RAISES_EX= C }, + .writefn =3D ats1h_write, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_RAISES_EXC }, { .name =3D "CNTHCTL_EL2", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 14, .crm =3D 1, .opc2 =3D 0, /* @@ -5792,7 +5812,7 @@ static const ARMCPRegInfo el2_cp_reginfo[] =3D { .writefn =3D gt_hyp_cval_write, .raw_writefn =3D raw_write }, { .name =3D "CNTHP_TVAL_EL2", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 14, .crm =3D 2, .opc2 =3D 0, - .type =3D ARM_CP_NO_RAW | ARM_CP_IO, .access =3D PL2_RW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_IO, .access =3D PL2= _RW, .resetfn =3D gt_hyp_timer_reset, .readfn =3D gt_hyp_tval_read, .writefn =3D gt_hyp_tval_write }, { .name =3D "CNTHP_CTL_EL2", .state =3D ARM_CP_STATE_BOTH, @@ -5851,7 +5871,7 @@ static const ARMCPRegInfo el2_sec_cp_reginfo[] =3D { /* Secure EL2 Physical Timer */ { .name =3D "CNTHPS_TVAL_EL2", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 14, .crm =3D 5, .opc2 =3D 0, - .type =3D ARM_CP_NO_RAW | ARM_CP_IO, .access =3D PL2_RW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_IO, .access =3D PL2= _RW, .accessfn =3D gt_sel2timer_access, .readfn =3D gt_sec_pel2_tval_read, .writefn =3D gt_sec_pel2_tval_write, @@ -5875,7 +5895,7 @@ static const ARMCPRegInfo el2_sec_cp_reginfo[] =3D { /* Secure EL2 Virtual Timer */ { .name =3D "CNTHVS_TVAL_EL2", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 14, .crm =3D 4, .opc2 =3D 0, - .type =3D ARM_CP_NO_RAW | ARM_CP_IO, .access =3D PL2_RW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_IO, .access =3D PL2= _RW, .accessfn =3D gt_sel2timer_access, .readfn =3D gt_sec_vel2_tval_read, .writefn =3D gt_sec_vel2_tval_write, @@ -6800,7 +6820,7 @@ static CPAccessResult aa64_allint_access(CPUARMState = *env, static const ARMCPRegInfo nmi_reginfo[] =3D { { .name =3D "ALLINT", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .opc2 =3D 0, .crn =3D 4, .crm =3D 3, - .type =3D ARM_CP_NO_RAW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL1_RW, .accessfn =3D aa64_allint_access, .fieldoffset =3D offsetof(CPUARMState, pstate), .writefn =3D aa64_allint_write, .readfn =3D aa64_allint_read, @@ -7099,11 +7119,11 @@ static uint64_t rndr_readfn(CPUARMState *env, const= ARMCPRegInfo *ri) /* We do not support re-seeding, so the two registers operate the same. */ static const ARMCPRegInfo rndr_reginfo[] =3D { { .name =3D "RNDR", .state =3D ARM_CP_STATE_AA64, - .type =3D ARM_CP_NO_RAW | ARM_CP_SUPPRESS_TB_END | ARM_CP_IO, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_SUPPRESS_TB_END | A= RM_CP_IO, .opc0 =3D 3, .opc1 =3D 3, .crn =3D 2, .crm =3D 4, .opc2 =3D 0, .access =3D PL0_R, .readfn =3D rndr_readfn }, { .name =3D "RNDRRS", .state =3D ARM_CP_STATE_AA64, - .type =3D ARM_CP_NO_RAW | ARM_CP_SUPPRESS_TB_END | ARM_CP_IO, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_SUPPRESS_TB_END | A= RM_CP_IO, .opc0 =3D 3, .opc1 =3D 3, .crn =3D 2, .crm =3D 4, .opc2 =3D 1, .access =3D PL0_R, .readfn =3D rndr_readfn }, }; @@ -7145,7 +7165,8 @@ static void dccvap_writefn(CPUARMState *env, const AR= MCPRegInfo *opaque, static const ARMCPRegInfo dcpop_reg[] =3D { { .name =3D "DC_CVAP", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 3, .crn =3D 7, .crm =3D 12, .opc2 =3D 1, - .access =3D PL0_W, .type =3D ARM_CP_NO_RAW | ARM_CP_SUPPRESS_TB_END, + .access =3D PL0_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_SUPPRESS_TB_END, .fgt =3D FGT_DCCVAP, .accessfn =3D aa64_cacheop_poc_access, .writefn =3D dccvap_writefn }, }; @@ -7153,7 +7174,8 @@ static const ARMCPRegInfo dcpop_reg[] =3D { static const ARMCPRegInfo dcpodp_reg[] =3D { { .name =3D "DC_CVADP", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 3, .crn =3D 7, .crm =3D 13, .opc2 =3D 1, - .access =3D PL0_W, .type =3D ARM_CP_NO_RAW | ARM_CP_SUPPRESS_TB_END, + .access =3D PL0_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_SUPPRESS_TB_END, .fgt =3D FGT_DCCVADP, .accessfn =3D aa64_cacheop_poc_access, .writefn =3D dccvap_writefn }, }; @@ -7265,7 +7287,7 @@ static const ARMCPRegInfo mte_reginfo[] =3D { .fieldoffset =3D offsetof(CPUARMState, cp15.gcr_el1) }, { .name =3D "TCO", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 3, .crn =3D 4, .crm =3D 2, .opc2 =3D 7, - .type =3D ARM_CP_NO_RAW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL0_RW, .readfn =3D tco_read, .writefn =3D tco_write }, { .name =3D "DC_IGVAC", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 7, .crm =3D 6, .opc2 =3D 3, @@ -7553,7 +7575,7 @@ static const ARMCPRegInfo ccsidr2_reginfo[] =3D { .opc0 =3D 3, .opc1 =3D 1, .crn =3D 0, .crm =3D 0, .opc2 =3D 2, .access =3D PL1_R, .accessfn =3D access_tid4, - .readfn =3D ccsidr2_read, .type =3D ARM_CP_NO_RAW }, + .readfn =3D ccsidr2_read, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB }, }; =20 static CPAccessResult access_aa64_tid3(CPUARMState *env, const ARMCPRegInf= o *ri, @@ -7638,7 +7660,7 @@ static const ARMCPRegInfo vhe_reginfo[] =3D { .writefn =3D gt_hv_cval_write, .raw_writefn =3D raw_write }, { .name =3D "CNTHV_TVAL_EL2", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 14, .crm =3D 3, .opc2 =3D 0, - .type =3D ARM_CP_NO_RAW | ARM_CP_IO, .access =3D PL2_RW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_IO, .access =3D PL2= _RW, .resetfn =3D gt_hv_timer_reset, .readfn =3D gt_hv_tval_read, .writefn =3D gt_hv_tval_write }, { .name =3D "CNTHV_CTL_EL2", .state =3D ARM_CP_STATE_BOTH, @@ -7663,12 +7685,12 @@ static const ARMCPRegInfo vhe_reginfo[] =3D { .writefn =3D gt_virt_ctl_write, .raw_writefn =3D raw_write }, { .name =3D "CNTP_TVAL_EL02", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 5, .crn =3D 14, .crm =3D 2, .opc2 =3D 0, - .type =3D ARM_CP_NO_RAW | ARM_CP_IO | ARM_CP_ALIAS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_IO | ARM_CP_ALIAS, .access =3D PL2_RW, .accessfn =3D e2h_access, .readfn =3D gt_phys_tval_read, .writefn =3D gt_phys_tval_write }, { .name =3D "CNTV_TVAL_EL02", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 5, .crn =3D 14, .crm =3D 3, .opc2 =3D 0, - .type =3D ARM_CP_NO_RAW | ARM_CP_IO | ARM_CP_ALIAS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_IO | ARM_CP_ALIAS, .access =3D PL2_RW, .accessfn =3D e2h_access, .readfn =3D gt_virt_tval_read, .writefn =3D gt_virt_tval_write }, { .name =3D "CNTP_CVAL_EL02", .state =3D ARM_CP_STATE_AA64, @@ -7692,12 +7714,14 @@ static const ARMCPRegInfo vhe_reginfo[] =3D { static const ARMCPRegInfo ats1e1_reginfo[] =3D { { .name =3D "AT_S1E1RP", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 7, .crm =3D 9, .opc2 =3D 0, - .access =3D PL1_W, .type =3D ARM_CP_NO_RAW | ARM_CP_RAISES_EXC, + .access =3D PL1_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_RAISES_EXC, .fgt =3D FGT_ATS1E1RP, .accessfn =3D at_s1e01_access, .writefn =3D ats_write64 }, { .name =3D "AT_S1E1WP", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 7, .crm =3D 9, .opc2 =3D 1, - .access =3D PL1_W, .type =3D ARM_CP_NO_RAW | ARM_CP_RAISES_EXC, + .access =3D PL1_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_RAISES_EXC, .fgt =3D FGT_ATS1E1WP, .accessfn =3D at_s1e01_access, .writefn =3D ats_write64 }, }; @@ -7705,11 +7729,13 @@ static const ARMCPRegInfo ats1e1_reginfo[] =3D { static const ARMCPRegInfo ats1cp_reginfo[] =3D { { .name =3D "ATS1CPRP", .cp =3D 15, .opc1 =3D 0, .crn =3D 7, .crm =3D 9, .opc2 =3D 0, - .access =3D PL1_W, .type =3D ARM_CP_NO_RAW | ARM_CP_RAISES_EXC, + .access =3D PL1_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_RAISES_EXC, .writefn =3D ats_write }, { .name =3D "ATS1CPWP", .cp =3D 15, .opc1 =3D 0, .crn =3D 7, .crm =3D 9, .opc2 =3D 1, - .access =3D PL1_W, .type =3D ARM_CP_NO_RAW | ARM_CP_RAISES_EXC, + .access =3D PL1_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_RAISES_EXC, .writefn =3D ats_write }, }; #endif @@ -7768,13 +7794,13 @@ void register_cp_regs_for_features(ARMCPU *cpu) */ { .name =3D "ID_PFR1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 0, .crm =3D 1, .opc2 =3D = 1, - .access =3D PL1_R, .type =3D ARM_CP_NO_RAW, + .access =3D PL1_R, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .accessfn =3D access_aa32_tid3, #ifdef CONFIG_USER_ONLY .type =3D ARM_CP_CONST, .resetvalue =3D cpu->isar.id_pfr1, #else - .type =3D ARM_CP_NO_RAW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .accessfn =3D access_aa32_tid3, .readfn =3D id_pfr1_read, .writefn =3D arm_cp_write_ignore @@ -7902,7 +7928,7 @@ void register_cp_regs_for_features(ARMCPU *cpu) .type =3D ARM_CP_CONST, .resetvalue =3D cpu->isar.id_aa64pfr0 #else - .type =3D ARM_CP_NO_RAW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .accessfn =3D access_aa64_tid3, .readfn =3D id_aa64pfr0_read, .writefn =3D arm_cp_write_ignore @@ -8488,7 +8514,8 @@ void register_cp_regs_for_features(ARMCPU *cpu) /* This underdecoding is safe because the reginfo is NO_RAW. */ { .name =3D "ATS", .cp =3D 15, .crn =3D 7, .crm =3D 8, .opc1 = =3D 0, .opc2 =3D CP_ANY, .access =3D PL1_W, .accessfn =3D ats_access, - .writefn =3D ats_write, .type =3D ARM_CP_NO_RAW | ARM_CP_RAI= SES_EXC }, + .writefn =3D ats_write, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_RAISES_EXC = }, #endif }; =20 @@ -8572,7 +8599,8 @@ void register_cp_regs_for_features(ARMCPU *cpu) ARMCPRegInfo id_v8_midr_cp_reginfo[] =3D { { .name =3D "MIDR_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 0, .crm =3D 0, .opc2 =3D = 0, - .access =3D PL1_R, .type =3D ARM_CP_NO_RAW, .resetvalue =3D = cpu->midr, + .access =3D PL1_R, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, + .resetvalue =3D cpu->midr, .fgt =3D FGT_MIDR_EL1, .fieldoffset =3D offsetof(CPUARMState, cp15.c0_cpuid), .readfn =3D midr_read }, @@ -8696,7 +8724,8 @@ void register_cp_regs_for_features(ARMCPU *cpu) =20 tmp_string =3D g_strdup_printf("PRBAR%u", i); ARMCPRegInfo tmp_prbarn_reginfo =3D { - .name =3D tmp_string, .type =3D ARM_CP_ALIAS | ARM_CP_= NO_RAW, + .name =3D tmp_string, + .type =3D ARM_CP_ALIAS | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .cp =3D 15, .opc1 =3D opc1, .crn =3D 6, .crm =3D crm, = .opc2 =3D opc2, .access =3D PL1_RW, .resetvalue =3D 0, .accessfn =3D access_tvm_trvm, @@ -8708,7 +8737,8 @@ void register_cp_regs_for_features(ARMCPU *cpu) opc2 =3D extract32(i, 0, 1) << 2 | 0x1; tmp_string =3D g_strdup_printf("PRLAR%u", i); ARMCPRegInfo tmp_prlarn_reginfo =3D { - .name =3D tmp_string, .type =3D ARM_CP_ALIAS | ARM_CP_= NO_RAW, + .name =3D tmp_string, + .type =3D ARM_CP_ALIAS | ARM_CP_NO_RAW | ARM_CP_NO_GDB, .cp =3D 15, .opc1 =3D opc1, .crn =3D 6, .crm =3D crm, = .opc2 =3D opc2, .access =3D PL1_RW, .resetvalue =3D 0, .accessfn =3D access_tvm_trvm, @@ -8727,7 +8757,7 @@ void register_cp_regs_for_features(ARMCPU *cpu) tmp_string =3D g_strdup_printf("HPRBAR%u", i); ARMCPRegInfo tmp_hprbarn_reginfo =3D { .name =3D tmp_string, - .type =3D ARM_CP_NO_RAW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .cp =3D 15, .opc1 =3D opc1, .crn =3D 6, .crm =3D crm, = .opc2 =3D opc2, .access =3D PL2_RW, .resetvalue =3D 0, .writefn =3D pmsav8r_regn_write, .readfn =3D pmsav8r_r= egn_read @@ -8739,7 +8769,7 @@ void register_cp_regs_for_features(ARMCPU *cpu) tmp_string =3D g_strdup_printf("HPRLAR%u", i); ARMCPRegInfo tmp_hprlarn_reginfo =3D { .name =3D tmp_string, - .type =3D ARM_CP_NO_RAW, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .cp =3D 15, .opc1 =3D opc1, .crn =3D 6, .crm =3D crm, = .opc2 =3D opc2, .access =3D PL2_RW, .resetvalue =3D 0, .writefn =3D pmsav8r_regn_write, .readfn =3D pmsav8r_r= egn_read @@ -8757,7 +8787,8 @@ void register_cp_regs_for_features(ARMCPU *cpu) { .name =3D "MPIDR_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .crn =3D 0, .crm =3D 0, .opc1 =3D 0, .opc2 =3D = 5, .fgt =3D FGT_MPIDR_EL1, - .access =3D PL1_R, .readfn =3D mpidr_read, .type =3D ARM_CP_= NO_RAW }, + .access =3D PL1_R, .readfn =3D mpidr_read, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB }, }; #ifdef CONFIG_USER_ONLY static const ARMCPRegUserSpaceInfo mpidr_user_cp_reginfo[] =3D { @@ -9195,7 +9226,7 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, const= ARMCPRegInfo *r, * never migratable and not even raw-accessible. */ if (r2->type & ARM_CP_SPECIAL_MASK) { - r2->type |=3D ARM_CP_NO_RAW; + r2->type |=3D ARM_CP_NO_RAW | ARM_CP_NO_GDB; } if (((r->crm =3D=3D CP_ANY) && crm !=3D 0) || ((r->opc1 =3D=3D CP_ANY) && opc1 !=3D 0) || diff --git a/target/arm/tcg/tlb-insns.c b/target/arm/tcg/tlb-insns.c index 630a481f0f81..8508b253e97d 100644 --- a/target/arm/tcg/tlb-insns.c +++ b/target/arm/tcg/tlb-insns.c @@ -513,291 +513,323 @@ static const ARMCPRegInfo tlbi_not_v7_cp_reginfo[] = =3D { */ { .name =3D "TLBIALL", .cp =3D 15, .crn =3D 8, .crm =3D CP_ANY, .opc1 =3D CP_ANY, .opc2 =3D 0, .access =3D PL1_W, .writefn =3D tlbia= ll_write, - .type =3D ARM_CP_NO_RAW }, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB }, { .name =3D "TLBIMVA", .cp =3D 15, .crn =3D 8, .crm =3D CP_ANY, .opc1 =3D CP_ANY, .opc2 =3D 1, .access =3D PL1_W, .writefn =3D tlbim= va_write, - .type =3D ARM_CP_NO_RAW }, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB }, { .name =3D "TLBIASID", .cp =3D 15, .crn =3D 8, .crm =3D CP_ANY, .opc1 =3D CP_ANY, .opc2 =3D 2, .access =3D PL1_W, .writefn =3D tlbia= sid_write, - .type =3D ARM_CP_NO_RAW }, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB }, { .name =3D "TLBIMVAA", .cp =3D 15, .crn =3D 8, .crm =3D CP_ANY, .opc1 =3D CP_ANY, .opc2 =3D 3, .access =3D PL1_W, .writefn =3D tlbim= vaa_write, - .type =3D ARM_CP_NO_RAW }, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB }, }; =20 static const ARMCPRegInfo tlbi_v7_cp_reginfo[] =3D { /* 32 bit ITLB invalidates */ { .name =3D "ITLBIALL", .cp =3D 15, .opc1 =3D 0, .crn =3D 8, .crm =3D = 5, .opc2 =3D 0, - .type =3D ARM_CP_NO_RAW, .access =3D PL1_W, .accessfn =3D access_ttl= b, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, + .access =3D PL1_W, .accessfn =3D access_ttlb, .writefn =3D tlbiall_write }, { .name =3D "ITLBIMVA", .cp =3D 15, .opc1 =3D 0, .crn =3D 8, .crm =3D = 5, .opc2 =3D 1, - .type =3D ARM_CP_NO_RAW, .access =3D PL1_W, .accessfn =3D access_ttl= b, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, + .access =3D PL1_W, .accessfn =3D access_ttlb, .writefn =3D tlbimva_write }, { .name =3D "ITLBIASID", .cp =3D 15, .opc1 =3D 0, .crn =3D 8, .crm =3D= 5, .opc2 =3D 2, - .type =3D ARM_CP_NO_RAW, .access =3D PL1_W, .accessfn =3D access_ttl= b, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, + .access =3D PL1_W, .accessfn =3D access_ttlb, .writefn =3D tlbiasid_write }, /* 32 bit DTLB invalidates */ { .name =3D "DTLBIALL", .cp =3D 15, .opc1 =3D 0, .crn =3D 8, .crm =3D = 6, .opc2 =3D 0, - .type =3D ARM_CP_NO_RAW, .access =3D PL1_W, .accessfn =3D access_ttl= b, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, + .access =3D PL1_W, .accessfn =3D access_ttlb, .writefn =3D tlbiall_write }, { .name =3D "DTLBIMVA", .cp =3D 15, .opc1 =3D 0, .crn =3D 8, .crm =3D = 6, .opc2 =3D 1, - .type =3D ARM_CP_NO_RAW, .access =3D PL1_W, .accessfn =3D access_ttl= b, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, + .access =3D PL1_W, .accessfn =3D access_ttlb, .writefn =3D tlbimva_write }, { .name =3D "DTLBIASID", .cp =3D 15, .opc1 =3D 0, .crn =3D 8, .crm =3D= 6, .opc2 =3D 2, - .type =3D ARM_CP_NO_RAW, .access =3D PL1_W, .accessfn =3D access_ttl= b, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, + .access =3D PL1_W, .accessfn =3D access_ttlb, .writefn =3D tlbiasid_write }, /* 32 bit TLB invalidates */ { .name =3D "TLBIALL", .cp =3D 15, .opc1 =3D 0, .crn =3D 8, .crm =3D 7= , .opc2 =3D 0, - .type =3D ARM_CP_NO_RAW, .access =3D PL1_W, .accessfn =3D access_ttl= b, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, + .access =3D PL1_W, .accessfn =3D access_ttlb, .writefn =3D tlbiall_write }, { .name =3D "TLBIMVA", .cp =3D 15, .opc1 =3D 0, .crn =3D 8, .crm =3D 7= , .opc2 =3D 1, - .type =3D ARM_CP_NO_RAW, .access =3D PL1_W, .accessfn =3D access_ttl= b, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, + .access =3D PL1_W, .accessfn =3D access_ttlb, .writefn =3D tlbimva_write }, { .name =3D "TLBIASID", .cp =3D 15, .opc1 =3D 0, .crn =3D 8, .crm =3D = 7, .opc2 =3D 2, - .type =3D ARM_CP_NO_RAW, .access =3D PL1_W, .accessfn =3D access_ttl= b, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, + .access =3D PL1_W, .accessfn =3D access_ttlb, .writefn =3D tlbiasid_write }, { .name =3D "TLBIMVAA", .cp =3D 15, .opc1 =3D 0, .crn =3D 8, .crm =3D = 7, .opc2 =3D 3, - .type =3D ARM_CP_NO_RAW, .access =3D PL1_W, .accessfn =3D access_ttl= b, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, + .access =3D PL1_W, .accessfn =3D access_ttlb, .writefn =3D tlbimvaa_write }, }; =20 static const ARMCPRegInfo tlbi_v7mp_cp_reginfo[] =3D { /* 32 bit TLB invalidates, Inner Shareable */ { .name =3D "TLBIALLIS", .cp =3D 15, .opc1 =3D 0, .crn =3D 8, .crm =3D= 3, .opc2 =3D 0, - .type =3D ARM_CP_NO_RAW, .access =3D PL1_W, .accessfn =3D access_ttl= bis, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, + .access =3D PL1_W, .accessfn =3D access_ttlbis, .writefn =3D tlbiall_is_write }, { .name =3D "TLBIMVAIS", .cp =3D 15, .opc1 =3D 0, .crn =3D 8, .crm =3D= 3, .opc2 =3D 1, - .type =3D ARM_CP_NO_RAW, .access =3D PL1_W, .accessfn =3D access_ttl= bis, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, + .access =3D PL1_W, .accessfn =3D access_ttlbis, .writefn =3D tlbimva_is_write }, { .name =3D "TLBIASIDIS", .cp =3D 15, .opc1 =3D 0, .crn =3D 8, .crm = =3D 3, .opc2 =3D 2, - .type =3D ARM_CP_NO_RAW, .access =3D PL1_W, .accessfn =3D access_ttl= bis, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, + .access =3D PL1_W, .accessfn =3D access_ttlbis, .writefn =3D tlbiasid_is_write }, { .name =3D "TLBIMVAAIS", .cp =3D 15, .opc1 =3D 0, .crn =3D 8, .crm = =3D 3, .opc2 =3D 3, - .type =3D ARM_CP_NO_RAW, .access =3D PL1_W, .accessfn =3D access_ttl= bis, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, + .access =3D PL1_W, .accessfn =3D access_ttlbis, .writefn =3D tlbimvaa_is_write }, }; =20 static const ARMCPRegInfo tlbi_v8_cp_reginfo[] =3D { /* AArch32 TLB invalidate last level of translation table walk */ { .name =3D "TLBIMVALIS", .cp =3D 15, .opc1 =3D 0, .crn =3D 8, .crm = =3D 3, .opc2 =3D 5, - .type =3D ARM_CP_NO_RAW, .access =3D PL1_W, .accessfn =3D access_ttl= bis, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, + .access =3D PL1_W, .accessfn =3D access_ttlbis, .writefn =3D tlbimva_is_write }, { .name =3D "TLBIMVAALIS", .cp =3D 15, .opc1 =3D 0, .crn =3D 8, .crm = =3D 3, .opc2 =3D 7, - .type =3D ARM_CP_NO_RAW, .access =3D PL1_W, .accessfn =3D access_ttl= bis, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, + .access =3D PL1_W, .accessfn =3D access_ttlbis, .writefn =3D tlbimvaa_is_write }, { .name =3D "TLBIMVAL", .cp =3D 15, .opc1 =3D 0, .crn =3D 8, .crm =3D = 7, .opc2 =3D 5, - .type =3D ARM_CP_NO_RAW, .access =3D PL1_W, .accessfn =3D access_ttl= b, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, + .access =3D PL1_W, .accessfn =3D access_ttlb, .writefn =3D tlbimva_write }, { .name =3D "TLBIMVAAL", .cp =3D 15, .opc1 =3D 0, .crn =3D 8, .crm =3D= 7, .opc2 =3D 7, - .type =3D ARM_CP_NO_RAW, .access =3D PL1_W, .accessfn =3D access_ttl= b, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, + .access =3D PL1_W, .accessfn =3D access_ttlb, .writefn =3D tlbimvaa_write }, { .name =3D "TLBIMVALH", .cp =3D 15, .opc1 =3D 4, .crn =3D 8, .crm =3D= 7, .opc2 =3D 5, - .type =3D ARM_CP_NO_RAW, .access =3D PL2_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL2_W, .writefn =3D tlbimva_hyp_write }, { .name =3D "TLBIMVALHIS", .cp =3D 15, .opc1 =3D 4, .crn =3D 8, .crm =3D 3, .opc2 =3D 5, - .type =3D ARM_CP_NO_RAW, .access =3D PL2_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL2_W, .writefn =3D tlbimva_hyp_is_write }, { .name =3D "TLBIIPAS2", .cp =3D 15, .opc1 =3D 4, .crn =3D 8, .crm =3D 4, .opc2 =3D 1, - .type =3D ARM_CP_NO_RAW, .access =3D PL2_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL2_W, .writefn =3D tlbiipas2_hyp_write }, { .name =3D "TLBIIPAS2IS", .cp =3D 15, .opc1 =3D 4, .crn =3D 8, .crm =3D 0, .opc2 =3D 1, - .type =3D ARM_CP_NO_RAW, .access =3D PL2_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL2_W, .writefn =3D tlbiipas2is_hyp_write }, { .name =3D "TLBIIPAS2L", .cp =3D 15, .opc1 =3D 4, .crn =3D 8, .crm =3D 4, .opc2 =3D 5, - .type =3D ARM_CP_NO_RAW, .access =3D PL2_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL2_W, .writefn =3D tlbiipas2_hyp_write }, { .name =3D "TLBIIPAS2LIS", .cp =3D 15, .opc1 =3D 4, .crn =3D 8, .crm =3D 0, .opc2 =3D 5, - .type =3D ARM_CP_NO_RAW, .access =3D PL2_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL2_W, .writefn =3D tlbiipas2is_hyp_write }, /* AArch64 TLBI operations */ { .name =3D "TLBI_VMALLE1IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 3, .opc2 =3D 0, .access =3D PL1_W, .accessfn =3D access_ttlbis, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIVMALLE1IS, .writefn =3D tlbi_aa64_vmalle1is_write }, { .name =3D "TLBI_VAE1IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 3, .opc2 =3D 1, .access =3D PL1_W, .accessfn =3D access_ttlbis, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIVAE1IS, .writefn =3D tlbi_aa64_vae1is_write }, { .name =3D "TLBI_ASIDE1IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 3, .opc2 =3D 2, .access =3D PL1_W, .accessfn =3D access_ttlbis, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIASIDE1IS, .writefn =3D tlbi_aa64_vmalle1is_write }, { .name =3D "TLBI_VAAE1IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 3, .opc2 =3D 3, .access =3D PL1_W, .accessfn =3D access_ttlbis, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIVAAE1IS, .writefn =3D tlbi_aa64_vae1is_write }, { .name =3D "TLBI_VALE1IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 3, .opc2 =3D 5, .access =3D PL1_W, .accessfn =3D access_ttlbis, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIVALE1IS, .writefn =3D tlbi_aa64_vae1is_write }, { .name =3D "TLBI_VAALE1IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 3, .opc2 =3D 7, .access =3D PL1_W, .accessfn =3D access_ttlbis, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIVAALE1IS, .writefn =3D tlbi_aa64_vae1is_write }, { .name =3D "TLBI_VMALLE1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 7, .opc2 =3D 0, .access =3D PL1_W, .accessfn =3D access_ttlb, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIVMALLE1, .writefn =3D tlbi_aa64_vmalle1_write }, { .name =3D "TLBI_VAE1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 7, .opc2 =3D 1, .access =3D PL1_W, .accessfn =3D access_ttlb, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIVAE1, .writefn =3D tlbi_aa64_vae1_write }, { .name =3D "TLBI_ASIDE1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 7, .opc2 =3D 2, .access =3D PL1_W, .accessfn =3D access_ttlb, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIASIDE1, .writefn =3D tlbi_aa64_vmalle1_write }, { .name =3D "TLBI_VAAE1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 7, .opc2 =3D 3, .access =3D PL1_W, .accessfn =3D access_ttlb, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIVAAE1, .writefn =3D tlbi_aa64_vae1_write }, { .name =3D "TLBI_VALE1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 7, .opc2 =3D 5, .access =3D PL1_W, .accessfn =3D access_ttlb, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIVALE1, .writefn =3D tlbi_aa64_vae1_write }, { .name =3D "TLBI_VAALE1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 7, .opc2 =3D 7, .access =3D PL1_W, .accessfn =3D access_ttlb, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIVAALE1, .writefn =3D tlbi_aa64_vae1_write }, { .name =3D "TLBI_IPAS2E1IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 0, .opc2 =3D 1, - .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL2_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .writefn =3D tlbi_aa64_ipas2e1is_write }, { .name =3D "TLBI_IPAS2LE1IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 0, .opc2 =3D 5, - .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL2_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .writefn =3D tlbi_aa64_ipas2e1is_write }, { .name =3D "TLBI_ALLE1IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 3, .opc2 =3D 4, - .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL2_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .writefn =3D tlbi_aa64_alle1is_write }, { .name =3D "TLBI_VMALLS12E1IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 3, .opc2 =3D 6, - .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL2_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .writefn =3D tlbi_aa64_alle1is_write }, { .name =3D "TLBI_IPAS2E1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 4, .opc2 =3D 1, - .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL2_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .writefn =3D tlbi_aa64_ipas2e1_write }, { .name =3D "TLBI_IPAS2LE1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 4, .opc2 =3D 5, - .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL2_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .writefn =3D tlbi_aa64_ipas2e1_write }, { .name =3D "TLBI_ALLE1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 7, .opc2 =3D 4, - .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL2_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .writefn =3D tlbi_aa64_alle1_write }, { .name =3D "TLBI_VMALLS12E1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 7, .opc2 =3D 6, - .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL2_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .writefn =3D tlbi_aa64_alle1is_write }, }; =20 static const ARMCPRegInfo tlbi_el2_cp_reginfo[] =3D { { .name =3D "TLBIALLNSNH", .cp =3D 15, .opc1 =3D 4, .crn =3D 8, .crm =3D 7, .opc2 =3D 4, - .type =3D ARM_CP_NO_RAW, .access =3D PL2_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL2_W, .writefn =3D tlbiall_nsnh_write }, { .name =3D "TLBIALLNSNHIS", .cp =3D 15, .opc1 =3D 4, .crn =3D 8, .crm =3D 3, .opc2 =3D 4, - .type =3D ARM_CP_NO_RAW, .access =3D PL2_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL2_W, .writefn =3D tlbiall_nsnh_is_write }, { .name =3D "TLBIALLH", .cp =3D 15, .opc1 =3D 4, .crn =3D 8, .crm =3D = 7, .opc2 =3D 0, - .type =3D ARM_CP_NO_RAW, .access =3D PL2_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL2_W, .writefn =3D tlbiall_hyp_write }, { .name =3D "TLBIALLHIS", .cp =3D 15, .opc1 =3D 4, .crn =3D 8, .crm = =3D 3, .opc2 =3D 0, - .type =3D ARM_CP_NO_RAW, .access =3D PL2_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL2_W, .writefn =3D tlbiall_hyp_is_write }, { .name =3D "TLBIMVAH", .cp =3D 15, .opc1 =3D 4, .crn =3D 8, .crm =3D = 7, .opc2 =3D 1, - .type =3D ARM_CP_NO_RAW, .access =3D PL2_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL2_W, .writefn =3D tlbimva_hyp_write }, { .name =3D "TLBIMVAHIS", .cp =3D 15, .opc1 =3D 4, .crn =3D 8, .crm = =3D 3, .opc2 =3D 1, - .type =3D ARM_CP_NO_RAW, .access =3D PL2_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .access =3D PL2_W, .writefn =3D tlbimva_hyp_is_write }, { .name =3D "TLBI_ALLE2", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 7, .opc2 =3D 0, .access =3D PL2_W, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN= DEF, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS | ARM_= CP_EL3_NO_EL2_UNDEF, .writefn =3D tlbi_aa64_alle2_write }, { .name =3D "TLBI_VAE2", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 7, .opc2 =3D 1, .access =3D PL2_W, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN= DEF, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS | ARM_= CP_EL3_NO_EL2_UNDEF, .writefn =3D tlbi_aa64_vae2_write }, { .name =3D "TLBI_VALE2", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 7, .opc2 =3D 5, .access =3D PL2_W, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN= DEF, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS | ARM_= CP_EL3_NO_EL2_UNDEF, .writefn =3D tlbi_aa64_vae2_write }, { .name =3D "TLBI_ALLE2IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 3, .opc2 =3D 0, .access =3D PL2_W, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN= DEF, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS | ARM_= CP_EL3_NO_EL2_UNDEF, .writefn =3D tlbi_aa64_alle2is_write }, { .name =3D "TLBI_VAE2IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 3, .opc2 =3D 1, .access =3D PL2_W, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN= DEF, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS | ARM_= CP_EL3_NO_EL2_UNDEF, .writefn =3D tlbi_aa64_vae2is_write }, { .name =3D "TLBI_VALE2IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 3, .opc2 =3D 5, .access =3D PL2_W, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN= DEF, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS | ARM_= CP_EL3_NO_EL2_UNDEF, .writefn =3D tlbi_aa64_vae2is_write }, }; =20 static const ARMCPRegInfo tlbi_el3_cp_reginfo[] =3D { { .name =3D "TLBI_ALLE3IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 3, .opc2 =3D 0, - .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL3_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .writefn =3D tlbi_aa64_alle3is_write }, { .name =3D "TLBI_VAE3IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 3, .opc2 =3D 1, - .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL3_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .writefn =3D tlbi_aa64_vae3is_write }, { .name =3D "TLBI_VALE3IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 3, .opc2 =3D 5, - .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL3_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .writefn =3D tlbi_aa64_vae3is_write }, { .name =3D "TLBI_ALLE3", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 7, .opc2 =3D 0, - .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL3_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .writefn =3D tlbi_aa64_alle3_write }, { .name =3D "TLBI_VAE3", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 7, .opc2 =3D 1, - .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL3_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .writefn =3D tlbi_aa64_vae3_write }, { .name =3D "TLBI_VALE3", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 7, .opc2 =3D 5, - .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL3_W, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .writefn =3D tlbi_aa64_vae3_write }, }; =20 @@ -1000,144 +1032,144 @@ static const ARMCPRegInfo tlbirange_reginfo[] =3D= { { .name =3D "TLBI_RVAE1IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 2, .opc2 =3D 1, .access =3D PL1_W, .accessfn =3D access_ttlbis, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIRVAE1IS, .writefn =3D tlbi_aa64_rvae1is_write }, { .name =3D "TLBI_RVAAE1IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 2, .opc2 =3D 3, .access =3D PL1_W, .accessfn =3D access_ttlbis, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIRVAAE1IS, .writefn =3D tlbi_aa64_rvae1is_write }, { .name =3D "TLBI_RVALE1IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 2, .opc2 =3D 5, .access =3D PL1_W, .accessfn =3D access_ttlbis, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIRVALE1IS, .writefn =3D tlbi_aa64_rvae1is_write }, { .name =3D "TLBI_RVAALE1IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 2, .opc2 =3D 7, .access =3D PL1_W, .accessfn =3D access_ttlbis, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIRVAALE1IS, .writefn =3D tlbi_aa64_rvae1is_write }, { .name =3D "TLBI_RVAE1OS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 5, .opc2 =3D 1, .access =3D PL1_W, .accessfn =3D access_ttlbos, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIRVAE1OS, .writefn =3D tlbi_aa64_rvae1is_write }, { .name =3D "TLBI_RVAAE1OS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 5, .opc2 =3D 3, .access =3D PL1_W, .accessfn =3D access_ttlbos, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIRVAAE1OS, .writefn =3D tlbi_aa64_rvae1is_write }, { .name =3D "TLBI_RVALE1OS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 5, .opc2 =3D 5, .access =3D PL1_W, .accessfn =3D access_ttlbos, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIRVALE1OS, .writefn =3D tlbi_aa64_rvae1is_write }, { .name =3D "TLBI_RVAALE1OS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 5, .opc2 =3D 7, .access =3D PL1_W, .accessfn =3D access_ttlbos, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIRVAALE1OS, .writefn =3D tlbi_aa64_rvae1is_write }, { .name =3D "TLBI_RVAE1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 6, .opc2 =3D 1, .access =3D PL1_W, .accessfn =3D access_ttlb, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIRVAE1, .writefn =3D tlbi_aa64_rvae1_write }, { .name =3D "TLBI_RVAAE1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 6, .opc2 =3D 3, .access =3D PL1_W, .accessfn =3D access_ttlb, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIRVAAE1, .writefn =3D tlbi_aa64_rvae1_write }, { .name =3D "TLBI_RVALE1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 6, .opc2 =3D 5, .access =3D PL1_W, .accessfn =3D access_ttlb, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIRVALE1, .writefn =3D tlbi_aa64_rvae1_write }, { .name =3D "TLBI_RVAALE1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 6, .opc2 =3D 7, .access =3D PL1_W, .accessfn =3D access_ttlb, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIRVAALE1, .writefn =3D tlbi_aa64_rvae1_write }, { .name =3D "TLBI_RIPAS2E1IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 0, .opc2 =3D 2, - .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_= ADD_TLBI_NXS, .writefn =3D tlbi_aa64_ripas2e1is_write }, { .name =3D "TLBI_RIPAS2LE1IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 0, .opc2 =3D 6, - .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_= ADD_TLBI_NXS, .writefn =3D tlbi_aa64_ripas2e1is_write }, { .name =3D "TLBI_RVAE2IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 2, .opc2 =3D 1, .access =3D PL2_W, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN= DEF, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS | ARM_= CP_EL3_NO_EL2_UNDEF, .writefn =3D tlbi_aa64_rvae2is_write }, { .name =3D "TLBI_RVALE2IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 2, .opc2 =3D 5, .access =3D PL2_W, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN= DEF, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS | ARM_= CP_EL3_NO_EL2_UNDEF, .writefn =3D tlbi_aa64_rvae2is_write }, { .name =3D "TLBI_RIPAS2E1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 4, .opc2 =3D 2, - .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_= ADD_TLBI_NXS, .writefn =3D tlbi_aa64_ripas2e1_write }, { .name =3D "TLBI_RIPAS2LE1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 4, .opc2 =3D 6, - .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_= ADD_TLBI_NXS, .writefn =3D tlbi_aa64_ripas2e1_write }, { .name =3D "TLBI_RVAE2OS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 5, .opc2 =3D 1, .access =3D PL2_W, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN= DEF, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS | ARM_= CP_EL3_NO_EL2_UNDEF, .writefn =3D tlbi_aa64_rvae2is_write }, { .name =3D "TLBI_RVALE2OS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 5, .opc2 =3D 5, .access =3D PL2_W, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN= DEF, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS | ARM_= CP_EL3_NO_EL2_UNDEF, .writefn =3D tlbi_aa64_rvae2is_write }, { .name =3D "TLBI_RVAE2", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 6, .opc2 =3D 1, .access =3D PL2_W, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN= DEF, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS | ARM_= CP_EL3_NO_EL2_UNDEF, .writefn =3D tlbi_aa64_rvae2_write }, { .name =3D "TLBI_RVALE2", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 6, .opc2 =3D 5, .access =3D PL2_W, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN= DEF, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS | ARM_= CP_EL3_NO_EL2_UNDEF, .writefn =3D tlbi_aa64_rvae2_write }, { .name =3D "TLBI_RVAE3IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 2, .opc2 =3D 1, - .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_= ADD_TLBI_NXS, .writefn =3D tlbi_aa64_rvae3is_write }, { .name =3D "TLBI_RVALE3IS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 2, .opc2 =3D 5, - .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_= ADD_TLBI_NXS, .writefn =3D tlbi_aa64_rvae3is_write }, { .name =3D "TLBI_RVAE3OS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 5, .opc2 =3D 1, - .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_= ADD_TLBI_NXS, .writefn =3D tlbi_aa64_rvae3is_write }, { .name =3D "TLBI_RVALE3OS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 5, .opc2 =3D 5, - .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_= ADD_TLBI_NXS, .writefn =3D tlbi_aa64_rvae3is_write }, { .name =3D "TLBI_RVAE3", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 6, .opc2 =3D 1, - .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_= ADD_TLBI_NXS, .writefn =3D tlbi_aa64_rvae3_write }, { .name =3D "TLBI_RVALE3", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 6, .opc2 =3D 5, - .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_= ADD_TLBI_NXS, .writefn =3D tlbi_aa64_rvae3_write }, }; =20 @@ -1145,62 +1177,62 @@ static const ARMCPRegInfo tlbios_reginfo[] =3D { { .name =3D "TLBI_VMALLE1OS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 1, .opc2 =3D 0, .access =3D PL1_W, .accessfn =3D access_ttlbos, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIVMALLE1OS, .writefn =3D tlbi_aa64_vmalle1is_write }, { .name =3D "TLBI_VAE1OS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 1, .opc2 =3D 1, .fgt =3D FGT_TLBIVAE1OS, .access =3D PL1_W, .accessfn =3D access_ttlbos, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .writefn =3D tlbi_aa64_vae1is_write }, { .name =3D "TLBI_ASIDE1OS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 1, .opc2 =3D 2, .access =3D PL1_W, .accessfn =3D access_ttlbos, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIASIDE1OS, .writefn =3D tlbi_aa64_vmalle1is_write }, { .name =3D "TLBI_VAAE1OS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 1, .opc2 =3D 3, .access =3D PL1_W, .accessfn =3D access_ttlbos, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIVAAE1OS, .writefn =3D tlbi_aa64_vae1is_write }, { .name =3D "TLBI_VALE1OS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 1, .opc2 =3D 5, .access =3D PL1_W, .accessfn =3D access_ttlbos, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIVALE1OS, .writefn =3D tlbi_aa64_vae1is_write }, { .name =3D "TLBI_VAALE1OS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 1, .opc2 =3D 7, .access =3D PL1_W, .accessfn =3D access_ttlbos, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .fgt =3D FGT_TLBIVAALE1OS, .writefn =3D tlbi_aa64_vae1is_write }, { .name =3D "TLBI_ALLE2OS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 1, .opc2 =3D 0, .access =3D PL2_W, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN= DEF, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS | ARM_= CP_EL3_NO_EL2_UNDEF, .writefn =3D tlbi_aa64_alle2is_write }, { .name =3D "TLBI_VAE2OS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 1, .opc2 =3D 1, .access =3D PL2_W, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN= DEF, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS | ARM_= CP_EL3_NO_EL2_UNDEF, .writefn =3D tlbi_aa64_vae2is_write }, { .name =3D "TLBI_ALLE1OS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 1, .opc2 =3D 4, .access =3D PL2_W, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS, .writefn =3D tlbi_aa64_alle1is_write }, { .name =3D "TLBI_VALE2OS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 1, .opc2 =3D 5, .access =3D PL2_W, - .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN= DEF, + .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_ADD_TLBI_NXS | ARM_= CP_EL3_NO_EL2_UNDEF, .writefn =3D tlbi_aa64_vae2is_write }, { .name =3D "TLBI_VMALLS12E1OS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 1, .opc2 =3D 6, - .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_= ADD_TLBI_NXS, .writefn =3D tlbi_aa64_alle1is_write }, { .name =3D "TLBI_IPAS2E1OS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 4, .opc2 =3D 0, @@ -1216,15 +1248,15 @@ static const ARMCPRegInfo tlbios_reginfo[] =3D { .access =3D PL2_W, .type =3D ARM_CP_NOP | ARM_CP_ADD_TLBI_NXS }, { .name =3D "TLBI_ALLE3OS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 1, .opc2 =3D 0, - .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_= ADD_TLBI_NXS, .writefn =3D tlbi_aa64_alle3is_write }, { .name =3D "TLBI_VAE3OS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 1, .opc2 =3D 1, - .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_= ADD_TLBI_NXS, .writefn =3D tlbi_aa64_vae3is_write }, { .name =3D "TLBI_VALE3OS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 1, .opc2 =3D 5, - .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS, + .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB | ARM_CP_= ADD_TLBI_NXS, .writefn =3D tlbi_aa64_vae3is_write }, }; =20 @@ -1247,11 +1279,11 @@ static void tlbi_aa64_paallos_write(CPUARMState *en= v, const ARMCPRegInfo *ri, static const ARMCPRegInfo tlbi_rme_reginfo[] =3D { { .name =3D "TLBI_PAALL", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 7, .opc2 =3D 4, - .access =3D PL3_W, .type =3D ARM_CP_NO_RAW, + .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .writefn =3D tlbi_aa64_paall_write }, { .name =3D "TLBI_PAALLOS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 1, .opc2 =3D 4, - .access =3D PL3_W, .type =3D ARM_CP_NO_RAW, + .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .writefn =3D tlbi_aa64_paallos_write }, /* * QEMU does not have a way to invalidate by physical address, thus @@ -1261,11 +1293,11 @@ static const ARMCPRegInfo tlbi_rme_reginfo[] =3D { */ { .name =3D "TLBI_RPALOS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 4, .opc2 =3D 7, - .access =3D PL3_W, .type =3D ARM_CP_NO_RAW, + .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .writefn =3D tlbi_aa64_paallos_write }, { .name =3D "TLBI_RPAOS", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 4, .opc2 =3D 3, - .access =3D PL3_W, .type =3D ARM_CP_NO_RAW, + .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_NO_GDB, .writefn =3D tlbi_aa64_paallos_write }, }; =20 --=20 2.48.1 From nobody Thu Apr 3 10:05:54 2025 Delivered-To: importer@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+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1742210311; cv=none; d=zohomail.com; s=zohoarc; b=JyXyoxG1ZCKE54291KeSHqueLiEgD+0hr2qLGDmIftd0KLtUy4I0H6XE1nl7SD5bpF9eojsIlplgO1GRiG5bQhU9yWLVulO8mAW+K9FCQeyQa/IRNHIYipeobFn3bRD3earsWnfqaElb8ZSXMw5DB3pwrC2USprHH0GQz2VWDj0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1742210311; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=nvZxXJ1GvFvx4INbCk9ERB4VBpXlB9W+lCDR6eWj6sU=; b=g82FvtfeP+jkpBNtXpM2Z6sjclG78kG27kkH7Lh9LMDAU/plIz1inJA1+URQzk8XfnrM517+vLSjyYNyKv9Myk8dNoJW1g69BKX+4BGiknqcriLBwTUhOBF6x94FaUvFmKVoqRNlM9CfHFrRs16JYJcTYvEGMDykuLYseJwJEb0= 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+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1742210311895451.3595049924626; Mon, 17 Mar 2025 04:18:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tu8Si-0003H9-N7; Mon, 17 Mar 2025 07:16:52 -0400 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 1tu8SZ-0003Dj-OB for qemu-devel@nongnu.org; Mon, 17 Mar 2025 07:16:43 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tu8SV-0003lA-JE for qemu-devel@nongnu.org; Mon, 17 Mar 2025 07:16:43 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-223a7065ff8so33441085ad.0 for ; Mon, 17 Mar 2025 04:16:38 -0700 (PDT) Received: from localhost ([157.82.207.107]) by smtp.gmail.com with UTF8SMTPSA id d2e1a72fcca58-73711694430sm7254565b3a.122.2025.03.17.04.16.36 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 17 Mar 2025 04:16:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=daynix-com.20230601.gappssmtp.com; s=20230601; t=1742210198; x=1742814998; darn=nongnu.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=nvZxXJ1GvFvx4INbCk9ERB4VBpXlB9W+lCDR6eWj6sU=; b=H+T2cYL7X13cQy/ILr0gZ4ommCJzEMgEryES6tKL7Dn+OizwwbEv8Ms6JolnzPF5O/ 6oIBNlydBU2i9RtDRyrs1DVEOp4nXa/kqiFk0MnvvrEXNl+YuwWmSpF66mIbsl2FD+af G5SRolE4add1EYVN8Z8kZhXW3Ebvi8hYY+lmm8gvS5IIhcr2axdZt5M1j09ZqSU7BEby FXY/1dLT4CVcE9lUVfZ6Ea0mT6sABXQkqRu/ugf7qEkn96kF1qEy7v7zqj0GpACY79I5 FGjswFqhYyqPBPiZG1AJYPwdwVb1JtrybxJgB9SaDF7mDJglWSz/xdhXPC7CQZIaZM7o 7/rA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742210198; x=1742814998; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nvZxXJ1GvFvx4INbCk9ERB4VBpXlB9W+lCDR6eWj6sU=; b=j9+fEhFHTBIGmSmZXfwlsNHeO9i5Rega+eYhkONzdL5aPFX97wK69au+QLNHxu4U8D f67OJsKCh9bru7xye76sxhnbAqHQ3w9iOZZxTmhbYW0Ti00s5LqEFhy+VL7WuHsfnGe5 c6/IYBavt71FnPH2Lar+WLUWV2qFuprHO+bI+u1ABJM2o0G9mj/Y8/yKrXJTy2oIJ5C8 SvSmH9KNvC5pY/o3/6j7Jzo6Lm6bPw1bh9XAJ7Or+hUj67fhpX78PuabEXTuz1TedXr6 z5/lnFYtDSvaMAuczvatt199b+iOBwujL3PcUsWka/IP1PqG1lrxMTkb+PnWJsxGKySc RQ0A== X-Gm-Message-State: AOJu0YxIxfi8WGNcojQoxF3vefxSM56oLWowCYjcDq8Wdrr7kToHs1Hc gi1M+UUeBMDs2xD7YKNDehTfxu/CHmLkJgadzB3Qt+/IHHKu5LWhJHgxD906rC0= X-Gm-Gg: ASbGncsbYHAZUeHYd/gvYJYkokxid5AW5yIR4mtPDpHq0J6YaXAGmeLEYT0wbD7YQ4K Vua3g1cw7MBPJ45GCoB0hP8G91anIKQh5kuwZCA37ENiod+Rz8gyHLWXNb/osSXfoOKoLm+Mhz9 FguK85W/rQj3BRBM4GBBGQeUtPzgD2PdgEcV6Nhj4VxEIH/UbOlb0lL3qSQZEU37SIUxxad+R70 SFaU1eXX6t5Mf28Z5FtyCahTt+Ax5i8EYoK2rdT8OGaJr1CA7gaPLzVmVQb9kQ+Zy5o8Hz4b1Xg r9dbnObE07xOQ114zF4Uj6WrrX1EYti0u/Ae2o3y2bBCePfE X-Google-Smtp-Source: AGHT+IEVqDXHHFE6x727TS/DtRWBMYY1HDZ/XgkQyqYFQrWK4neiNqcXxXDVqi8EhX3DeUmi9s6WUQ== X-Received: by 2002:a05:6a00:4f82:b0:736:3d7c:236c with SMTP id d2e1a72fcca58-737223b9711mr13501161b3a.14.1742210197806; Mon, 17 Mar 2025 04:16:37 -0700 (PDT) From: Akihiko Odaki Date: Mon, 17 Mar 2025 20:16:23 +0900 Subject: [PATCH 2/4] target/arm: Do not imply ARM_CP_NO_GDB MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250317-raw-v1-2-09e2dfff0e90@daynix.com> References: <20250317-raw-v1-0-09e2dfff0e90@daynix.com> In-Reply-To: <20250317-raw-v1-0-09e2dfff0e90@daynix.com> To: qemu-devel@nongnu.org Cc: Peter Maydell , qemu-arm@nongnu.org, devel@daynix.com, Akihiko Odaki X-Mailer: b4 0.15-dev-edae6 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=akihiko.odaki@daynix.com; helo=mail-pl1-x629.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @daynix-com.20230601.gappssmtp.com) X-ZM-MESSAGEID: 1742210313018019000 Do not imply ARM_CP_NO_GDB when ARM_CP_NO_RAW. A register without raw access support may still expose some state to GDB that is managed by something else. A register may its state with another register but may not be used for either migration or KVM state synchronization. For example, a multiplexing register cannot support raw access. KVM may also have a problem when synchronizing a register. Such a register can be flagged with ARM_CP_ALIAS | ARM_CP_NO_RAW, but its value can be still exposed to GDB as it's usually the case for registers flagged with ARM_CP_ALIAS. ARM_CP_NO_GDB should not be implied in this case. Signed-off-by: Akihiko Odaki --- target/arm/cpregs.h | 8 ++++---- target/arm/gdbstub.c | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index 52377c6eb50f..99e2afc84250 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -75,10 +75,10 @@ enum { */ ARM_CP_IO =3D 1 << 9, /* - * Flag: Register has no underlying state and does not support raw acc= ess - * for state saving/loading; it will not be used for either migration = or - * KVM state synchronization. Typically this is for "registers" which = are - * actually used as instructions for cache maintenance and so on. + * Flag: Register does not support raw access for state saving/loading= ; it + * will not be used for either migration or KVM state synchronization. + * Typically this is for "registers" which are actually used as instru= ctions + * for cache maintenance and so on. */ ARM_CP_NO_RAW =3D 1 << 10, /* diff --git a/target/arm/gdbstub.c b/target/arm/gdbstub.c index 30068c226273..4459e90811b8 100644 --- a/target/arm/gdbstub.c +++ b/target/arm/gdbstub.c @@ -270,7 +270,7 @@ static void arm_register_sysreg_for_feature(gpointer ke= y, gpointer value, CPUARMState *env =3D &cpu->env; DynamicGDBFeatureInfo *dyn_feature =3D &cpu->dyn_sysreg_feature; =20 - if (!(ri->type & (ARM_CP_NO_RAW | ARM_CP_NO_GDB))) { + if (!(ri->type & ARM_CP_NO_GDB)) { if (arm_feature(env, ARM_FEATURE_AARCH64)) { if (ri->state =3D=3D ARM_CP_STATE_AA64) { arm_gen_one_feature_sysreg(¶m->builder, dyn_feature, --=20 2.48.1 From nobody Thu Apr 3 10:05:54 2025 Delivered-To: importer@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+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1742210242; cv=none; d=zohomail.com; s=zohoarc; b=iDY8yRG3ml9Pi7GwB6AbX+sXBPRgj1fBTky9bYBr3EfEjf35z1j2e6xZW1TUl/lTGN3Ur0rcL0Ib6K4Td/OOIGOAzqc+U/nHnByMek9/9QsejpYDK9UJMBCX0Y/Qqm7Ugl6/cpN5147EQVDgLwR9/ivoHw2ZIcfkh+SfvtcWYro= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1742210242; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=n00C0NGiRsylPrGNrVbaRTDfd35POgbU+yC+rvmTlgo=; b=K8QMckjCQ7Z7A3WNG4h02FE9/xGo3Rk9QS0iNupGUjVtyaWHRB6twGgaxoTKwnEFRhUszRALWlFKH7GVKyGK8y9KNCnCvmxxVuXeLSs7bwKvsf1lpX1bfWZ7PfXTTV3M/jZU5a5LLkQLDdT57kn1YX86wRqR+xc6/2+2o06GwbU= 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+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17422102426241013.0033035322692; Mon, 17 Mar 2025 04:17:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tu8Sk-0003Hu-Tp; Mon, 17 Mar 2025 07:16:54 -0400 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 1tu8Sb-0003EC-06 for qemu-devel@nongnu.org; Mon, 17 Mar 2025 07:16:45 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tu8SY-0003lg-Vm for qemu-devel@nongnu.org; Mon, 17 Mar 2025 07:16:44 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-22435603572so64283695ad.1 for ; Mon, 17 Mar 2025 04:16:42 -0700 (PDT) Received: from localhost ([157.82.207.107]) by smtp.gmail.com with UTF8SMTPSA id d2e1a72fcca58-7371155e3a9sm7317149b3a.71.2025.03.17.04.16.39 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 17 Mar 2025 04:16:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=daynix-com.20230601.gappssmtp.com; s=20230601; t=1742210201; x=1742815001; darn=nongnu.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=n00C0NGiRsylPrGNrVbaRTDfd35POgbU+yC+rvmTlgo=; b=A8LPcIbgN/ydIJcFU58qheueIGIUZvBWNgXqoihK24JL9tVa52sTlXwz+XKXta87kH 9xvwY15jseuBFD4eDM6sgpIFcAQ9hPBxr4Hjgdkn2niZGXknqOwUOu+Y7M6+pny/bqgK Dbk9UCJzt/RZRLTNXsO5dvQYEtfsjb3dEPkMXgJgMPY3hEO8NbkiTTGye5mAfRYeKVKq c0yEjm0ohd6PpOgQqpmms/jDdKux0WMPIcNPJqPrWzDz0CLrxQotMw+Bsi/XrBrXZ17y b1GcKIILiw/Jsl3HxNN0uZc3Ym3eTg8XlymgnCD0vbGMi4uswSHFJz3DfORo0i+hIiPd c7wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742210201; x=1742815001; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=n00C0NGiRsylPrGNrVbaRTDfd35POgbU+yC+rvmTlgo=; b=Vx+nULosh2DyHE0549X7nhPNXdr/Vf2reeyy96xkhW4NodPhHdRIabmM4D7YQHP1DH foGfbxFl70Ol+Ggz1/dOZkzFkzPEz6/RsJh/LNOd2k9xmQjCYv4dycmaHuf96UM5JRsO 7X9rqDpeSytempxSahQfG6KQRJKRwn3ek0W7I8LX4kPOo+Mz0n8QvY6os5L+bgwcwMgr 0Rqq38AHCsm8z9ZsSooaBIoojP8fdSzm/wiN4Q9ocSguc/jhoi8KF7CEV2xjONcl8btK ksdWZWe6pLGnFPXkt9KMQwWxxxQ/B0AU2SwwJTjEUcvmxeDzc8vGRyPvOUiRzv/enwxp ymtQ== X-Gm-Message-State: AOJu0YxJUIzph6m/3pVhryjcTDwZteCw7w72NhUUHEkGuSyy5OksYAtd j0r4mDLMSkTaDW9WnIVoy3ugEDLXiILDduewrBPhpp1a+uxW8M6Zt2kHdhTv2AE= X-Gm-Gg: ASbGnctY9krf1XFTac/c8+LChVWs/Lrr6kGJQYdHlPi7rfKRVff4xMYb2J0B9nK+3ma 08BiKj6o642u5RqZ7y3HiQ1psvCOJXjJiNmarL5qQ/jSmRDEZkO56pr8ny3k0ytp3GWey8eq3ju bPu+Ino9jtjviOocrOocxZI9mx+d2LpMug+OS5aNscjGlpQ5dNUNq7yAGUBTbobW8T7X8ElrCBd 0Bmjq7UEGVl4YdLHltEE8IMo1zhocRHRwRIO4vhe3qaZ/RbtYeCtc/Wd+cAMwurw0OAquYShREy 1FMyoPdQ/oQrPu9rNhPswuzJrf2j6stm9UeU+NQRsKARUS0m X-Google-Smtp-Source: AGHT+IEEMvNSmMnRCcBeh16HtRhiI+trSqu2imUTpQ1XWvvjgnmL8lQSk/HAMwcToETtNNIKQdNIVw== X-Received: by 2002:a17:902:ea07:b0:224:1eab:97b5 with SMTP id d9443c01a7336-225e0a1969dmr147611725ad.1.1742210201344; Mon, 17 Mar 2025 04:16:41 -0700 (PDT) From: Akihiko Odaki Date: Mon, 17 Mar 2025 20:16:24 +0900 Subject: [PATCH 3/4] target/arm: Expose PMINTENCLR to GDB MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250317-raw-v1-3-09e2dfff0e90@daynix.com> References: <20250317-raw-v1-0-09e2dfff0e90@daynix.com> In-Reply-To: <20250317-raw-v1-0-09e2dfff0e90@daynix.com> To: qemu-devel@nongnu.org Cc: Peter Maydell , qemu-arm@nongnu.org, devel@daynix.com, Akihiko Odaki X-Mailer: b4 0.15-dev-edae6 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=akihiko.odaki@daynix.com; helo=mail-pl1-x634.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @daynix-com.20230601.gappssmtp.com) X-ZM-MESSAGEID: 1742210243895019100 PMINTENCLR and PMINTENCLR_EL1 are aliases of PMINTENSET_EL1. Expose them as we do for other alias registers. Signed-off-by: Akihiko Odaki --- target/arm/helper.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 5ce468ac2693..2dd8f4d56a1e 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -2025,14 +2025,14 @@ static const ARMCPRegInfo v7_cp_reginfo[] =3D { { .name =3D "PMINTENCLR", .cp =3D 15, .crn =3D 9, .crm =3D 14, .opc1 = =3D 0, .opc2 =3D 2, .access =3D PL1_RW, .accessfn =3D access_tpm, .fgt =3D FGT_PMINTEN, - .type =3D ARM_CP_ALIAS | ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, + .type =3D ARM_CP_ALIAS | ARM_CP_IO | ARM_CP_NO_RAW, .fieldoffset =3D offsetof(CPUARMState, cp15.c9_pminten), .writefn =3D pmintenclr_write, }, { .name =3D "PMINTENCLR_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 9, .crm =3D 14, .opc2 =3D 2, .access =3D PL1_RW, .accessfn =3D access_tpm, .fgt =3D FGT_PMINTEN, - .type =3D ARM_CP_ALIAS | ARM_CP_IO | ARM_CP_NO_RAW | ARM_CP_NO_GDB, + .type =3D ARM_CP_ALIAS | ARM_CP_IO | ARM_CP_NO_RAW, .fieldoffset =3D offsetof(CPUARMState, cp15.c9_pminten), .writefn =3D pmintenclr_write }, { .name =3D "CCSIDR", .state =3D ARM_CP_STATE_BOTH, --=20 2.48.1 From nobody Thu Apr 3 10:05:54 2025 Delivered-To: importer@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+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1742210275; cv=none; d=zohomail.com; s=zohoarc; b=aon0+xRtEgTegYkgUaJceSuZoV2PVihbLqdID9iP0F9GlC0712dmMP0bU/MhfyWpLfEYj/IRITKH5zHHoO5XWVKL8ruQdbMc/OHPTtjBur8Y+z0Ull188qWZxcnxV6xuaY81vBINgHozT5VnAxWM6A77DV+lTNeiHdBvN1kwndQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1742210275; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6CHlSa6FesbaE//XoscZHu5Gz170/KWdbmIiQDcVlS8=; b=kUB1LRiap/JtxuvQ0qH9zz5BzkmVuerEgUxPNfncNu385Oc4ptQCdZ/8AyCtPEy7UxTiUqV4CdcIzTrwU4umyFXUzyr2B2J/ESc9wXZKgLmivlBOYMNKUPR6QEoMjaRutJen/0athqDoVQaTVh7ie22V2jQ6tB5jrUgSqzubSVY= 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+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1742210275111828.2338920223875; Mon, 17 Mar 2025 04:17:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tu8Sm-0003IJ-5y; Mon, 17 Mar 2025 07:16:56 -0400 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 1tu8Sf-0003Fu-Sx for qemu-devel@nongnu.org; Mon, 17 Mar 2025 07:16:49 -0400 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 1tu8Sd-0003me-K8 for qemu-devel@nongnu.org; Mon, 17 Mar 2025 07:16:49 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-225e3002dffso36793855ad.1 for ; Mon, 17 Mar 2025 04:16:45 -0700 (PDT) Received: from localhost ([157.82.207.107]) by smtp.gmail.com with UTF8SMTPSA id d9443c01a7336-225c6bd4d6csm72288065ad.238.2025.03.17.04.16.43 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 17 Mar 2025 04:16:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=daynix-com.20230601.gappssmtp.com; s=20230601; t=1742210204; x=1742815004; darn=nongnu.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=6CHlSa6FesbaE//XoscZHu5Gz170/KWdbmIiQDcVlS8=; b=tPuzlP2XHWLjIcg+F2raYgEejs0fSOWQF2FLYdymcQA0TskIq73A4JNo6SxEIR0R3k UiX4jUyQOdd3bOkBHlK5b5QkGqT2vpt3fU3LnBtCQRfKnZVXPpOZ3wo0lha3eHA8Gm9s 1cFMdky/DQ0S0dghkuc2WypSLLABr9XbYjFd4Ab1Eju4YON7rv2QF4AXC4yQNt3I4BHq bE4lzu8qshl2vM/Qnrhfs06tU7S9hYNcgJBpDCkThDPwgdFOuJhc5LplTbhu0SNLsf+u pselVTz56BWvsnqcP6/UlegEEy2D1E9pg91xN5p+r6NF+SQmT6qDOgBSAtmpuW+FlYXx gqFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742210204; x=1742815004; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6CHlSa6FesbaE//XoscZHu5Gz170/KWdbmIiQDcVlS8=; b=I8RBMEjcAwcNUGLdASFkPk5cEeyCnHg6X5bcYRNWMjX7kcjx0XJJds2rfhjvd/Yei2 W6R9Ih9kst7sLkC9rG9SJTdgkHsR6QZ8A9RxJ1ZCOVSI044asXK044Y1pUsMURvTuwU8 pY4GzfIR2T2YmvI44JVrn9DQEgM40BVW8QzTWnETlOEBmGggQ2RC/F882TOVE3A3sb5e Cq/S5u4WLQrjS3okeLkD9lzIrnJzlNjVEhDZwdbUE2dm8x1Fncllxv1mAKjkEg5C4qTw +E3tk8cxXwyS4gBP231k12VMIcVpq4woLzQ8x6ZvewczR4OWQzWiF1QG8Km5CY24qUJa 0RwA== X-Gm-Message-State: AOJu0Yyd9AUMccCWKGRHnM5Ltnh88FwePrhwPaMFwUUK3WwWfRryWrn+ J79seANefi898XIzCzJtZwLFyZquyQn0danGW8nIrhn7pf6geiDchbhQds0x00k= X-Gm-Gg: ASbGncsOWATaDrzcCADhDzHjBb9GVxEvWwi6O/EGnKgqyL+1CS3/7f4r/lrG13SZzCJ ntjrALBkvKpiV31FrdQc4jYbZ1XMbh4dK7sFtlEQghnybVHt2E2ecp2ZfKhrsC2MDseC2vXMixc JrhjJHZc2XiKAPR+nibpIAPdGtaWWAw0TyBzZZxJw4IgxH1Ic5sfk23Ys+PiZzxr1cIDfKNX5f2 gNWg+hgltpU+GW+iK33uLhiJtzkNo0WzpHAcsYEsRMiNYg+X7RhkdNQ0C8zv2S45w3ixp2JPZwh jS4n2LDAfjDU7bPeoiVxKbUTSNJWkcIcbDnZFwGnka+yUD58NlKaiGJ3+TQ= X-Google-Smtp-Source: AGHT+IGPbCrjEnD4bLL+I84IN2slw0WD1tr12zA9gmKelzScq0fwZo5lKGnn/4mv5BSlopaEnZDWKQ== X-Received: by 2002:a17:902:ce8f:b0:224:1074:63a7 with SMTP id d9443c01a7336-225e0b0998emr139821925ad.47.1742210204486; Mon, 17 Mar 2025 04:16:44 -0700 (PDT) From: Akihiko Odaki Date: Mon, 17 Mar 2025 20:16:25 +0900 Subject: [PATCH 4/4] target/arm: Flag PMCNTENCLR with ARM_CP_NO_RAW MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250317-raw-v1-4-09e2dfff0e90@daynix.com> References: <20250317-raw-v1-0-09e2dfff0e90@daynix.com> In-Reply-To: <20250317-raw-v1-0-09e2dfff0e90@daynix.com> To: qemu-devel@nongnu.org Cc: Peter Maydell , qemu-arm@nongnu.org, devel@daynix.com, Akihiko Odaki X-Mailer: b4 0.15-dev-edae6 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::62d; envelope-from=akihiko.odaki@daynix.com; helo=mail-pl1-x62d.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @daynix-com.20230601.gappssmtp.com) X-ZM-MESSAGEID: 1742210275976019100 A normal write to PMCNTENCLR clears written bits so it is not appropriate for writing a raw value. This kind of situation is usually handled by setting a raw write function, but flag the register with ARM_CP_NO_RAW instead to workaround a problem with KVM. KVM also has the same problem with PMINTENSET so add a comment to note that. This register is already flagged with ARM_CP_NO_RAW. Signed-off-by: Akihiko Odaki --- target/arm/helper.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 2dd8f4d56a1e..ee15132aadea 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -1901,12 +1901,21 @@ static const ARMCPRegInfo v7_cp_reginfo[] =3D { .accessfn =3D pmreg_access, .fgt =3D FGT_PMCNTEN, .writefn =3D pmcntenclr_write, - .type =3D ARM_CP_ALIAS | ARM_CP_IO }, + /* + * Flag PMCNTENCLR with ARM_CP_NO_RAW instead of implementing raw + * access to workaround a problem with KVM; KVM applies bit operatio= ns + * that prevents writing back raw values since Linux 6.7: + * https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linu= x.git/commit/?id=3Da45f41d754e0b37de4b7dc1fb3c6b7a1285882fc + * + * It is fine to lack raw access with PMCNTENCLR because KVM still + * exposes PMCNTENSET, which shares the underlying state. + */ + .type =3D ARM_CP_ALIAS | ARM_CP_IO | ARM_CP_NO_RAW }, { .name =3D "PMCNTENCLR_EL0", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 3, .crn =3D 9, .crm =3D 12, .opc2 =3D 2, .access =3D PL0_RW, .accessfn =3D pmreg_access, .fgt =3D FGT_PMCNTEN, - .type =3D ARM_CP_ALIAS | ARM_CP_IO, + .type =3D ARM_CP_ALIAS | ARM_CP_IO | ARM_CP_NO_RAW, .fieldoffset =3D offsetof(CPUARMState, cp15.c9_pmcnten), .writefn =3D pmcntenclr_write }, { .name =3D "PMOVSR", .cp =3D 15, .crn =3D 9, .crm =3D 12, .opc1 =3D 0= , .opc2 =3D 3, @@ -2025,6 +2034,7 @@ static const ARMCPRegInfo v7_cp_reginfo[] =3D { { .name =3D "PMINTENCLR", .cp =3D 15, .crn =3D 9, .crm =3D 14, .opc1 = =3D 0, .opc2 =3D 2, .access =3D PL1_RW, .accessfn =3D access_tpm, .fgt =3D FGT_PMINTEN, + /* Flag PMINTENCLR with ARM_CP_NO_RAW, as with PMCNTENCLR. */ .type =3D ARM_CP_ALIAS | ARM_CP_IO | ARM_CP_NO_RAW, .fieldoffset =3D offsetof(CPUARMState, cp15.c9_pminten), .writefn =3D pmintenclr_write, }, --=20 2.48.1