From nobody Sun May 12 19:43:43 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 1661008008189932.1459742549358; Sat, 20 Aug 2022 08:06:48 -0700 (PDT) Received: from localhost ([::1]:40034 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oPQ3g-0002Zr-2x for importer@patchew.org; Sat, 20 Aug 2022 11:06:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50462) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oPPKC-0005Fi-TL for qemu-devel@nongnu.org; Sat, 20 Aug 2022 10:19:44 -0400 Received: from mail-out-4.itc.rwth-aachen.de ([2a00:8a60:1:e501::5:49]:45767) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oPPKA-0003lt-E4 for qemu-devel@nongnu.org; Sat, 20 Aug 2022 10:19:44 -0400 Received: from rwthex-s2-b.rwth-ad.de ([134.130.26.155]) by mail-in-4.itc.rwth-aachen.de with ESMTP; 20 Aug 2022 16:19:27 +0200 Received: from localhost.localdomain (2a02:908:1088:5920:e70b:29db:1db5:28bf) by RWTHEX-S2-B.rwth-ad.de (2a00:8a60:1:e500::26:155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.12; Sat, 20 Aug 2022 16:19:26 +0200 X-IPAS-Result: =?us-ascii?q?A2ASBABk7ABj/5sagoZaHQEBAQEJARIBBQUBQIFPhH6ET?= =?us-ascii?q?pEPly6HUQsBAQEBAQEBAQEIAUIEAQGFAwICAoRiJjgTAQIEAQEBAQMCAwEBA?= =?us-ascii?q?QEBAQMBAQYBAQEBAQEGBIEchS9GhkMCAQMjDwFGECAFAiYCAlcGDgWCfYMjq?= =?us-ascii?q?RqBMYEBhHCFEgkBgQcsiBCCGoUrglCECHWEYTCDCYJlBJYogyYcOAMJBAcFL?= =?us-ascii?q?B5CAwsfDhYFCAkXEhAQAgQRGgsGAxY+CQIEDgNACA0DEQQDDxgJEggQBAYDM?= =?us-ascii?q?QwlCwMUDAEGAwYFAwEDGwMUAwUkBwMZDyMNDQQfDAMDBSUDAgIbBwICAwIGF?= =?us-ascii?q?QYCAjYYOQgECAQrIw8FAgcvBQQvAh4EBQYRCAIWAgYEBAQEFQIQCAIIJxcHE?= =?us-ascii?q?zMZAQUyJxAJIRwOGhAFBhMDIG8FBz4PKDM1OSsdGwqBEiopFQMEBAMCBhMDA?= =?us-ascii?q?yICEC4xAxUGKRMSLQcrdQkCAyJpBQMDBCgsAwk+BwkiJj0FBVs6BQMDECI9B?= =?us-ascii?q?gMJAwIpFSebDYEOgXxcwXwHghahSUyWcQKSAS2HCY9Row+EJwIEAgQFAhaBe?= =?us-ascii?q?IF+cYM2URcCD5xyczsCBgEKAQEDCYpcAQE?= IronPort-Data: A9a23:XzTpjqBdP1UtxxVW/5Thw5YqxClBgxIJ4kV8jS/XYbTApGsn0TUFz GFKXGnTb/qCM2ajLt5ya4uzoU8Hu8LdzNRlOVdlrnsFo1CmCCbmLYnDch2gb3v6wunrFh8PA xA2M4GYRCwMZiaA4E/ra9ANlFEkvU2ybuOU5NXsZ2YgHmeIdA970Ug5w75j2tYy6TSEK1rlV e3a8pW31GCNhmYc3lI8s8pvfzs24ZweEBtB1rAPTagjUG32zhH5P7pDTU2FFEYUd6EPdgKMb 7uZkOvprjuxEyAFUbtJmp6jGqEDryW70QKm0hK6UID66vROS7BbPqsTbJIhhUlrZzqhx8568 edj76SLGQ4zJvHwn9gvDztEHHQrVUFG0OevzXmXi/Ov72D2NkC2ht8oFl4qPcgR9qB7DAmi9 9RBc2xLN0vbwbjohuvmF4GAhex6RCXvFJ8YsHBp1nfDCvsmRJ3Ha7/V+d8d1T47hs1IW/rTD yYcQWMyN0ScOEYSZz/7DroTxfm6mCOgXwcJoXatu5YqyUPNxRBuhe2F3N39P4biqd9utl+Vo 3+D82nnDxUyMtuZxjyYtHW2iYfnhS7nVZhUEbSp+vNuhHWXx2oaEhpQUkG0ycRVkWakRM5fJ lxR4XBrp+4o61CrC9DxGRG1yJKZgiMhtxNrO7VSwGmwJmD8um512kBsouZ9VeEb IronPort-HdrOrdr: A9a23:uUyDgq6qc5fEoNtM+QPXwPnXdLJyesId70hD6qhwISY4TiX+rb HIoB17726RtN9/Yh8dcLy7UpVoBEmslqKdgrNhWItKPjOGhILAFugLhrcKgQeQeREWntQts5 uIGJIQNDSfNzVHZZGQ2njBLz9Z+rm6GfeT9J7j80s= X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="5.93,251,1654552800"; d="scan'208";a="153843355" From: To: CC: , =?UTF-8?q?Tobias=20R=C3=B6hmel?= Subject: [PATCH v3 1/9] target/arm: Add ARM_FEATURE_V8_R Date: Sat, 20 Aug 2022 16:19:06 +0200 Message-ID: <20220820141914.217399-2-tobias.roehmel@rwth-aachen.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220820141914.217399-1-tobias.roehmel@rwth-aachen.de> References: <20220820141914.217399-1-tobias.roehmel@rwth-aachen.de> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [2a02:908:1088:5920:e70b:29db:1db5:28bf] X-ClientProxiedBy: rwthex-w4-b.rwth-ad.de (2a00:8a60:1:e500::26:167) To RWTHEX-S2-B.rwth-ad.de (2a00:8a60:1:e500::26:155) 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=2a00:8a60:1:e501::5:49; envelope-from=tobias.roehmel@rwth-aachen.de; helo=mail-out-4.itc.rwth-aachen.de X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1661008010515100001 From: Tobias R=C3=B6hmel This flag is necessary to add features for the Cortex-R52. Signed-off-by: Tobias R=C3=B6hmel --- target/arm/cpu.h | 1 + 1 file changed, 1 insertion(+) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index df677b2d5d..86e06116a9 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -2287,6 +2287,7 @@ enum arm_features { ARM_FEATURE_M_SECURITY, /* M profile Security Extension */ ARM_FEATURE_M_MAIN, /* M profile Main Extension */ ARM_FEATURE_V8_1M, /* M profile extras only in v8.1M and later */ + ARM_FEATURE_V8_R, }; =20 static inline int arm_feature(CPUARMState *env, int feature) --=20 2.25.1 From nobody Sun May 12 19:43:43 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 1661006988565181.32302243027482; Sat, 20 Aug 2022 07:49:48 -0700 (PDT) Received: from localhost ([::1]:48302 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oPPnG-0005vI-Mf for importer@patchew.org; Sat, 20 Aug 2022 10:49:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50450) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oPPK7-0005DG-62 for qemu-devel@nongnu.org; Sat, 20 Aug 2022 10:19:39 -0400 Received: from mail-out-1a.itc.rwth-aachen.de ([2a00:8a60:1:e501::5:44]:13371) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oPPK2-0003mY-BE for qemu-devel@nongnu.org; Sat, 20 Aug 2022 10:19:37 -0400 Received: from rwthex-s2-b.rwth-ad.de ([134.130.26.155]) by mail-in-1a.itc.rwth-aachen.de with ESMTP; 20 Aug 2022 16:19:26 +0200 Received: from localhost.localdomain (2a02:908:1088:5920:e70b:29db:1db5:28bf) by RWTHEX-S2-B.rwth-ad.de (2a00:8a60:1:e500::26:155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.12; Sat, 20 Aug 2022 16:19:26 +0200 X-IPAS-Result: =?us-ascii?q?A2ATBABA7QBj/5sagoZaHQEBAQEJARIBBQUBQIFPhH6ET?= =?us-ascii?q?pEPgROdbAsBAQEBAQEBAQEIAUIEAQGFAwICAoRiJjgTAQIEAQEBAQMCAwEBA?= =?us-ascii?q?QEBAQMBAQYBAQEBAQEGBIEchS9GhkMCAQMjBAsBRhAgBQImAgJXBg4Fgn2DI?= =?us-ascii?q?6kafzKBAYRwhRIJAYEHLIgQghqFK4JQgRWCc3WEYTCDCYJlBJlOHDgDCQQHB?= =?us-ascii?q?SweQgMLHw4WBQgJFxIQEAIEERoLBgMWPgkCBA4DQAgNAxEEAw8YCRIIEAQGA?= =?us-ascii?q?zEMJQsDFAwBBgMGBQMBAxsDFAMFJAcDGQ8jDQ0EHwwDAwUlAwICGwcCAgMCB?= =?us-ascii?q?hUGAgI2GDkIBAgEKyMPBQIHLwUELwIeBAUGEQgCFgIGBAQEBBUCEAgCCCcXB?= =?us-ascii?q?xMzGQEFMicQCSEcDhoQBQYTAyBvBQc+DygzNTkrHRsKgRIqKRUDBAQDAgYTA?= =?us-ascii?q?wMiAhAuMQMVBikTEi0HK3UJAgMiaQUDAwQoLAMJPgcJIiY9BQVbOgUDAxAiP?= =?us-ascii?q?QYDCQMCKTybDYEOo3CgZAeCFqFJTJZxApIBlwehd4EYhCcCBAIEBQIWgXiBf?= =?us-ascii?q?nGDNlEXAg+OLBYVjhtzOwIGAQoBAQMJilwBAQ?= IronPort-Data: A9a23:WFv3B6KQtiaQCYqrFE+RY5clxSXFcZb7ZxGr2PjKsXjdYENShGMPn WofUG/QOv+KZWanet53aYy/9x8Gu8fUz9RnTlMd+CA2RRqmiyZk6fexcx2sZXPCdqUvaGo9s q3yv/GZdJhcokf0/0vrav64xZVF/fngqoDUUYYoAQgsA14/IMsdoUg7wbRh0tQw2YLR7z6l4 LseneWOYDdJ5BYpagr424rbwP+4lK2v0N+wlgVWicFj5DcypVFMZH4sDf3Zw0/Df2VhNrXSq 9DrkevlpDOJp3/BPfv++lrzWhVirrc/pmFigFIOM0SpqkAqSiDfTs/XOdJEAXq7hQllkPhDl M1gm4CIRD0uN4HOhrhedjVdPgRxaPguFL/veRBTsOSp8HHmXkup+K8rJgcsIpEYv+97R21Dn RAaAGlWMlba3Lrwmuz9E7Qx7iggBJCD0Ic3pnZqzDjCS+whTJDGTqHi/8BE3HI5j8tOEPCYa 8dxhT9HNUWeOEARagd/5JQWv9uOuFbVcmVitVOEn4cuwE3SkzFXz+24WDbSUpnQLSlPpW6Bq 2fbumj0HBweHNqYzzWD7zSrnOCntTv2RI8IUrix5/JnhFm7wm0VAQcRE1yhrpGEZlWWQc1DK 0EEvzF06KJ07lO3Tpz0U1u0rRZooyIhZjaZKMVigCnl90Yey1bx6rQsJtKZVOEbiQ== IronPort-HdrOrdr: A9a23:SSmInKAyyg55RyTlHemd55DYdb4zR+YMi2TC1yhKJSC9Ffbo8P xG/c5rsSMc5wx+ZJhNo7q90ey7MBDhHP1OkOws1NWZPTUO0VHAROpfBMnZsl/d8kXFh4hgPM xbHJSWZuecMbAs5vyKmDVQa+xB/DDRytHQudvj X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="5.93,251,1654552800"; d="scan'208";a="19635688" From: To: CC: , =?UTF-8?q?Tobias=20R=C3=B6hmel?= Subject: [PATCH v3 2/9] target/arm: Don't add all MIDR aliases for cores that immplement PMSA Date: Sat, 20 Aug 2022 16:19:07 +0200 Message-ID: <20220820141914.217399-3-tobias.roehmel@rwth-aachen.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220820141914.217399-1-tobias.roehmel@rwth-aachen.de> References: <20220820141914.217399-1-tobias.roehmel@rwth-aachen.de> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [2a02:908:1088:5920:e70b:29db:1db5:28bf] X-ClientProxiedBy: rwthex-w4-b.rwth-ad.de (2a00:8a60:1:e500::26:167) To RWTHEX-S2-B.rwth-ad.de (2a00:8a60:1:e500::26:155) 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=2a00:8a60:1:e501::5:44; envelope-from=tobias.roehmel@rwth-aachen.de; helo=mail-out-1a.itc.rwth-aachen.de X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1661006991058100002 From: Tobias R=C3=B6hmel Cores with PMSA have the MPUIR register which has the same encoding as the MIDR alias with opc2=3D4. So we only add that alias if we are not realizing a core that implements PMSA. Signed-off-by: Tobias R=C3=B6hmel Reviewed-by: Peter Maydell --- target/arm/helper.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 6457e6301c..b9547594ae 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -8188,10 +8188,7 @@ void register_cp_regs_for_features(ARMCPU *cpu) .access =3D PL1_R, .type =3D ARM_CP_NO_RAW, .resetvalue =3D = cpu->midr, .fieldoffset =3D offsetof(CPUARMState, cp15.c0_cpuid), .readfn =3D midr_read }, - /* crn =3D 0 op1 =3D 0 crm =3D 0 op2 =3D 4,7 : AArch32 aliases= of MIDR */ - { .name =3D "MIDR", .type =3D ARM_CP_ALIAS | ARM_CP_CONST, - .cp =3D 15, .crn =3D 0, .crm =3D 0, .opc1 =3D 0, .opc2 =3D 4, - .access =3D PL1_R, .resetvalue =3D cpu->midr }, + /* crn =3D 0 op1 =3D 0 crm =3D 0 op2 =3D 7 : AArch32 aliases o= f MIDR */ { .name =3D "MIDR", .type =3D ARM_CP_ALIAS | ARM_CP_CONST, .cp =3D 15, .crn =3D 0, .crm =3D 0, .opc1 =3D 0, .opc2 =3D 7, .access =3D PL1_R, .resetvalue =3D cpu->midr }, @@ -8201,6 +8198,11 @@ void register_cp_regs_for_features(ARMCPU *cpu) .accessfn =3D access_aa64_tid1, .type =3D ARM_CP_CONST, .resetvalue =3D cpu->revidr }, }; + ARMCPRegInfo id_v8_midr_alias_cp_reginfo =3D { + .name =3D "MIDR", .type =3D ARM_CP_ALIAS | ARM_CP_CONST, + .cp =3D 15, .crn =3D 0, .crm =3D 0, .opc1 =3D 0, .opc2 =3D 4, + .access =3D PL1_R, .resetvalue =3D cpu->midr + }; ARMCPRegInfo id_cp_reginfo[] =3D { /* These are common to v8 and pre-v8 */ { .name =3D "CTR", @@ -8264,8 +8266,12 @@ void register_cp_regs_for_features(ARMCPU *cpu) id_mpuir_reginfo.access =3D PL1_RW; id_tlbtr_reginfo.access =3D PL1_RW; } + if (arm_feature(env, ARM_FEATURE_V8)) { define_arm_cp_regs(cpu, id_v8_midr_cp_reginfo); + if (!arm_feature(env, ARM_FEATURE_PMSA)) { + define_one_arm_cp_reg(cpu, &id_v8_midr_alias_cp_reginfo); + } } else { define_arm_cp_regs(cpu, id_pre_v8_midr_cp_reginfo); } --=20 2.25.1 From nobody Sun May 12 19:43:43 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 1661005858893913.5804937917475; Sat, 20 Aug 2022 07:30:58 -0700 (PDT) Received: from localhost ([::1]:36798 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oPPV2-0008JV-K1 for importer@patchew.org; Sat, 20 Aug 2022 10:30:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50452) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oPPK8-0005DN-6d for qemu-devel@nongnu.org; Sat, 20 Aug 2022 10:19:40 -0400 Received: from mail-out-4.itc.rwth-aachen.de ([2a00:8a60:1:e501::5:49]:45767) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oPPK2-0003lt-BK for qemu-devel@nongnu.org; Sat, 20 Aug 2022 10:19:39 -0400 Received: from rwthex-s2-b.rwth-ad.de ([134.130.26.155]) by mail-in-4.itc.rwth-aachen.de with ESMTP; 20 Aug 2022 16:19:27 +0200 Received: from localhost.localdomain (2a02:908:1088:5920:e70b:29db:1db5:28bf) by RWTHEX-S2-B.rwth-ad.de (2a00:8a60:1:e500::26:155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.12; Sat, 20 Aug 2022 16:19:26 +0200 X-IPAS-Result: =?us-ascii?q?A2DQAgBk7ABj/5sagoZaHAEBAQEBAQcBARIBAQQEAQFAg?= =?us-ascii?q?U+EfoROkQwDnReBaAsBAQEBAQEBAQEIAUIEAQGFAwICAoRiJjgTAQIEAQEBA?= =?us-ascii?q?QMCAwEBAQEBAQMBAQYBAQEBAQEGBIEchS9GhkMCAQMjBAsBRhAgBQImAgJXB?= =?us-ascii?q?g4Fgn2DI6kafzKBAYRwhRIJAYEHLIgQghqFK4JQglGBNwduhCs2gzmCZQSVU?= =?us-ascii?q?4N7HDgDCQQHBSweQgMLHw4WBQgJFxIQEAIEERoLBgMWPgkCBA4DQAgNAxEEA?= =?us-ascii?q?w8YCRIIEAQGAzEMJQsDFAwBBgMGBQMBAxsDFAMFJAcDGQ8jDQ0EHwwDAwUlA?= =?us-ascii?q?wICGwcCAgMCBhUGAgI2GDkIBAgEKyMPBQIHLwUELwIeBAUGEQgCFgIGBAQEB?= =?us-ascii?q?BUCEAgCCCcXBxMzGQEFMicQCSEcDhoQBQYTAyBvBQc+DygzNTkrHRsKgRIqK?= =?us-ascii?q?RUDBAQDAgYTAwMiAhAuMQMVBikTEi0HK3UJAgMiaQUDAwQoLAMJBDoHCSImP?= =?us-ascii?q?QUFWzoFAwMQIj0GAwkDAikaIpobcQGBD4MxkhGOLaBkB4IWoUlMlnECkgGCC?= =?us-ascii?q?IRGAZA4oXeBGIQnAgQCBAUCFoF4gX5xgzZRFwIPjiwWjjBzOwIGAQoBAQMJi?= =?us-ascii?q?lwBAQ?= IronPort-Data: A9a23:63qaqqjY6iM1AcQpf4NzJ+5jX1613RIKZh0ujC45NGQN5FlHY01je htvWG2CaaqIYGTwLtFxaNixpE1Q65DXydc1SAo/+yBkQ3xjpJueD7x1DKtR0wC6c5efFhI3t 63yTvGacajYm1eF/k/F3oDJ9CU6jefRLlbFILas1hpZHGeIcw98z0M48wIFqtQw24LhU1nV4 YmaT/D3YTdJ5RYlagr41Ire8HuDjNyq0N/PlgVjDRzjlAa2e0g9VPrzF4noR5fLatU88tqBe gr25OrRElXxok1xUIP1yt4XRWVRKlLaFVDmZnO7wMFOiDAazsA5+v5T2Pbx9S67hh3R9+2dx umhurSXcFwJHIjjvt8geB9HDB1kBbxZ2ZLYdC3XXcy7lyUqclPW/MlOIXFzBtdd0KBtHn1Os PUUbjwABvyBr7vtnPTiEbEq3JpldZS2VG8ckigIITXxEfEsQJnYBb/N6N9d0TMYnN9SHbPXb sEZZDwpYBmojxhnYwpMWM5lx7r27pX5WztoommtuI4r31iQ4lZ1yIb2C9bNIuXfEK25mW7d/ Aoq5V/RGxwfKZmTxCSI9lqqgenAmz69X5gdfJWg++JnmhuWz30fBRkSfV+6p/CjjQi5Qd03F qAP0jAxsag/5AmwFJz3GQenvH7BtxJaV9c4//AG1TxhA5H8u26xblXohBYbADD6nKfanQAX6 2I= IronPort-HdrOrdr: A9a23:CvPL/68sbaqhVMyw48tuk+AII+orL9Y04lQ7vn2ZKCYlEPBw8v rE9sjzuiWYtN9vYgBcpTntAsW9qFnnhPpICPAqTMyftVDdyRGVxeJZnOjfKl/behEWn9Q1vZ uIFZIQNDSaNzhHZKjBjjVQXOxQpuVviJrY/Ns30x1WPGZXQpAl9Qt/BwqBe3cGPDVuNN4kEY ORj/A3wgadRQ== X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="5.93,251,1654552800"; d="scan'208";a="153843356" From: To: CC: , =?UTF-8?q?Tobias=20R=C3=B6hmel?= Subject: [PATCH v3 3/9] target/arm: Make RVBAR available for all ARMv8 CPUs Date: Sat, 20 Aug 2022 16:19:08 +0200 Message-ID: <20220820141914.217399-4-tobias.roehmel@rwth-aachen.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220820141914.217399-1-tobias.roehmel@rwth-aachen.de> References: <20220820141914.217399-1-tobias.roehmel@rwth-aachen.de> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [2a02:908:1088:5920:e70b:29db:1db5:28bf] X-ClientProxiedBy: rwthex-w4-b.rwth-ad.de (2a00:8a60:1:e500::26:167) To RWTHEX-S2-B.rwth-ad.de (2a00:8a60:1:e500::26:155) 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=2a00:8a60:1:e501::5:49; envelope-from=tobias.roehmel@rwth-aachen.de; helo=mail-out-4.itc.rwth-aachen.de X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1661005859853100001 From: Tobias R=C3=B6hmel RVBAR shadows RVBAR_ELx where x is the highest exception level if the highest EL is not EL3. This patch also allows ARMv8 CPUs to change the reset address to be changed with the rvbar property. Signed-off-by: Tobias R=C3=B6hmel --- target/arm/cpu.c | 6 +++++- target/arm/helper.c | 38 ++++++++++++++++++++++++++------------ 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 1b5d535788..9007768418 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -258,6 +258,10 @@ static void arm_cpu_reset(DeviceState *dev) env->cp15.cpacr_el1 =3D FIELD_DP64(env->cp15.cpacr_el1, CPACR, CP11, 3); #endif + if (arm_feature(env, ARM_FEATURE_V8)) { + env->cp15.rvbar =3D cpu->rvbar_prop; + env->regs[15] =3D cpu->rvbar_prop; + } } =20 #if defined(CONFIG_USER_ONLY) @@ -1273,7 +1277,7 @@ void arm_cpu_post_init(Object *obj) qdev_property_add_static(DEVICE(obj), &arm_cpu_reset_hivecs_proper= ty); } =20 - if (arm_feature(&cpu->env, ARM_FEATURE_AARCH64)) { + if (arm_feature(&cpu->env, ARM_FEATURE_V8)) { object_property_add_uint64_ptr(obj, "rvbar", &cpu->rvbar_prop, OBJ_PROP_FLAG_READWRITE); diff --git a/target/arm/helper.c b/target/arm/helper.c index b9547594ae..23461397e0 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -7954,13 +7954,20 @@ void register_cp_regs_for_features(ARMCPU *cpu) /* RVBAR_EL1 is only implemented if EL1 is the highest EL */ if (!arm_feature(env, ARM_FEATURE_EL3) && !arm_feature(env, ARM_FEATURE_EL2)) { - ARMCPRegInfo rvbar =3D { - .name =3D "RVBAR_EL1", .state =3D ARM_CP_STATE_AA64, - .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 0, .opc2 = =3D 1, - .access =3D PL1_R, - .fieldoffset =3D offsetof(CPUARMState, cp15.rvbar), + ARMCPRegInfo rvbar[] =3D { + { + .name =3D "RVBAR_EL1", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 0, .op= c2 =3D 1, + .access =3D PL1_R, + .fieldoffset =3D offsetof(CPUARMState, cp15.rvbar), + }, + { .name =3D "RVBAR", .type =3D ARM_CP_ALIAS, + .cp =3D 15, .crn =3D 12, .crm =3D 0, .opc1 =3D 0, .opc= 2 =3D 1, + .access =3D PL1_R, + .fieldoffset =3D offsetof(CPUARMState, cp15.rvbar), + }, }; - define_one_arm_cp_reg(cpu, &rvbar); + define_arm_cp_regs(cpu, rvbar); } define_arm_cp_regs(cpu, v8_idregs); define_arm_cp_regs(cpu, v8_cp_reginfo); @@ -8022,13 +8029,20 @@ void register_cp_regs_for_features(ARMCPU *cpu) } /* RVBAR_EL2 is only implemented if EL2 is the highest EL */ if (!arm_feature(env, ARM_FEATURE_EL3)) { - ARMCPRegInfo rvbar =3D { - .name =3D "RVBAR_EL2", .state =3D ARM_CP_STATE_AA64, - .opc0 =3D 3, .opc1 =3D 4, .crn =3D 12, .crm =3D 0, .opc2 = =3D 1, - .access =3D PL2_R, - .fieldoffset =3D offsetof(CPUARMState, cp15.rvbar), + ARMCPRegInfo rvbar[] =3D { + { + .name =3D "RVBAR_EL2", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 4, .crn =3D 12, .crm =3D 0, .op= c2 =3D 1, + .access =3D PL2_R, + .fieldoffset =3D offsetof(CPUARMState, cp15.rvbar), + }, + { .name =3D "RVBAR", .type =3D ARM_CP_ALIAS, + .cp =3D 15, .crn =3D 12, .crm =3D 0, .opc1 =3D 0, .opc= 2 =3D 1, + .access =3D PL2_R, + .fieldoffset =3D offsetof(CPUARMState, cp15.rvbar), + }, }; - define_one_arm_cp_reg(cpu, &rvbar); + define_arm_cp_regs(cpu, rvbar); } } =20 --=20 2.25.1 From nobody Sun May 12 19:43:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 1661005819458622.919715376358; Sat, 20 Aug 2022 07:30:19 -0700 (PDT) Received: from localhost ([::1]:36472 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oPPUO-0008GY-61 for importer@patchew.org; Sat, 20 Aug 2022 10:30:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50458) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oPPKA-0005E5-3D for qemu-devel@nongnu.org; Sat, 20 Aug 2022 10:19:42 -0400 Received: from mail-out-4.itc.rwth-aachen.de ([2a00:8a60:1:e501::5:49]:45767) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oPPK7-0003lt-PX for qemu-devel@nongnu.org; Sat, 20 Aug 2022 10:19:41 -0400 Received: from rwthex-s2-b.rwth-ad.de ([134.130.26.155]) by mail-in-4.itc.rwth-aachen.de with ESMTP; 20 Aug 2022 16:19:27 +0200 Received: from localhost.localdomain (2a02:908:1088:5920:e70b:29db:1db5:28bf) by RWTHEX-S2-B.rwth-ad.de (2a00:8a60:1:e500::26:155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.12; Sat, 20 Aug 2022 16:19:26 +0200 X-IPAS-Result: =?us-ascii?q?A2ASBABk7ABj/5sagoZaHQEBAQEJARIBBQUBQIFPhH6ET?= =?us-ascii?q?pEPnn8LAQEBAQEBAQEBCAFCBAEBhQMCAgKEYiY4EwECBAEBAQEDAgMBAQEBA?= =?us-ascii?q?QEDAQEGAQEBAQEBBgSBHIUvRoZDAgEDIw8BQQUQIAUCJgICVwYOBYJ9gyOpG?= =?us-ascii?q?oExgQGEcIUSCQGBByyIEIIahSuCUIQIdYRhMIMJgmUEmU4cOAMJBAcFLB5CA?= =?us-ascii?q?wsfDhYFCAkXEhAQAgQRGgsGAxY+CQIEDgNACA0DEQQDDxgJEggQBAYDMQwlC?= =?us-ascii?q?wMUDAEGAwYFAwEDGwMUAwUkBwMZDyMNDQQfDAMDBSUDAgIbBwICAwIGFQYCA?= =?us-ascii?q?jYYOQgECAQrIw8FAgcvBQQvAh4EBQYRCAIWAgYEBAQEFQIQCAIIJxcHEzMZA?= =?us-ascii?q?QUyJxAJIRwOGhAFBhMDIG8FBz4PKDM1OSsdGwqBEiopFQMEBAMCBhMDAyICE?= =?us-ascii?q?C4xAxUGKRMSLQcrdQkCAyJpBQMDBCgsAwk+BwkiJj0FBVs6BQMDECI9BgMJA?= =?us-ascii?q?wIpFSebBgeBDoF5wlsHghahSUyWcQKSAS2WWqMPhCcCBAIEBQIWgXiBfnGDN?= =?us-ascii?q?lEXAg+ccnM7AgYBCgEBAwmKXAEB?= IronPort-Data: A9a23:8fZjqKkEc5gIsQCEP59Np7vo5gw8JERdPkR7XQ2eYbSJt1+Wr1Gzt xIcWD+Bb6uDZGGjKtByPNu1pk4O78SDndVnSAM9/ns8EltH+JHPbTi7wuYcHAvPdJGZHBI/h yk6QoOdRCzhZiaE/n9BCpC48T8kk/jgqoPUUIYoAAgoLeNfYHpn2EkLd9IR2NYy24DpWVvV4 7senuWGULOb828sWo4rw//bwP9flKyaVOQw5wFWiVhj5TcyplFNZH4tDfjZw0jQHuG4KtWHq 9Prl9lVyEuEpUt3WoP9+lrMWhZirrb6ZWBig5fNMkSoqkAqSicais7XOBeAAKtao23hojx/9 DlCncKecQQyDqPUor0iaAFhPjteOZx7oJaSdBBTseTLp6HHW0HT/9VDPAQNZ8gyvPxoHWEL/ PBeJD1lghKr3rnqhuvgEq822IJ6cZSD0IA34xmMyRnFCvwnSIuFWaLH5dpV2B8qmdxOWP/Xb MoUb3xjYXwsZjUWZwxHVMllwbjAan/XSQ8Jrmqo5vcO3Efd7y5c7PvoDtbIU4nfLSlStgPCz o7cxEzgDxQHcdCS1zeB2nSrgODJgGX8Qo16PKW16vNwxlia12AeDBk+UVq9qOO+zEmkVLpix 1c84DUyraUisVfxC9O7RQKkoDuNslgQVrK8DtEH1e1E8YKMiy7xO4TOZmQphAAO3CPueQEX6 w== IronPort-HdrOrdr: A9a23:FxhBlavTJlhFe/6IUU14p9Wm7skDptV00zEX/kB9WHVpm62j5q KTdZEgvnXJYVkqNU3I5urwRZVoLUmxyXde2/h0AV7aZnichILwFvAZ0WKA+UyCJ8SdzI9gPM 5bGsBD4bvLYmSS5vyb3ODXKbgdKZa8gcaVbJ/lvg5QpR0BUdAG0y5JThyWFUB7X2B9dOIEPa vZ+s9fq1ObCBEqUvg= X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="5.93,251,1654552800"; d="scan'208";a="153843357" From: To: CC: , =?UTF-8?q?Tobias=20R=C3=B6hmel?= Subject: [PATCH v3 4/9] target/arm: Make stage_2_format for cache attributes optional Date: Sat, 20 Aug 2022 16:19:09 +0200 Message-ID: <20220820141914.217399-5-tobias.roehmel@rwth-aachen.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220820141914.217399-1-tobias.roehmel@rwth-aachen.de> References: <20220820141914.217399-1-tobias.roehmel@rwth-aachen.de> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [2a02:908:1088:5920:e70b:29db:1db5:28bf] X-ClientProxiedBy: rwthex-w4-b.rwth-ad.de (2a00:8a60:1:e500::26:167) To RWTHEX-S2-B.rwth-ad.de (2a00:8a60:1:e500::26:155) 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=2a00:8a60:1:e501::5:49; envelope-from=tobias.roehmel@rwth-aachen.de; helo=mail-out-4.itc.rwth-aachen.de X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1661005828213100001 From: Tobias R=C3=B6hmel The Cortex-R52 has a 2 stage MPU translation process but doesn't have the FEAT_S2FWB feature. This makes it neccessary to allow for the old cache attribut combination. This is facilitated by changing the control path of combine_cacheattrs instead of failing if the second cache attributes struct is not in that format. Signed-off-by: Tobias R=C3=B6hmel Reviewed-by: Peter Maydell --- target/arm/ptw.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 4d97a24808..8b037c1f55 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -2108,7 +2108,11 @@ static uint8_t combined_attrs_nofwb(CPUARMState *env, { uint8_t s1lo, s2lo, s1hi, s2hi, s2_mair_attrs, ret_attrs; =20 - s2_mair_attrs =3D convert_stage2_attrs(env, s2.attrs); + if (s2.is_s2_format) { + s2_mair_attrs =3D convert_stage2_attrs(env, s2.attrs); + } else { + s2_mair_attrs =3D s2.attrs; + } =20 s1lo =3D extract32(s1.attrs, 0, 4); s2lo =3D extract32(s2_mair_attrs, 0, 4); @@ -2166,6 +2170,8 @@ static uint8_t force_cacheattr_nibble_wb(uint8_t attr) static uint8_t combined_attrs_fwb(CPUARMState *env, ARMCacheAttrs s1, ARMCacheAttrs s2) { + assert(s2.is_s2_format && !s1.is_s2_format); + switch (s2.attrs) { case 7: /* Use stage 1 attributes */ @@ -2215,7 +2221,6 @@ static ARMCacheAttrs combine_cacheattrs(CPUARMState *= env, ARMCacheAttrs ret; bool tagged =3D false; =20 - assert(s2.is_s2_format && !s1.is_s2_format); ret.is_s2_format =3D false; =20 if (s1.attrs =3D=3D 0xf0) { --=20 2.25.1 From nobody Sun May 12 19:43:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 1661008016389356.1160920855658; Sat, 20 Aug 2022 08:06:56 -0700 (PDT) Received: from localhost ([::1]:49052 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oPQ3p-0002aj-Q6 for importer@patchew.org; Sat, 20 Aug 2022 11:06:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50466) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oPPKD-0005G6-AI for qemu-devel@nongnu.org; Sat, 20 Aug 2022 10:19:45 -0400 Received: from mail-out-3.itc.rwth-aachen.de ([2a00:8a60:1:e501::5:48]:17474) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oPPK7-0003ls-VI for qemu-devel@nongnu.org; Sat, 20 Aug 2022 10:19:44 -0400 Received: from rwthex-s2-b.rwth-ad.de ([134.130.26.155]) by mail-in-3.itc.rwth-aachen.de with ESMTP; 20 Aug 2022 16:19:28 +0200 Received: from localhost.localdomain (2a02:908:1088:5920:e70b:29db:1db5:28bf) by RWTHEX-S2-B.rwth-ad.de (2a00:8a60:1:e500::26:155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.12; Sat, 20 Aug 2022 16:19:27 +0200 X-IPAS-Result: =?us-ascii?q?A2ATBABk7ABj/5sagoZaHQEBAQEJARIBBQUBQIFPhH6ET?= =?us-ascii?q?pEPgROWG4dRCwEBAQEBAQEBAQgBQgQBAYUDAgIChGImOBMBAgQBAQEBAwIDA?= =?us-ascii?q?QEBAQEBAwEBBgEBAQEBAQYEgRyFL0aGQwIBAyMPAUYQIAUCJgICVwYOBYJ9g?= =?us-ascii?q?yOpGoExgQGEcIUSCQGBByyIEIIahSuCUIEVgTyBNwduhGGDOYJlBJVTg3scO?= =?us-ascii?q?AMJBAcFLB5CAwsfDhYFCAkXEhAQAgQRGgsGAxY+CQIEDgNACA0DEQQDDxgJE?= =?us-ascii?q?ggQBAYDMQwlCwMUDAEGAwYFAwEDGwMUAwUkBwMZDyMNDQQfDAMDBSUDAgIbB?= =?us-ascii?q?wICAwIGFQYCAjYYOQgECAQrIw8FAgcvBQQvAh4EBQYRCAIWAgYEBAQEFQIQC?= =?us-ascii?q?AIIJxcHEzMZAQUyJxAJIRwOGhAFBhMDIG8FBz4PKDM1OSsdGwqBEiopFQMEB?= =?us-ascii?q?AMCBhMDAyICEC4xAxUGKRMSLQcrdQkCAyJpBQMDBCgsAwk+BwkiJj0FBVs6B?= =?us-ascii?q?QMDECI9BgMJAwIpFSeaG3IBgQ4vgiPCAQeCFqFJTJZxApIBLZZaoXeBGIQnA?= =?us-ascii?q?gQCBAUCFoF4gX5xgzZRFwIPjiwWFY4bczsCBgEKAQEDCYpcAQE?= IronPort-Data: A9a23:wWsYU6zyKR28MOh7StZ6t+eKxCrEfRIJ4+MujC+fZmUNrF6WrkUPm 2QYDTyGPPeJamHwKdAlYY+29BkEvcCBn9A3QVBkrFhgHilAwSbn6XV1DW+tZX/Ifp2bJK5Dx 59DAjUVBJlsFhcwnj/0bv656yAUOZigHtIQMsadUsxKbVIiGXxJZS5LwbZj2NY424DhWWthh PuryyHhEA79s9JLGj9Mg06zgEsHUCPa4W5wUvQWPJinjXeG/5UnJMt3yZKZcxMUdrJp8tuSH I4v+pnkpD+Dr0d1Yj+Suu2TnkUiGtY+NOUV45Zcc/DKbhNq/kTe3kunXRYRQR8/ttmHozx+4 M1kpN+ae1cqBYDrmsknVDdlTzp1MqITrdcrIVDn2SCS53f5T1vB87BVVgQce5cH5uYyCG0I+ fFwxDIlN0vfwbvtmPThFK8125lLwMrDZevzvll8yjvYBO1gW5fOQ6DH4fdCwysww8lHFvbTY YwVZFKDaTyZPU0fZQxPUM5WcOGAuWPxVhJ08U6puqsw03KLlh5A8unOGY+AEjCNbYAP9qqCn Urf8mHkRx0XKtGb4TyC9H2qm6nIhyyTcJofCLCisPtjkVGewmg7DBwQXEG85/6jhSaDt8l3M VMI+ic+6LNosUbtVMbhX1ixrDiIs3bwRuZtLgHz0ynVooK83upTLjJsouJpADD+iPILeA== IronPort-HdrOrdr: A9a23:EBZ1ZKHb71YLRQ5apLqEzseALOsnbusQ8zAXPiFKJSC9F/byqy nAppsmPHPP5gr5IUtQ++xoWpPhfZqsz/9ICOAqVN/JMTUO01HYT72Kg7GSuAHIKmnT8fNcyL clU4UWMqyLMbB25/yKhzVRH7wbsb26GKrDv5a6859jJzsaDZ2INj0JczpzxHcGPDV7OQ== X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="5.93,251,1654552800"; d="scan'208";a="168873004" From: To: CC: , =?UTF-8?q?Tobias=20R=C3=B6hmel?= Subject: [PATCH v3 5/9] target/arm: Add ARMCacheAttrs to the signature of pmsav8_mpu_lookup Date: Sat, 20 Aug 2022 16:19:10 +0200 Message-ID: <20220820141914.217399-6-tobias.roehmel@rwth-aachen.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220820141914.217399-1-tobias.roehmel@rwth-aachen.de> References: <20220820141914.217399-1-tobias.roehmel@rwth-aachen.de> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [2a02:908:1088:5920:e70b:29db:1db5:28bf] X-ClientProxiedBy: rwthex-w4-b.rwth-ad.de (2a00:8a60:1:e500::26:167) To RWTHEX-S2-B.rwth-ad.de (2a00:8a60:1:e500::26:155) 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=2a00:8a60:1:e501::5:48; envelope-from=tobias.roehmel@rwth-aachen.de; helo=mail-out-3.itc.rwth-aachen.de X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1661008018531100001 From: Tobias R=C3=B6hmel Add ARMCacheAttrs to the signature of pmsav8_mpu_lookup to prepare for the Cortex-R52 MPU which uses and combines cache attributes of different translation levels. Signed-off-by: Tobias R=C3=B6hmel --- target/arm/internals.h | 13 +++++++------ target/arm/m_helper.c | 3 ++- target/arm/ptw.c | 11 +++++++---- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index 6f94f3019d..b03049d920 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1109,12 +1109,6 @@ void v8m_security_lookup(CPUARMState *env, uint32_t = address, MMUAccessType access_type, ARMMMUIdx mmu_idx, V8M_SAttributes *sattrs); =20 -bool pmsav8_mpu_lookup(CPUARMState *env, uint32_t address, - MMUAccessType access_type, ARMMMUIdx mmu_idx, - hwaddr *phys_ptr, MemTxAttrs *txattrs, - int *prot, bool *is_subpage, - ARMMMUFaultInfo *fi, uint32_t *mregion); - /* Cacheability and shareability attributes for a memory access */ typedef struct ARMCacheAttrs { /* @@ -1126,6 +1120,13 @@ typedef struct ARMCacheAttrs { bool is_s2_format:1; } ARMCacheAttrs; =20 +bool pmsav8_mpu_lookup(CPUARMState *env, uint32_t address, + MMUAccessType access_type, ARMMMUIdx mmu_idx, + hwaddr *phys_ptr, MemTxAttrs *txattrs, + int *prot, bool *is_subpage, + ARMMMUFaultInfo *fi, uint32_t *mregion, + ARMCacheAttrs *cacheattrs); + bool get_phys_addr(CPUARMState *env, target_ulong address, MMUAccessType access_type, ARMMMUIdx mmu_idx, hwaddr *phys_ptr, MemTxAttrs *attrs, int *prot, diff --git a/target/arm/m_helper.c b/target/arm/m_helper.c index a740c3e160..44c80d733a 100644 --- a/target/arm/m_helper.c +++ b/target/arm/m_helper.c @@ -2829,10 +2829,11 @@ uint32_t HELPER(v7m_tt)(CPUARMState *env, uint32_t = addr, uint32_t op) * inspecting the other MPU state. */ if (arm_current_el(env) !=3D 0 || alt) { + ARMCacheAttrs cacheattrs =3D {0}; /* We can ignore the return value as prot is always set */ pmsav8_mpu_lookup(env, addr, MMU_DATA_LOAD, mmu_idx, &phys_addr, &attrs, &prot, &is_subpage, - &fi, &mregion); + &fi, &mregion, &cacheattrs); if (mregion =3D=3D -1) { mrvalid =3D false; mregion =3D 0; diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 8b037c1f55..c4f5721012 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -1702,7 +1702,8 @@ bool pmsav8_mpu_lookup(CPUARMState *env, uint32_t add= ress, MMUAccessType access_type, ARMMMUIdx mmu_idx, hwaddr *phys_ptr, MemTxAttrs *txattrs, int *prot, bool *is_subpage, - ARMMMUFaultInfo *fi, uint32_t *mregion) + ARMMMUFaultInfo *fi, uint32_t *mregion, + ARMCacheAttrs *cacheattrs) { /* * Perform a PMSAv8 MPU lookup (without also doing the SAU check @@ -1968,7 +1969,7 @@ static bool get_phys_addr_pmsav8(CPUARMState *env, ui= nt32_t address, MMUAccessType access_type, ARMMMUIdx mmu_= idx, hwaddr *phys_ptr, MemTxAttrs *txattrs, int *prot, target_ulong *page_size, - ARMMMUFaultInfo *fi) + ARMMMUFaultInfo *fi, ARMCacheAttrs *cache= attrs) { uint32_t secure =3D regime_is_secure(env, mmu_idx); V8M_SAttributes sattrs =3D {}; @@ -2036,7 +2037,8 @@ static bool get_phys_addr_pmsav8(CPUARMState *env, ui= nt32_t address, } =20 ret =3D pmsav8_mpu_lookup(env, address, access_type, mmu_idx, phys_ptr, - txattrs, prot, &mpu_is_subpage, fi, NULL); + txattrs, prot, &mpu_is_subpage, fi, + NULL, cacheattrs); *page_size =3D sattrs.subpage || mpu_is_subpage ? 1 : TARGET_PAGE_SIZE; return ret; } @@ -2416,7 +2418,8 @@ bool get_phys_addr(CPUARMState *env, target_ulong add= ress, if (arm_feature(env, ARM_FEATURE_V8)) { /* PMSAv8 */ ret =3D get_phys_addr_pmsav8(env, address, access_type, mmu_id= x, - phys_ptr, attrs, prot, page_size, f= i); + phys_ptr, attrs, prot, page_size, + fi, cacheattrs); } else if (arm_feature(env, ARM_FEATURE_V7)) { /* PMSAv7 */ ret =3D get_phys_addr_pmsav7(env, address, access_type, mmu_id= x, --=20 2.25.1 From nobody Sun May 12 19:43:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 1661005850064644.5595054607694; Sat, 20 Aug 2022 07:30:50 -0700 (PDT) Received: from localhost ([::1]:36800 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oPPUt-0008Jl-9s for importer@patchew.org; Sat, 20 Aug 2022 10:30:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50456) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oPPK7-0005DP-GF for qemu-devel@nongnu.org; Sat, 20 Aug 2022 10:19:39 -0400 Received: from mail-out-2a.itc.rwth-aachen.de ([2a00:8a60:1:e501::5:45]:12696) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oPPK2-0003lu-I3 for qemu-devel@nongnu.org; Sat, 20 Aug 2022 10:19:39 -0400 Received: from rwthex-s2-b.rwth-ad.de ([134.130.26.155]) by mail-in-2a.itc.rwth-aachen.de with ESMTP; 20 Aug 2022 16:19:27 +0200 Received: from localhost.localdomain (2a02:908:1088:5920:e70b:29db:1db5:28bf) by RWTHEX-S2-B.rwth-ad.de (2a00:8a60:1:e500::26:155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.12; Sat, 20 Aug 2022 16:19:27 +0200 X-IPAS-Result: =?us-ascii?q?A2B5AAD06wBj/5sagoZaHQEBAQEJARIBBQUBQIE9BgELA?= =?us-ascii?q?YR9hE6RD4ETm3CBfAsBAQEBAQEBAQEIAUIEAQGFAwICAoRiJjYHDgECBAEBA?= =?us-ascii?q?QEDAgMBAQEBAQEDAQEGAQEBAQEBBgSBHIUvRoZDAgEDIwQLAUYQHQMFAiYCA?= =?us-ascii?q?kkOBg4Fgn2DI6kZfzKBAYRwhRIJAYEHLAGID4IahSuCUIEVgnN1hGEwgwmCZ?= =?us-ascii?q?QSWKIMmHDgDCQQHBSweQgMLHw4WBQgJFxIQEAIEERoLBgMWPgkCBA4DQAgNA?= =?us-ascii?q?xEEAw8YCRIIEAQGAzEMJQsDFAwBBgMGBQMBAxsDFAMFJAcDGQ8jDQ0EHwwDA?= =?us-ascii?q?wUlAwICGwcCAgMCBhUGAgI2GDkIBAgEKyMPBQIHLwUELwIeBAUGEQgCFgIGB?= =?us-ascii?q?AQEBBUCEAgCCCcXBxMzGQEFMicQCSEcDhoQBQYTAyBvBQc+DygzNTkrHRsKg?= =?us-ascii?q?RIqKRUDBAQDAgYTAwMiAhAuMQMVBikTEi0HK3UJAgMiaQUDAwQoLAMJPgcJI?= =?us-ascii?q?iY9BQVbOgUDAxAiPQYDCQMCKRUnmw2BD4F7wlgHghahSUyDdpJ7ApIBLZEph?= =?us-ascii?q?TGCSqBFhCcCBAIEBQIWgWgIggZxgzZRFwIPnHJzOwIGAQoBAQMJilwBAQ?= IronPort-Data: A9a23:6JRsZKNMMCPHRZrvrR0XlcFynXyQoLVcMsEvi/4bfWQNrUoigjJWn WEWDG7SbK6IMWvwLt9+bIvgpEsH7JKDzNBjG3M5pCpnJ55oRWspJvzEdBuqb3PKRiHnZBg6h ynLQoCYdKjYdleF+lH1dOGJQUBUjclkfJKlYAL/En03FFQMpBsJ00o5wbZp2NYw27BVPivU0 T/Mi5yHULOa82MsWo4kw/rrRMRH5amaVJsw5zTSVNgT1LPsvyB94KE3ecldG0DFrrx8RYZWc c6elu3jrjOBl/saIojNfr7TKiXmS1NJVOSEoiI+t6OK2nCuqsGuu0o2HKJ0VKtZt9mGt+5b5 thOkdufcgo4MqbXqvpFeDJcNBgraMWq+JefSZS+mfas823rQz7XmbBESlspIY1d8+oxDWwmG f4wcWtRKEnY36TsnvTiF7QEascLdaEHOKsDvXthxCqfF/ErQZXOR43Q+sNYmT45jcBDG7DSa qL1bBI2PUqaPEEXZj/7DroXhN+Di1D6egdjrVzEipM0wnKMlxBYhe2F3N39P4biqd9utl+Vo 3+D82nnDxUyMtuZxjyYtHW2iYfnhS7nVZhUEbSp+vNuhHWXx2oaEhpQUkG0ycRVkWakRM5fJ lxR4XBrp+4o61CrC9DxGRG1yJKZgiMhtxNrO7VSwGmwJmD8um512kBsouZ9VeEb IronPort-HdrOrdr: A9a23:RwWX9q/HhPxjVN8fecduk+DmI+orL9Y04lQ7vn2ZKCY1TiX8ra vFoB11726WtN98YhwdcKm7Sc+9qBDnm6Kdg7N8AV7KZmCPhIPDRLsSlLcKqAeOJ8SRzI5gPa sJSdkdNDX8ZWIK6voT6mGDYrMdKNbuytHNudvj X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="5.93,251,1654552800"; d="scan'208";a="19627404" From: To: CC: , =?UTF-8?q?Tobias=20R=C3=B6hmel?= Subject: [PATCH v3 6/9] target/arm: Enable TTBCR_EAE for ARMv8-R AArch32 Date: Sat, 20 Aug 2022 16:19:11 +0200 Message-ID: <20220820141914.217399-7-tobias.roehmel@rwth-aachen.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220820141914.217399-1-tobias.roehmel@rwth-aachen.de> References: <20220820141914.217399-1-tobias.roehmel@rwth-aachen.de> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [2a02:908:1088:5920:e70b:29db:1db5:28bf] X-ClientProxiedBy: rwthex-w4-b.rwth-ad.de (2a00:8a60:1:e500::26:167) To RWTHEX-S2-B.rwth-ad.de (2a00:8a60:1:e500::26:155) 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=2a00:8a60:1:e501::5:45; envelope-from=tobias.roehmel@rwth-aachen.de; helo=mail-out-2a.itc.rwth-aachen.de X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1661005852266100001 From: Tobias R=C3=B6hmel ARMv8-R AArch32 CPUs behave as if TTBCR.EAE is always 1 even tough they don't have the TTBCR register. See ARM Architecture Reference Manual Supplement - ARMv8, for the ARMv8-R AArch32 architecture profile Version:A.c section C1.2. Signed-off-by: Tobias R=C3=B6hmel --- target/arm/debug_helper.c | 3 ++- target/arm/internals.h | 3 ++- target/arm/tlb_helper.c | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/target/arm/debug_helper.c b/target/arm/debug_helper.c index b18a6bd3a2..44b1e32974 100644 --- a/target/arm/debug_helper.c +++ b/target/arm/debug_helper.c @@ -434,7 +434,8 @@ static uint32_t arm_debug_exception_fsr(CPUARMState *en= v) using_lpae =3D true; } else { if (arm_feature(env, ARM_FEATURE_LPAE) && - (env->cp15.tcr_el[target_el].raw_tcr & TTBCR_EAE)) { + ((env->cp15.tcr_el[target_el].raw_tcr & TTBCR_EAE) + || arm_feature(env, ARM_FEATURE_V8_R))) { using_lpae =3D true; } } diff --git a/target/arm/internals.h b/target/arm/internals.h index b03049d920..e2a2b03d41 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -254,7 +254,8 @@ static inline bool extended_addresses_enabled(CPUARMSta= te *env) { TCR *tcr =3D &env->cp15.tcr_el[arm_is_secure(env) ? 3 : 1]; return arm_el_is_aa64(env, 1) || - (arm_feature(env, ARM_FEATURE_LPAE) && (tcr->raw_tcr & TTBCR_EA= E)); + (arm_feature(env, ARM_FEATURE_LPAE) && ((tcr->raw_tcr & TTBCR_E= AE) + || arm_feature(env, ARM_FEATURE_V8_R))); } =20 /* Update a QEMU watchpoint based on the information the guest has set in = the diff --git a/target/arm/tlb_helper.c b/target/arm/tlb_helper.c index 7d8a86b3c4..891326edb8 100644 --- a/target/arm/tlb_helper.c +++ b/target/arm/tlb_helper.c @@ -20,7 +20,8 @@ bool regime_using_lpae_format(CPUARMState *env, ARMMMUIdx= mmu_idx) return true; } if (arm_feature(env, ARM_FEATURE_LPAE) - && (regime_tcr(env, mmu_idx)->raw_tcr & TTBCR_EAE)) { + && ((regime_tcr(env, mmu_idx)->raw_tcr & TTBCR_EAE) + || arm_feature(env, ARM_FEATURE_V8_R))) { return true; } return false; --=20 2.25.1 From nobody Sun May 12 19:43:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 166100696300257.93653289165525; Sat, 20 Aug 2022 07:49:23 -0700 (PDT) Received: from localhost ([::1]:51470 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oPPmq-0005r5-3f for importer@patchew.org; Sat, 20 Aug 2022 10:49:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50460) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oPPKA-0005Ei-Js for qemu-devel@nongnu.org; Sat, 20 Aug 2022 10:19:42 -0400 Received: from mail-out-2a.itc.rwth-aachen.de ([2a00:8a60:1:e501::5:45]:12696) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oPPK7-0003lu-S0 for qemu-devel@nongnu.org; Sat, 20 Aug 2022 10:19:42 -0400 Received: from rwthex-s2-b.rwth-ad.de ([134.130.26.155]) by mail-in-2a.itc.rwth-aachen.de with ESMTP; 20 Aug 2022 16:19:27 +0200 Received: from localhost.localdomain (2a02:908:1088:5920:e70b:29db:1db5:28bf) by RWTHEX-S2-B.rwth-ad.de (2a00:8a60:1:e500::26:155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.12; Sat, 20 Aug 2022 16:19:27 +0200 X-IPAS-Result: =?us-ascii?q?A2CrAAD06wBj/5sagoZaHAEBAQEBAQcBARIBAQQEAQFAg?= =?us-ascii?q?T4EAQELAYR9hE6RD4ETnWwLAQEBAQEBAQEBCAFCBAEBhQMCAgKEYiY3Bg4BA?= =?us-ascii?q?gQBAQEBAwIDAQEBAQEBAwEBBgEBAQEBAQYEgRyFL0aGQwIBAyMECwFGECAFA?= =?us-ascii?q?iYCAlcGDgWCfYMjqRl/MoEBhHCFEgkBgQcsAYgPghqFK4JQgRWCc3WEYYM5g?= =?us-ascii?q?mUEmU4cOAMJBAcFLB5CAwsfDhYFCAkXEhAQAgQRGgsGAxY+CQIEDgNACA0DE?= =?us-ascii?q?QQDDxgJEggQBAYDMQwlCwMUDAEGAwYFAwEDGwMUAwUkBwMZDyMNDQQfDAMDB?= =?us-ascii?q?SUDAgIbBwICAwIGFQYCAjYYOQgECAQrIw8FAgcvBQQvAh4EBQYRCAIWAgYEB?= =?us-ascii?q?AQEFQIQCAIIJxcHEzMZAQUyJxAJIRwOGhAFBhMDIG8FBz4PKDM1OSsdGwqBE?= =?us-ascii?q?iopFQMEBAMCBhMDAyICEC4xAxUGKRMSLQcrdQkCAyJpBQMDBCgsAwk+BwkiJ?= =?us-ascii?q?j0FBVs6BQMDECI9BgMJAwIpPJsNgQ+jb6BkB4IWoUlMlnECkgGXB6F3gRiEJ?= =?us-ascii?q?wIEAgQFAhaBd4F/cYM2URcCD44sFo4wczsCBgEKAQEDCYpcAQE?= IronPort-Data: A9a23:boSNBKMdAJGZ+ZHvrR0XlcFynXyQoLVcMsEvi/4bfWQNrUoi1jUAz TEYX26OO/fZMzegKIogaYW28U4Fv5/UytJrQHM5pCpnJ55oRWspJvzEdBuqb3PKRiHnZBg6h ynLQoCYdKjYdleF+lH1dOGJQUBUjclkfJKlYAL/En03FFQMpBsJ00o5wbZp2NYw27BVPivU0 T/Mi5yHULOa82MsWo4kw/rrRMRH5amaVJsw5zTSVNgT1LPsvyB94KE3ecldG0DFrrx8RYZWc c6elu3jrjOBl/saIojNfr7TKiXmS1NJVOSEoiI+t6OK2nCuqsGuu0o2HKJ0VKtZt9mGt/978 45R8raTcxwCIPLXyesiED9xDC4raMWq+JefSZS+mfas823rQz7XmbBESlspIY1d8+oxDWwmG f4wcWtRKEnY36TsnvTiF7QEascLdaEHOKsDvXthxCqfF/ErQZXOR43Q+sNYmT45jcBDG7DSa qL1bBI2PUqaPEEXZz/7Droclt2EqGHaTQRW8muolIgNvHPNxhd+he2F3N39P4biqd9utl+Vo 3+D82nnDxUyMtuZxjyYtHW2iYfnhS7nVZhUEbSp+vNuhHWXx2oaEhpQUkG0ycRVkWakRM5fJ lxR4XBrp+4o61CrC9DxGRG1yJKZgiMhtxNrO7VSwGmwJmD8uW512kBsouZ9VeEb IronPort-HdrOrdr: A9a23:/UZkFaDiyYpSsajlHemS55DYdb4zR+YMi2TDtnoRdfUxSKfzqy nApoV56faZslsssQgb6La90cq7L080l6QY3WB5B97LYOGN0FHYVb2KhrGM/9SPIU3DHuI079 YDT0ByYOeAamSTh67BkWyF+9lJ+qjizJyV X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="5.93,251,1654552800"; d="scan'208";a="19627405" From: To: CC: , =?UTF-8?q?Tobias=20R=C3=B6hmel?= Subject: [PATCH v3 7/9] target/arm: Add PMSAv8r registers Date: Sat, 20 Aug 2022 16:19:12 +0200 Message-ID: <20220820141914.217399-8-tobias.roehmel@rwth-aachen.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220820141914.217399-1-tobias.roehmel@rwth-aachen.de> References: <20220820141914.217399-1-tobias.roehmel@rwth-aachen.de> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [2a02:908:1088:5920:e70b:29db:1db5:28bf] X-ClientProxiedBy: rwthex-w4-b.rwth-ad.de (2a00:8a60:1:e500::26:167) To RWTHEX-S2-B.rwth-ad.de (2a00:8a60:1:e500::26:155) 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=2a00:8a60:1:e501::5:45; envelope-from=tobias.roehmel@rwth-aachen.de; helo=mail-out-2a.itc.rwth-aachen.de X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1661006964317100001 From: Tobias R=C3=B6hmel Signed-off-by: Tobias R=C3=B6hmel --- target/arm/cpu.h | 10 +++ target/arm/helper.c | 171 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 181 insertions(+) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 86e06116a9..632d0d13c6 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -726,8 +726,18 @@ typedef struct CPUArchState { */ uint32_t *rbar[M_REG_NUM_BANKS]; uint32_t *rlar[M_REG_NUM_BANKS]; + uint32_t prbarn[255]; + uint32_t prlarn[255]; + uint32_t hprbarn[255]; + uint32_t hprlarn[255]; uint32_t mair0[M_REG_NUM_BANKS]; uint32_t mair1[M_REG_NUM_BANKS]; + uint32_t prbar; + uint32_t prlar; + uint32_t prselr; + uint32_t hprbar; + uint32_t hprlar; + uint32_t hprselr; } pmsav8; =20 /* v8M SAU */ diff --git a/target/arm/helper.c b/target/arm/helper.c index 23461397e0..1730383f28 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -7422,6 +7422,78 @@ static CPAccessResult access_joscr_jmcr(CPUARMState = *env, return CP_ACCESS_OK; } =20 +static void prbar_write(CPUARMState *env, const ARMCPRegInfo *ri, + uint64_t value) +{ + env->pmsav8.prbarn[env->pmsav8.prselr] =3D value; +} + +static void prlar_write(CPUARMState *env, const ARMCPRegInfo *ri, + uint64_t value) +{ + env->pmsav8.prlarn[env->pmsav8.prselr] =3D value; +} + +static uint64_t prbar_read(CPUARMState *env, const ARMCPRegInfo *ri) +{ + return env->pmsav8.prbarn[env->pmsav8.prselr]; +} + +static uint64_t prlar_read(CPUARMState *env, const ARMCPRegInfo *ri) +{ + return env->pmsav8.prlarn[env->pmsav8.prselr]; +} + +static void hprbar_write(CPUARMState *env, const ARMCPRegInfo *ri, + uint64_t value) +{ + env->pmsav8.hprbarn[env->pmsav8.hprselr] =3D value; +} + +static void hprlar_write(CPUARMState *env, const ARMCPRegInfo *ri, + uint64_t value) +{ + env->pmsav8.hprlarn[env->pmsav8.hprselr] =3D value; +} + +static void hprenr_write(CPUARMState *env, const ARMCPRegInfo *ri, + uint64_t value) +{ + uint32_t n; + ARMCPU *cpu =3D env_archcpu(env); + for (n =3D 0; n < (int)cpu->pmsav7_dregion; ++n) { + if (value & (1 << n)) { + env->pmsav8.hprlarn[n] |=3D 0x1; + } else { + env->pmsav8.hprlarn[n] &=3D (~0x1); + } + } +} + +static uint64_t hprbar_read(CPUARMState *env, const ARMCPRegInfo *ri) +{ + return env->pmsav8.hprbarn[env->pmsav8.hprselr]; +} + +static uint64_t hprlar_read(CPUARMState *env, const ARMCPRegInfo *ri) +{ + return env->pmsav8.hprlarn[env->pmsav8.hprselr]; +} + +static uint64_t hprenr_read(CPUARMState *env, const ARMCPRegInfo *ri) +{ + uint32_t n; + uint32_t result =3D 0x0; + ARMCPU *cpu =3D env_archcpu(env); + + for (n =3D 0; n < (int)cpu->pmsav7_dregion; ++n) { + if (env->pmsav8.hprlarn[n] & 0x1) { + result |=3D (0x1 << n); + } + } + return result; +} + static const ARMCPRegInfo jazelle_regs[] =3D { { .name =3D "JIDR", .cp =3D 14, .crn =3D 0, .crm =3D 0, .opc1 =3D 7, .opc2 =3D 0, @@ -8249,6 +8321,46 @@ void register_cp_regs_for_features(ARMCPU *cpu) .access =3D PL1_R, .type =3D ARM_CP_CONST, .resetvalue =3D cpu->pmsav7_dregion << 8 }; + /* PMSAv8-R registers*/ + ARMCPRegInfo id_pmsav8_r_reginfo[] =3D { + { .name =3D "HMPUIR", + .cp =3D 15, .crn =3D 0, .crm =3D 0, .opc1 =3D 4, .opc2 =3D 4, + .access =3D PL2_R, .type =3D ARM_CP_CONST, + .resetvalue =3D cpu->pmsav7_dregion}, + /* PMSAv8-R registers */ + { .name =3D "PRBAR", + .cp =3D 15, .opc1 =3D 0, .crn =3D 6, .crm =3D 3, .opc2 =3D 0, + .access =3D PL1_RW, .resetvalue =3D 0, + .readfn =3D prbar_read, .writefn =3D prbar_write, + .fieldoffset =3D offsetof(CPUARMState, pmsav8.prbar)}, + { .name =3D "PRLAR", + .cp =3D 15, .opc1 =3D 0, .crn =3D 6, .crm =3D 3, .opc2 =3D 1, + .access =3D PL1_RW, .resetvalue =3D 0, + .readfn =3D prlar_read, .writefn =3D prlar_write, + .fieldoffset =3D offsetof(CPUARMState, pmsav8.prlar)}, + { .name =3D "PRSELR", .resetvalue =3D 0, + .cp =3D 15, .opc1 =3D 0, .crn =3D 6, .crm =3D 2, .opc2 =3D 1, + .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, + .fieldoffset =3D offsetof(CPUARMState, pmsav8.prselr)}, + { .name =3D "HPRBAR", .resetvalue =3D 0, + .readfn =3D hprbar_read, .writefn =3D hprbar_write, + .cp =3D 15, .opc1 =3D 4, .crn =3D 6, .crm =3D 3, .opc2 =3D 0, + .access =3D PL2_RW, .resetvalue =3D 0, + .fieldoffset =3D offsetof(CPUARMState, pmsav8.hprbar)}, + { .name =3D "HPRLAR", + .cp =3D 15, .opc1 =3D 4, .crn =3D 6, .crm =3D 3, .opc2 =3D 1, + .access =3D PL2_RW, .resetvalue =3D 0, + .readfn =3D hprlar_read, .writefn =3D hprlar_write, + .fieldoffset =3D offsetof(CPUARMState, pmsav8.hprlar)}, + { .name =3D "HPRSELR", .resetvalue =3D 0, + .cp =3D 15, .opc1 =3D 4, .crn =3D 6, .crm =3D 2, .opc2 =3D 1, + .access =3D PL2_RW, .accessfn =3D access_tvm_trvm, + .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, .resetvalue =3D 0, + .readfn =3D hprenr_read, .writefn =3D hprenr_write}, + }; static const ARMCPRegInfo crn0_wi_reginfo =3D { .name =3D "CRN0_WI", .cp =3D 15, .crn =3D 0, .crm =3D CP_ANY, .opc1 =3D CP_ANY, .opc2 =3D CP_ANY, .access =3D PL1_W, @@ -8292,6 +8404,65 @@ void register_cp_regs_for_features(ARMCPU *cpu) define_arm_cp_regs(cpu, id_cp_reginfo); if (!arm_feature(env, ARM_FEATURE_PMSA)) { define_one_arm_cp_reg(cpu, &id_tlbtr_reginfo); + } else if (arm_feature(env, ARM_FEATURE_V8_R)) { + uint32_t i =3D 0; + char hprbar_string[] =3D "HPRBAR%u"; + char hprlar_string[] =3D "HPRLAR%u"; + + char prbar_string[] =3D "PRBAR%u"; + char prlar_string[] =3D "PRLAR%u"; + char tmp_string[50]; + define_one_arm_cp_reg(cpu, &id_mpuir_reginfo); + define_arm_cp_regs(cpu, id_pmsav8_r_reginfo); + for (i =3D 0; i < cpu->pmsav7_dregion; ++i) { + uint8_t crm =3D 0b1000 | ((i & 0b1110) >> 1); + uint8_t opc2 =3D (i & 0x1) << 2; + + sprintf(tmp_string, hprbar_string, i); + ARMCPRegInfo tmp_hprbarn_reginfo =3D { + .name =3D tmp_string, + .cp =3D 15, .opc1 =3D 4, .crn =3D 6, .crm =3D crm, .op= c2 =3D opc2, + .access =3D PL2_RW, .resetvalue =3D 0, + .accessfn =3D access_tvm_trvm, + .fieldoffset =3D offsetof(CPUARMState, pmsav8.hprbarn) + + i * sizeof(env->pmsav8.hprbarn[0]) + }; + define_one_arm_cp_reg(cpu, &tmp_hprbarn_reginfo); + + sprintf(tmp_string, prbar_string, i); + ARMCPRegInfo tmp_prbarn_reginfo =3D { + .name =3D tmp_string, + .cp =3D 15, .opc1 =3D 0, .crn =3D 6, .crm =3D crm, .op= c2 =3D opc2, + .access =3D PL1_RW, .resetvalue =3D 0, + .accessfn =3D access_tvm_trvm, + .fieldoffset =3D offsetof(CPUARMState, pmsav8.prbarn) + + i * sizeof(env->pmsav8.prbarn[0]) + }; + define_one_arm_cp_reg(cpu, &tmp_prbarn_reginfo); + + opc2 =3D (i & 0x1) << 2 | 0x1; + sprintf(tmp_string, hprlar_string, i); + ARMCPRegInfo tmp_hprlarn_reginfo =3D { + .name =3D tmp_string, + .cp =3D 15, .opc1 =3D 4, .crn =3D 6, .crm =3D crm, .op= c2 =3D opc2, + .access =3D PL2_RW, .resetvalue =3D 0, + .accessfn =3D access_tvm_trvm, + .fieldoffset =3D offsetof(CPUARMState, pmsav8.hprlarn) + + i * sizeof(env->pmsav8.hprlarn[0]) + }; + define_one_arm_cp_reg(cpu, &tmp_hprlarn_reginfo); + + sprintf(tmp_string, prlar_string, i); + ARMCPRegInfo tmp_prlarn_reginfo =3D { + .name =3D tmp_string, + .cp =3D 15, .opc1 =3D 0, .crn =3D 6, .crm =3D crm, .op= c2 =3D opc2, + .access =3D PL1_RW, .resetvalue =3D 0, + .accessfn =3D access_tvm_trvm, + .fieldoffset =3D offsetof(CPUARMState, pmsav8.prlarn) + + i * sizeof(env->pmsav8.prlarn[0]) + }; + define_one_arm_cp_reg(cpu, &tmp_prlarn_reginfo); + } } else if (arm_feature(env, ARM_FEATURE_V7)) { define_one_arm_cp_reg(cpu, &id_mpuir_reginfo); } --=20 2.25.1 From nobody Sun May 12 19:43:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 1661009054521315.6049536212445; Sat, 20 Aug 2022 08:24:14 -0700 (PDT) Received: from localhost ([::1]:55632 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oPQKY-0006qs-Ul for importer@patchew.org; Sat, 20 Aug 2022 11:24:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50468) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oPPKD-0005GC-AW for qemu-devel@nongnu.org; Sat, 20 Aug 2022 10:19:45 -0400 Received: from mail-out-3.itc.rwth-aachen.de ([2a00:8a60:1:e501::5:48]:17491) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oPPK8-0003nJ-OD for qemu-devel@nongnu.org; Sat, 20 Aug 2022 10:19:45 -0400 Received: from rwthex-s2-b.rwth-ad.de ([134.130.26.155]) by mail-in-3.itc.rwth-aachen.de with ESMTP; 20 Aug 2022 16:19:29 +0200 Received: from localhost.localdomain (2a02:908:1088:5920:e70b:29db:1db5:28bf) by RWTHEX-S2-B.rwth-ad.de (2a00:8a60:1:e500::26:155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.12; Sat, 20 Aug 2022 16:19:27 +0200 X-IPAS-Result: =?us-ascii?q?A2DqBABk7ABj/5sagoZaHgEBCxIMQIZNhE6RDAOefwsBA?= =?us-ascii?q?QEBAQEBAQEIAUIEAQGFAwICAoRiJjgTAQIEAQEBAQMCAwEBAQEBAQMBAQYBA?= =?us-ascii?q?QEBAQEGBIEchS9GhkMCAQMjBAsBQQUQIAUCJgICVwYOBYJ9gyOpGn8ygQGEc?= =?us-ascii?q?IUSCQGBByyIEIIahSuCUIJRgTd1hBxFgzmCZQSVU4N7HDgDCQQHBSweQgMLH?= =?us-ascii?q?w4WBQgJFxIQEAIEERoLBgMWPgkCBA4DQAgNAxEEAw8YCRIIEAQGAzEMJQsDF?= =?us-ascii?q?AwBBgMGBQMBAxsDFAMFJAcDGQ8jDQ0EHwwDAwUlAwICGwcCAgMCBhUGAgI2G?= =?us-ascii?q?DkIBAgEKyMPBQIHLwUELwIeBAUGEQgCFgIGBAQEBBUCEAgCCCcXBxMzGQEFM?= =?us-ascii?q?icQCSEcDhoQBQYTAyBvBQc+DygzNTkrHRsKgRIqKRUDBAQDAgYTAwMiAhAuM?= =?us-ascii?q?QMVBikTEi0HK3UJAgMiaQUDAwQoLAMJPgcJIiY9BQVbOgUDAxAiPQYDCQMCK?= =?us-ascii?q?TyaG3IBLC00glOuaJMZB4IWoUlMg3aSewI2kUuXB6MPhCcCBAIEBQIWgXiBf?= =?us-ascii?q?nGDNlEXAg+OLBaOMHM7AgYBCgEBAwmIFYJHAQE?= IronPort-Data: A9a23:sc/E1arVThPHKPezp4ouQ1d5peBeBmKlZxIvgKrLsJaIsI4StFCzt garIBmBMq6INGTyLY92aI6180IFu8TWn4AyGgBpqng3HygUouPIVI+TRqvS04J+DeWeFh49v 5VGAjXkBJppJpMJjk71atANlVEliefQAOOU5NfsYkidfyc9IMsaoU8lyrVRbrJA24DjWVvd4 4uq+aUzBXf8s9JKGjNMg068gE431BjCkGtwUosWPK0jUPf2zhH5PbpHTU2DByKQrrp8QoZWc 93+IISRpQs1yT9wUI//wuajGqE9auW60QCm0hK6UkU56/RIjnRaPq0TbJLwZarL4tmEt4gZ9 TlDiXC/YTtxB7+QxNYUbxwbIitYYIhk6KKYfWfq5KR/z2WeG5ft689RMGEbDcgjoKNdR3tR6 fxdITxLYh3ra+CemennDLA33oJ5co+yYd53VnJIlFk1Cd46RprCSr6M/9hV3DI9guhUAureI sMQYjpialLMbnWjP39OVsJuw7zw3iSXnztwl0yzpOlwxVHoklJYi6PSMP/TfNzaWpAA9qqfj iecl4jjOTkDOdmCjDaI7H+orunImyz9RcQVDrLQ3uZnnFCJgGkaGREbUV+Tpfi/g1S5HdVFJ CQpFjEGt7cu9EG7C8KnGhf+umGYvlsVV5xcHoXW9T2w90Yd2C7BbkBsc9KLQIZOWBMeLdDy6 mK0og== IronPort-HdrOrdr: A9a23:GM29cqkCOni0RpOKLJmWU9KtdbHpDfIK3DAbv31ZSRFFG/Fw9v rDoB1/73TJYVkqN03I9ervBED4ewK/yXcW2+ks1MaZPTUO0VHAROsO0WKI+UyCJ8SRzJ8n6Y 5QN4R4Fd3sHRxboK/BkXOF+9tL+qjhzEil792uq0uER2tRGsRdBwgSMHf8LqSufng+OXPuLu vl2vZ6 X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="5.93,251,1654552800"; d="scan'208";a="168873005" From: To: CC: , =?UTF-8?q?Tobias=20R=C3=B6hmel?= Subject: [PATCH v3 8/9] target/arm: Add PMSAv8r functionality Date: Sat, 20 Aug 2022 16:19:13 +0200 Message-ID: <20220820141914.217399-9-tobias.roehmel@rwth-aachen.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220820141914.217399-1-tobias.roehmel@rwth-aachen.de> References: <20220820141914.217399-1-tobias.roehmel@rwth-aachen.de> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [2a02:908:1088:5920:e70b:29db:1db5:28bf] X-ClientProxiedBy: rwthex-w4-b.rwth-ad.de (2a00:8a60:1:e500::26:167) To RWTHEX-S2-B.rwth-ad.de (2a00:8a60:1:e500::26:155) 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=2a00:8a60:1:e501::5:48; envelope-from=tobias.roehmel@rwth-aachen.de; helo=mail-out-3.itc.rwth-aachen.de X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1661009056153100001 From: Tobias R=C3=B6hmel Add PMSAv8r translation. Signed-off-by: Tobias R=C3=B6hmel --- target/arm/ptw.c | 171 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 150 insertions(+), 21 deletions(-) diff --git a/target/arm/ptw.c b/target/arm/ptw.c index c4f5721012..c7e37c66d0 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -140,6 +140,9 @@ static bool regime_translation_disabled(CPUARMState *en= v, ARMMMUIdx mmu_idx) */ return true; } + } else if (arm_feature(env, ARM_FEATURE_V8_R)) { + return !(regime_sctlr(env, mmu_idx) & SCTLR_M) || + (!(regime_el(env, mmu_idx) =3D=3D 2) && arm_hcr_el2_eff(env) & HCR= _TGE); } =20 hcr_el2 =3D arm_hcr_el2_eff(env); @@ -1504,6 +1507,8 @@ static bool pmsav7_use_background_region(ARMCPU *cpu,= ARMMMUIdx mmu_idx, if (arm_feature(env, ARM_FEATURE_M)) { return env->v7m.mpu_ctrl[regime_is_secure(env, mmu_idx)] & R_V7M_MPU_CTRL_PRIVDEFENA_MASK; + } else if (arm_feature(env, ARM_FEATURE_V8_R)) { + return false; } else { return regime_sctlr(env, mmu_idx) & SCTLR_BR; } @@ -1698,6 +1703,77 @@ static bool get_phys_addr_pmsav7(CPUARMState *env, u= int32_t address, return !(*prot & (1 << access_type)); } =20 +static uint32_t *regime_rbar(CPUARMState *env, ARMMMUIdx mmu_idx, + uint32_t secure) +{ + if (arm_feature(env, ARM_FEATURE_V8_R)) { + if (regime_el(env, mmu_idx) =3D=3D 2) { + return env->pmsav8.hprbarn; + } else { + return env->pmsav8.prbarn; + } + } else { + return env->pmsav8.rbar[secure]; + } +} + +static uint32_t *regime_rlar(CPUARMState *env, ARMMMUIdx mmu_idx, + uint32_t secure) +{ + if (arm_feature(env, ARM_FEATURE_V8_R)) { + if (regime_el(env, mmu_idx) =3D=3D 2) { + return env->pmsav8.hprlarn; + } else { + return env->pmsav8.prlarn; + } + } else { + return env->pmsav8.rlar[secure]; + } +} + +static inline void get_phys_addr_pmsav8_default(CPUARMState *env, + ARMMMUIdx mmu_idx, + uint32_t address, int *pro= t) +{ + if (arm_feature(env, ARM_FEATURE_V8_R)) { + *prot =3D PAGE_READ | PAGE_WRITE; + if (address <=3D 0x7FFFFFFF) { + *prot |=3D PAGE_EXEC; + } + if ((regime_el(env, mmu_idx) =3D=3D 2) + && (regime_sctlr(env, mmu_idx) & SCTLR_WXN) + && (regime_sctlr(env, mmu_idx) & SCTLR_M)) { + *prot &=3D ~PAGE_EXEC; + } + } else { + get_phys_addr_pmsav7_default(env, mmu_idx, address, prot); + } +} + +static bool pmsav8_fault(bool hit, CPUARMState *env, ARMMMUIdx mmu_idx) +{ + if (arm_feature(env, ARM_FEATURE_V8_R)) { + if (regime_el(env, mmu_idx) =3D=3D 2) { + if (!hit && (mmu_idx !=3D ARMMMUIdx_E2)) { + return true; + } else if (!hit && (mmu_idx =3D=3D ARMMMUIdx_E2) + &&!(regime_sctlr(env, mmu_idx) & SCTLR_BR)) { + return true; + } + } else { + if (!hit && (mmu_idx !=3D ARMMMUIdx_Stage1_E1)) { + return true; + } else if (!hit && (mmu_idx =3D=3D ARMMMUIdx_Stage1_E1) + &&!(regime_sctlr(env, mmu_idx) & SCTLR_BR)) { + return true; + } + } + return false; + } else { + return !hit; + } +} + bool pmsav8_mpu_lookup(CPUARMState *env, uint32_t address, MMUAccessType access_type, ARMMMUIdx mmu_idx, hwaddr *phys_ptr, MemTxAttrs *txattrs, @@ -1730,6 +1806,12 @@ bool pmsav8_mpu_lookup(CPUARMState *env, uint32_t ad= dress, *mregion =3D -1; } =20 + if (arm_feature(env, ARM_FEATURE_V8_R)) { + if (mmu_idx =3D=3D ARMMMUIdx_Stage2) { + fi->stage2 =3D true; + } + } + /* * Unlike the ARM ARM pseudocode, we don't need to check whether this * was an exception vector read from the vector table (which is always @@ -1746,17 +1828,26 @@ bool pmsav8_mpu_lookup(CPUARMState *env, uint32_t a= ddress, hit =3D true; } =20 + uint32_t bitmask; + if (arm_feature(env, ARM_FEATURE_V8_R)) { + bitmask =3D 0x3f; + } else { + bitmask =3D 0x1f; + } + + for (n =3D (int)cpu->pmsav7_dregion - 1; n >=3D 0; n--) { /* region search */ /* - * Note that the base address is bits [31:5] from the register - * with bits [4:0] all zeroes, but the limit address is bits - * [31:5] from the register with bits [4:0] all ones. + * Note that the base address is bits [31:x] from the register + * with bits [x-1:0] all zeroes, but the limit address is bits + * [31:x] from the register with bits [x:0] all ones. Where x = is + * 5 for Cortex-M and 6 for Cortex-R */ - uint32_t base =3D env->pmsav8.rbar[secure][n] & ~0x1f; - uint32_t limit =3D env->pmsav8.rlar[secure][n] | 0x1f; + uint32_t base =3D regime_rbar(env, mmu_idx, secure)[n] & ~bitm= ask; + uint32_t limit =3D regime_rlar(env, mmu_idx, secure)[n] | bitm= ask; =20 - if (!(env->pmsav8.rlar[secure][n] & 0x1)) { + if (!(regime_rlar(env, mmu_idx, secure)[n] & 0x1)) { /* Region disabled */ continue; } @@ -1799,22 +1890,25 @@ bool pmsav8_mpu_lookup(CPUARMState *env, uint32_t a= ddress, } } =20 - if (!hit) { - /* background fault */ - fi->type =3D ARMFault_Background; + if (pmsav8_fault(hit, env, mmu_idx)) { + fi->type =3D ARMFault_Permission; + fi->level =3D 0; return true; } =20 if (matchregion =3D=3D -1) { /* hit using the background region */ - get_phys_addr_pmsav7_default(env, mmu_idx, address, prot); + get_phys_addr_pmsav8_default(env, mmu_idx, address, prot); } else { - uint32_t ap =3D extract32(env->pmsav8.rbar[secure][matchregion], 1= , 2); - uint32_t xn =3D extract32(env->pmsav8.rbar[secure][matchregion], 0= , 1); + uint32_t ap =3D extract32(regime_rbar(env, + mmu_idx, secure)[matchregion], 1, 2); + uint32_t xn =3D extract32(regime_rbar(env, + mmu_idx, secure)[matchregion], 0, 1); bool pxn =3D false; =20 if (arm_feature(env, ARM_FEATURE_V8_1M)) { - pxn =3D extract32(env->pmsav8.rlar[secure][matchregion], 4, 1); + pxn =3D extract32(regime_rlar(env, + mmu_idx, secure)[matchregion], 4, 1); } =20 if (m_is_system_region(env, address)) { @@ -1822,14 +1916,42 @@ bool pmsav8_mpu_lookup(CPUARMState *env, uint32_t a= ddress, xn =3D 1; } =20 - *prot =3D simple_ap_to_rw_prot(env, mmu_idx, ap); + if (arm_feature(env, ARM_FEATURE_V8_R)) { + if (regime_el(env, mmu_idx) =3D=3D 2) { + *prot =3D simple_ap_to_rw_prot_is_user(ap, + mmu_idx !=3D ARMMMUIdx_E2); + } else { + *prot =3D simple_ap_to_rw_prot_is_user(ap, + mmu_idx !=3D ARMMMUIdx_Sta= ge1_E1); + } + + if (regime_sctlr(env, mmu_idx) & SCTLR_WXN + && (*prot & PAGE_WRITE)) { + xn =3D 0x1; + } + + if ((regime_el(env, mmu_idx) =3D=3D 1) && regime_sctlr(env, mm= u_idx) + & SCTLR_UWXN && (ap =3D=3D 0x1)) { + xn =3D 0x1; + } + + uint8_t attrindx =3D extract32(regime_rlar(env, + mmu_idx, secure)[matchregion], 1,= 3); + uint64_t mair =3D env->cp15.mair_el[regime_el(env, mmu_idx)]; + uint8_t sh =3D extract32(regime_rlar(env, + mmu_idx, secure)[matchregion], 3, 2); + assert(attrindx <=3D 4); + cacheattrs->is_s2_format =3D false; + cacheattrs->attrs =3D extract64(mair, attrindx * 8, 8); + cacheattrs->shareability =3D sh; + } else { + *prot =3D simple_ap_to_rw_prot(env, mmu_idx, ap); + } + if (*prot && !xn && !(pxn && !is_user)) { *prot |=3D PAGE_EXEC; } - /* - * We don't need to look the attribute up in the MAIR0/MAIR1 - * registers because that only tells us about cacheability. - */ + if (mregion) { *mregion =3D matchregion; } @@ -2342,9 +2464,16 @@ bool get_phys_addr(CPUARMState *env, target_ulong ad= dress, is_el0 =3D mmu_idx =3D=3D ARMMMUIdx_E10_0 || mmu_idx =3D=3D AR= MMMUIdx_SE10_0; =20 /* S1 is done. Now do S2 translation. */ - ret =3D get_phys_addr_lpae(env, ipa, access_type, s2_mmu_idx, = is_el0, - phys_ptr, attrs, &s2_prot, - page_size, fi, &cacheattrs2); + if (arm_feature(env, ARM_FEATURE_V8_R)) { + ret =3D get_phys_addr_pmsav8(env, ipa, access_type, s2_mmu= _idx, + phys_ptr, attrs, &s2_prot, page_siz= e, + fi, &cacheattrs2); + } else { + ret =3D get_phys_addr_lpae(env, ipa, access_type, s2_mmu_i= dx, + is_el0, phys_ptr, attrs, &s2_prot, + page_size, fi, &cacheattrs2); + } + fi->s2addr =3D ipa; /* Combine the S1 and S2 perms. */ *prot &=3D s2_prot; --=20 2.25.1 From nobody Sun May 12 19:43:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 1661006989188674.9831377707545; Sat, 20 Aug 2022 07:49:49 -0700 (PDT) Received: from localhost ([::1]:39422 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oPPnH-0005xy-2K for importer@patchew.org; Sat, 20 Aug 2022 10:49:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50464) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oPPKD-0005Fk-1N for qemu-devel@nongnu.org; Sat, 20 Aug 2022 10:19:45 -0400 Received: from mail-out-4.itc.rwth-aachen.de ([2a00:8a60:1:e501::5:49]:45776) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oPPK8-0003nF-G5 for qemu-devel@nongnu.org; Sat, 20 Aug 2022 10:19:44 -0400 Received: from rwthex-s2-b.rwth-ad.de ([134.130.26.155]) by mail-in-4.itc.rwth-aachen.de with ESMTP; 20 Aug 2022 16:19:29 +0200 Received: from localhost.localdomain (2a02:908:1088:5920:e70b:29db:1db5:28bf) by RWTHEX-S2-B.rwth-ad.de (2a00:8a60:1:e500::26:155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.12; Sat, 20 Aug 2022 16:19:27 +0200 X-IPAS-Result: =?us-ascii?q?A2D5AABk7ABj/5sagoZaHQEBAQEJARIBBQUBQIE+BQELA?= =?us-ascii?q?YR9hE6RD55/CwEBAQEBAQEBAQgBQgQBAYUDAgIChGImNwYOAQIEAQEBAQMCA?= =?us-ascii?q?wEBAQEBAQMBAQYBAQEBAQEGBIEchS9GhkMCAQMjBAsBRhAgBQImAgJXBg4Fg?= =?us-ascii?q?n2DI6kafzKBAYRwhRIJAYEHLAGID4IahSuCUIJRgTd1hGEwgwmCZQSVU4N7H?= =?us-ascii?q?DgDCQQHBSweQgMLHw4WBQgJFxIQEAIEERoLBgMWPgkCBA4DQAgNAxEEAw8YC?= =?us-ascii?q?RIIEAQGAzEMJQsDFAwBBgMGBQMBAxsDFAMFJAcDGQ8jDQ0EHwwDAwUlAwICG?= =?us-ascii?q?wcCAgMCBhUGAgI2GDkIBAgEKyMPBQIHLwUELwIeBAUGEQgCFgIGBAQEBBUCE?= =?us-ascii?q?AgCCCcXBxMzGQEFMicQCSEcDhoQBQYTAyBvBQc+DygzNTkrHRsKgRIqKRUDB?= =?us-ascii?q?AQDAgYTAwMiAhAuMQMVBikTEi0HK3UJAgMiaQUDAwQoLAMJPgcJIiY9BQVbO?= =?us-ascii?q?gUDAxAiPQYDCQMCKTybDYEOlT+OMaBkB4IWoUlMlnECkgGXB6MPhCcCBAIEB?= =?us-ascii?q?QIWgXeBf3GDNlEXAg+OLBaOMHM7AgYBCgEBAwmKXAEB?= IronPort-Data: A9a23:WeaJo6sVVZ0FBvOBY0OurzXifOfnVOtcMUV32f8akzHdYApBsoF/q tZmKWjTb/ffZGTze4oibIqzpE9TuZGBmNNjGQc6qS80Ri1BgMeUXt7xwmUcns+xBpCZEBg3v 512hv3odp1coqr0/0/1WlTZhSAgk/nOH9IQMcacUsxLbVYMpBwJ1FQywIbVvqYy2YLjW1PX4 YuoyyHiEAbNNwBcYzp8B52r9UsHUMTa4Fv0aXRnOJinFHeH/5UkJMp3yZOZdhMUcaEIdgKOf Nsv+Znilo/v10p3Von1wu6TnnoiGdY+NSDW4pZftjPLbhJq/kTe2Y5jXBYQhNs+Zzihx7hMJ NtxWZOYeBcqGqnSt+AkfCJ7DDxnG/Ab1JDJLi3q2SCT5xWun3rE+cpSLGwGeLZCv8wxG35S9 bkRJHYBY3hvhcrvm+79E7I0wJ59apC2YevzuVk5pd3dJeohS5HKWOPQ4tJY2To0rtpRAfabb sMSaTdpKhjNC/FKEg5KU8Jix7z11xETdRUJpm3OpIA94FPd5w9P/5zGEOjJINOzEJA9ckGw4 ziuE37CKggXMcHaxTeb/3aEgOjJkiXmHoUIG9WQ7vN2jUfVw2UCBBASUXO/oP+wkEn4XMhQQ 3H44QI0srQy+VzuVYO4VVuiv2KE+xcQHdZdewEn1DywJmPvy17xLgA5ovRpM7TKaOdeqeQW6 2K0 IronPort-HdrOrdr: A9a23:ILE7jqi/AOHKvv1HjudlnQz0GHBQXusji2hC6mlwRA09TySZ// rDoB19726StN9xYgBFpTnuAse9qB/nn6KdpLNhXotKPzOW3VdATrsC0WKK+VSJcBEWtNQtt5 uIG5IObuEYZmIUsS+V2mSF+4FK+qj+zEnRv4fjJiBWPHhXV50= X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="5.93,251,1654552800"; d="scan'208";a="153843359" From: To: CC: , =?UTF-8?q?Tobias=20R=C3=B6hmel?= Subject: [PATCH v3 9/9] target/arm: Add ARM Cortex-R52 cpu Date: Sat, 20 Aug 2022 16:19:14 +0200 Message-ID: <20220820141914.217399-10-tobias.roehmel@rwth-aachen.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220820141914.217399-1-tobias.roehmel@rwth-aachen.de> References: <20220820141914.217399-1-tobias.roehmel@rwth-aachen.de> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [2a02:908:1088:5920:e70b:29db:1db5:28bf] X-ClientProxiedBy: rwthex-w4-b.rwth-ad.de (2a00:8a60:1:e500::26:167) To RWTHEX-S2-B.rwth-ad.de (2a00:8a60:1:e500::26:155) 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=2a00:8a60:1:e501::5:49; envelope-from=tobias.roehmel@rwth-aachen.de; helo=mail-out-4.itc.rwth-aachen.de X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1661006991052100001 From: Tobias R=C3=B6hmel All constants are taken from the ARM Cortex-R52 Processor TRM Revision: r1p3 Signed-off-by: Tobias R=C3=B6hmel --- target/arm/cpu_tcg.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/target/arm/cpu_tcg.c b/target/arm/cpu_tcg.c index b751a19c8a..e0f445dc91 100644 --- a/target/arm/cpu_tcg.c +++ b/target/arm/cpu_tcg.c @@ -843,6 +843,47 @@ static void cortex_r5_initfn(Object *obj) define_arm_cp_regs(cpu, cortexr5_cp_reginfo); } =20 +static void cortex_r52_initfn(Object *obj) +{ + ARMCPU *cpu =3D ARM_CPU(obj); + + set_feature(&cpu->env, ARM_FEATURE_V8); + set_feature(&cpu->env, ARM_FEATURE_V8_R); + set_feature(&cpu->env, ARM_FEATURE_EL2); + set_feature(&cpu->env, ARM_FEATURE_PMSA); + set_feature(&cpu->env, ARM_FEATURE_NEON); + set_feature(&cpu->env, ARM_FEATURE_GENERIC_TIMER); + cpu->midr =3D 0x411fd133; /* r1p3 */ + cpu->revidr =3D 0x00000000; + cpu->reset_fpsid =3D 0x41034023; + cpu->isar.mvfr0 =3D 0x10110222; + cpu->isar.mvfr1 =3D 0x12111111; + cpu->isar.mvfr2 =3D 0x00000043; + cpu->ctr =3D 0x8144c004; + cpu->reset_sctlr =3D 0x30c50838; + cpu->isar.id_pfr0 =3D 0x00000131; + cpu->isar.id_pfr1 =3D 0x10111001; + cpu->isar.id_dfr0 =3D 0x03010006; + cpu->id_afr0 =3D 0x00000000; + cpu->isar.id_mmfr0 =3D 0x00211040; + cpu->isar.id_mmfr1 =3D 0x40000000; + cpu->isar.id_mmfr2 =3D 0x01200000; + cpu->isar.id_mmfr3 =3D 0xf0102211; + cpu->isar.id_mmfr4 =3D 0x00000010; + cpu->isar.id_isar0 =3D 0x02101110; + cpu->isar.id_isar1 =3D 0x13112111; + cpu->isar.id_isar2 =3D 0x21232142; + cpu->isar.id_isar3 =3D 0x01112131; + cpu->isar.id_isar4 =3D 0x00010142; + cpu->isar.id_isar5 =3D 0x00010001; + cpu->isar.dbgdidr =3D 0x77168000; + cpu->clidr =3D (1 << 27) | (1 << 24) | 0x3; + cpu->ccsidr[0] =3D 0x700fe01a; /* 32KB L1 dcache */ + cpu->ccsidr[1] =3D 0x201fe00a; /* 32KB L1 icache */ + + cpu->pmsav7_dregion =3D 16; +} + static void cortex_r5f_initfn(Object *obj) { ARMCPU *cpu =3D ARM_CPU(obj); @@ -1149,6 +1190,7 @@ static const ARMCPUInfo arm_tcg_cpus[] =3D { .class_init =3D arm_v7m_class_init }, { .name =3D "cortex-r5", .initfn =3D cortex_r5_initfn }, { .name =3D "cortex-r5f", .initfn =3D cortex_r5f_initfn }, + { .name =3D "cortex-r52", .initfn =3D cortex_r52_initfn }, { .name =3D "ti925t", .initfn =3D ti925t_initfn }, { .name =3D "sa1100", .initfn =3D sa1100_initfn }, { .name =3D "sa1110", .initfn =3D sa1110_initfn }, --=20 2.25.1