From nobody Fri Apr 4 03:57:21 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