From nobody Tue May 7 16:59:04 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+68138+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+68138+1787277+3901457@groups.io; arc=fail (BodyHash is different from the expected one); dmarc=fail(p=none dis=none) header.from=hpe.com Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1606839690550944.9077840739167; Tue, 1 Dec 2020 08:21:30 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id CFoJYY1788612xiLu1hetYOi; Tue, 01 Dec 2020 08:21:27 -0800 X-Received: from mx0a-002e3701.pphosted.com (mx0a-002e3701.pphosted.com [148.163.147.86]) by mx.groups.io with SMTP id smtpd.web10.12674.1606839506881244644 for ; Tue, 01 Dec 2020 08:18:27 -0800 X-Received: from pps.filterd (m0134422.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 0B1G78WU007165; Tue, 1 Dec 2020 16:18:16 GMT X-Received: from g2t2352.austin.hpe.com (g2t2352.austin.hpe.com [15.233.44.25]) by mx0b-002e3701.pphosted.com with ESMTP id 354096ku54-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 01 Dec 2020 16:18:16 +0000 X-Received: from G9W8454.americas.hpqcorp.net (g9w8454.houston.hp.com [16.216.161.4]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by g2t2352.austin.hpe.com (Postfix) with ESMTPS id 9FDD563; Tue, 1 Dec 2020 16:18:15 +0000 (UTC) X-Received: from G9W8454.americas.hpqcorp.net (2002:10d8:a104::10d8:a104) by G9W8454.americas.hpqcorp.net (2002:10d8:a104::10d8:a104) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 1 Dec 2020 16:18:15 +0000 X-Received: from NAM04-BN3-obe.outbound.protection.outlook.com (15.241.52.10) by G9W8454.americas.hpqcorp.net (16.216.161.4) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Tue, 1 Dec 2020 16:18:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dP2OPSTv/Nx+dlyZRF4biv4mBLcfh4wS0uBdSlD3tNQEf2FyH+vGnwBD9IJIkPXl97CGLnUdjvRBniRG3+2zdpwIioEhIiXHMwJFDJEcpx5/7iOOSQ+Xj+1pDEK7bXkhPxsJbb2vt6bBbrI47mc8GbvqN3ir6EEYDrMh5VQPrwx9PnPOQ9q/AMevMQSmAm1cIFqidzGvzUj2iD5KApecvs4xJQtGrHZ1A6KDcQQqZYov7s6HnpqDjdlvbtekQWHdySbaWenX5e6z8s7EebDZLFU9dOpoU6hlO3BTIAdHmSduLUUDCATa4SG8RIJ+qQp0Tm5N14Li3px2f4icrW/65w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8NoLEuaAC1SDE5Xr4OmpabKgx4dMn2Qcs49Z34t/tHo=; b=JyxAu7np7ENapQsEqwAgR/sXbH0eeXXxrfi9wqqd8hiAlPKTe7DY4ZOj9TFyBm1/d+onyVeHV5Gb54jBOQL6/CHKGtoCMFVtVO8eajYSUHn65aEsygyeJ0m+vh+AF5e7PwBOZxLVIjK3degsx3jxogJCVPRGF21H+Er8JHV6lDCyE5fznhCOSTI7XdGlKCU4H2A6NaX8YZwbhfovbkfdwjhPAHNi9gp46GsnMT42FGmK1+lZrbZiSRIEwOEsGB1etbW3HJ2/WtvlZsSynPei1+KZJONmF9xAxzD67sBgcuY912vQFNUS9DG27SxD/rIYLq9wR447NRWsA2HH+xdv6w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hpe.com; dmarc=pass action=none header.from=hpe.com; dkim=pass header.d=hpe.com; arc=none X-Received: from DF4PR8401MB0444.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:760d::23) by DF4PR8401MB1004.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:760f::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3632.17; Tue, 1 Dec 2020 16:18:14 +0000 X-Received: from DF4PR8401MB0444.NAMPRD84.PROD.OUTLOOK.COM ([fe80::691c:7962:6e56:c91f]) by DF4PR8401MB0444.NAMPRD84.PROD.OUTLOOK.COM ([fe80::691c:7962:6e56:c91f%8]) with mapi id 15.20.3611.025; Tue, 1 Dec 2020 16:18:13 +0000 From: "Daniel Schaefer" To: CC: Leif Lindholm , Heinrich Schuchardt , Abner Chang , Gilbert Chen , Eric Jin , G Edhaya Chandran , Barton Gao , Samer El-Haj-Mahmoud Subject: [edk2-devel] [edk2-test PATCH v1 1/2] SctPkg: Add RISCV64 support Date: Wed, 2 Dec 2020 00:17:51 +0800 Message-ID: <20201201161752.23734-2-daniel.schaefer@hpe.com> In-Reply-To: <20201201161752.23734-1-daniel.schaefer@hpe.com> References: <20201201161752.23734-1-daniel.schaefer@hpe.com> X-Originating-IP: [123.193.51.23] X-ClientProxiedBy: HK2PR02CA0161.apcprd02.prod.outlook.com (2603:1096:201:1f::21) To DF4PR8401MB0444.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:760d::23) X-MS-Exchange-MessageSentRepresentingType: 1 X-Received: from x360-nix.hitronhub.home (123.193.51.23) by HK2PR02CA0161.apcprd02.prod.outlook.com (2603:1096:201:1f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.20 via Frontend Transport; Tue, 1 Dec 2020 16:18:10 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 160bacb3-8326-43c3-33b0-08d89614b3fb X-MS-TrafficTypeDiagnostic: DF4PR8401MB1004: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6108; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Message-Info: 72JJ0ARRgKa2VnYEcgm9/br0KOwGRzbZ3if4RevXt4UwvXhIVtyGpIGL8qQntQu+0zBfRA8ZK5gQdcPuUVSXLK1s+pMrOlk9Cic/TatXreU7DUSXEx132Rmp/lXPU5P+nxUD3uyXBGP9M7mQFWHgnLLry9GbJ5inH4fCVnkl+ZldpXcY//CoF4R9zdYm+LPoTuuDuuSGB3/NlC9iSjsYWn4mWSITxQNOJP2zSDMTQtBvP+UizaSWjgiqeWtGjYIhD+eAJKGlCLUQ8Cx4S+7G6zPYPiHOX6jiquXRvoPAfyEfUfXvs9bFcYovaP+aFHdgMg42u8MNsFQci1pKAgOf43qM159LC2rsPBPmqFjKHC9UJbBcH7ipsVmXcxpp1yjoC04t8djTrOAEBiFvGu1TQg== X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?jZ2DZr3PWT6vjMLMO/RWzHW/h4h+XJ1gI4olq9XJvBN7EeOaQ7Mok2pBW10U?= =?us-ascii?Q?qoObD+LbQ6oS+UIyNp8F15H3g7spt/IcRLhYPttu6IDX6YnXgc+K4sPF8/cy?= =?us-ascii?Q?s+zvGsrOBmO1si96R/+I8oedkD2a2qch0+fDUAl4uYl9gHq5WvfB5rQijbGb?= =?us-ascii?Q?SU4VmvV/8/H4pqGgvTKeF4fcxf8sQHzauNAcLypYCuDO/MnYUpV/KX5t88uL?= =?us-ascii?Q?5xAOvpbTHX4Clxvadg7IFI0AKixuJBitqg3ZoRu6BBiqcKy/PGYQXxz/Sig6?= =?us-ascii?Q?mC5a6V0NKmccViuTxcLTTjEFq2WY2YK47YXXMJ+z2nwgWLLDuJGrnEcJc97n?= =?us-ascii?Q?eQ9i39FuS7xO6USI/AtUwb33nMSjg5pbf/dBKPflkHE7YP09g+M4RevVXIgu?= =?us-ascii?Q?fw9btu/ZI82LgFswAXG43ETbEqmZnbMw43FPsJ1eqC0oDf45LJ2IIukAtw2T?= =?us-ascii?Q?Z6TC/DEkejtbPNEWZGcjmjKBiPAJf40uwjnELeqQRrfQ34HfEmKFyvYElF6w?= =?us-ascii?Q?SD5rzqUXlBfE5ofv3/+6R3O1+pn/+6VMSt57x6ju6yNO/1mhSt0gtDQYXKeQ?= =?us-ascii?Q?EGCH/zR5/HU3kxFTV8ZNcTf5xMcthoDS53UU4Er8oC5jREQd5PEomATCMNda?= =?us-ascii?Q?cbXBUXk/aJNye7T3kzj8itARe139Caa+KC9rMD4Yaz05T1tkWsv83GPf0/QN?= =?us-ascii?Q?j92sZUtYZ0g3rPaAA5aYOv/ULFF2ISjpTjBh2AxpYY04lpLxqMsjjk1SxoAy?= =?us-ascii?Q?c4rz0LH2XcIidwEI4ug+NAk7tDQf8mWnHryRGvxetzlbJijVrVa5AzMo8PTu?= =?us-ascii?Q?kecZvMRF96w3DEI2KFxIpfEgIUmZ/Dlv76RxjzxQuuTy82S0jrKhi/uRv7f1?= =?us-ascii?Q?XWic2zexlimAOF1Ek6/VWzqslkOPWJfJXmV9D7boxfrcZ+0oQiwD+LvBduKJ?= =?us-ascii?Q?Tks+ZNHxdVNWCKEVMhpMOj5Tv+MBxKqGNER5KlCYnufAAKu1jIu+50Q3XzzR?= =?us-ascii?Q?hwP6?= X-MS-Exchange-CrossTenant-Network-Message-Id: 160bacb3-8326-43c3-33b0-08d89614b3fb X-MS-Exchange-CrossTenant-AuthSource: DF4PR8401MB0444.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Dec 2020 16:18:13.8051 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: l6Pf49BiZ7LnNTQDJbuzZbCyBIszoqBACJTIauOJHbd3GT6OUKawLVWjbCAapeRysvuvZ9mxQ1m/aYnHM0jr5w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DF4PR8401MB1004 X-OriginatorOrg: hpe.com X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-HPE-SCL: -1 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,daniel.schaefer@hpe.com X-Gm-Message-State: 26Gbu2Oh97FriGV4E0kONwVqx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1606839687; bh=0wAtrQnYh9ZJFR4hGkMDnoEsamW27L+2iujP/bjE81o=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=A79syhIi5di/m/OMCtLS5MNzxfCIZvNNL6DIns5plpRpaAXzNu5O7fYDiZf96ikufSj q0B1nZlSuCbqRfzjEx6pGSk9jv/k98LtwLirnMbCjNRLAj6wXKzRET/N5MJz1UEnSkzSq 9FaXSpRGLcHS89kmNvJm0PpKxzbgMLZqJFk= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3D3042 TODO: Need to check whether we can avoid copying Aarch64 sources. Cc: Leif Lindholm Cc: Heinrich Schuchardt Cc: Abner Chang Cc: Gilbert Chen Cc: Eric Jin Cc: G Edhaya Chandran Cc: Barton Gao Cc: Samer El-Haj-Mahmoud Signed-off-by: Daniel Schaefer --- uefi-sct/SctPkg/Application/InstallSct/InstallSctDef.h = | 3 + uefi-sct/SctPkg/Library/SctLib/SctLib.inf = | 6 ++ uefi-sct/SctPkg/SCRT/SCRTApp/SCRTApp.inf = | 6 ++ uefi-sct/SctPkg/SCRT/SCRTDriver/SCRTDriver.inf = | 7 +++ uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/Debug= SupportBBTest.inf | 6 ++ uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/Usb2Hc/BlackBoxTest/Usb2HcTest.= inf | 4 ++ uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/UsbHc/BlackBoxTest/UsbHcTest.in= f | 4 ++ uefi-sct/SctPkg/TestInfrastructure/SCT/Framework/ENTS/EasLib/EntsLib.inf = | 5 ++ uefi-sct/SctPkg/Tools/Source/GenBin/GNUmakefile = | 3 + uefi-sct/SctPkg/UEFI/IHV_SCT.dsc = | 14 ++++- uefi-sct/SctPkg/UEFI/Protocol/DebugSupport.h = | 62 +++++++++++++++++++- uefi-sct/SctPkg/UEFI/UEFI_SCT.dsc = | 14 ++++- uefi-sct/SctPkg/build.sh = | 10 +++- 13 files changed, 140 insertions(+), 4 deletions(-) diff --git a/uefi-sct/SctPkg/Application/InstallSct/InstallSctDef.h b/uefi-= sct/SctPkg/Application/InstallSct/InstallSctDef.h index a7815580..3a7c8f31 100644 --- a/uefi-sct/SctPkg/Application/InstallSct/InstallSctDef.h +++ b/uefi-sct/SctPkg/Application/InstallSct/InstallSctDef.h @@ -32,6 +32,9 @@ #elif defined(EFIAARCH64) #define INSTALL_SCT_PLATFORM_SHORT_NAME L"aarch64" #define INSTALL_SCT_PLATFORM_NAME L"AARCH64" +#elif defined(EFIRISCV64) + #define INSTALL_SCT_PLATFORM_SHORT_NAME L"riscv64" + #define INSTALL_SCT_PLATFORM_NAME L"RISCV64" #else #error "Architecture not supported" #endif diff --git a/uefi-sct/SctPkg/Library/SctLib/SctLib.inf b/uefi-sct/SctPkg/Li= brary/SctLib/SctLib.inf index 23cb77fb..6f59d974 100644 --- a/uefi-sct/SctPkg/Library/SctLib/SctLib.inf +++ b/uefi-sct/SctPkg/Library/SctLib/SctLib.inf @@ -62,6 +62,12 @@ Aarch64/initplat.c Math.c =20 +# TODO: Copied source from AARCH64, need to check if they need to be adjus= ted +[sources.RISCV64] + Riscv64/SctLibPlat.h + Riscv64/initplat.c + Math.c + [sources.ia32] ia32/SctLibPlat.h ia32/initplat.c diff --git a/uefi-sct/SctPkg/SCRT/SCRTApp/SCRTApp.inf b/uefi-sct/SctPkg/SCR= T/SCRTApp/SCRTApp.inf index 7aca6e30..66de4cac 100644 --- a/uefi-sct/SctPkg/SCRT/SCRTApp/SCRTApp.inf +++ b/uefi-sct/SctPkg/SCRT/SCRTApp/SCRTApp.inf @@ -39,6 +39,12 @@ Aarch64/GoVirtual.asm | RVCT Aarch64/GoVirtual.S | GCC =20 +# TODO: Copied source from AARCH64, need to check if they need to be adjus= ted +# ASM is adjusted but not sure if it is correct +[sources.RISCV64] + Riscv64/VirtualMemory.c + Riscv64/GoVirtual.S | GCC + [sources.ia32] ia32/VirtualMemory.c ia32/GoVirtual.asm | MSFT diff --git a/uefi-sct/SctPkg/SCRT/SCRTDriver/SCRTDriver.inf b/uefi-sct/SctP= kg/SCRT/SCRTDriver/SCRTDriver.inf index ad0eb0f8..bc0ade5b 100644 --- a/uefi-sct/SctPkg/SCRT/SCRTDriver/SCRTDriver.inf +++ b/uefi-sct/SctPkg/SCRT/SCRTDriver/SCRTDriver.inf @@ -69,6 +69,13 @@ Aarch64/Dump.c Aarch64/Debug.c =20 +# TODO: Copied source from AARCH64, need to check if they need to be adjus= ted +[sources.RISCV64] + Riscv64/Io.c + Riscv64/Io.h + Riscv64/Dump.c + Riscv64/Debug.c + [sources.common] Guid.h Guid.c diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackB= oxTest/DebugSupportBBTest.inf b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/= DebugSupport/BlackBoxTest/DebugSupportBBTest.inf index 799f86fd..7010c7f1 100644 --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/= DebugSupportBBTest.inf +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/= DebugSupportBBTest.inf @@ -67,6 +67,12 @@ Aarch64/DebugSupportBBTestExceptionCallbackFunction.c Aarch64/DebugSupportBBTestCacheFunction.c =20 +# TODO: Copied source from AARCH64, need to check if they need to be adjus= ted +[sources.RISCV64] + Riscv64/PlatformIsa.c + Riscv64/DebugSupportBBTestExceptionCallbackFunction.c + Riscv64/DebugSupportBBTestCacheFunction.c + [Packages] SctPkg/SctPkg.dec SctPkg/UEFI/UEFI.dec diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/Usb2Hc/BlackBoxTest= /Usb2HcTest.inf b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/Usb2Hc/BlackBo= xTest/Usb2HcTest.inf index e8118739..e42acd29 100644 --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/Usb2Hc/BlackBoxTest/Usb2Hc= Test.inf +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/Usb2Hc/BlackBoxTest/Usb2Hc= Test.inf @@ -55,6 +55,10 @@ #[sources.Aarch64] # IPF/TimerInterrupt.c =20 +# TODO: Seems like almost all archs can use the IPF code, need to check +[sources.Riscv64] + IPF/TimerInterrupt.c + [Packages] MdePkg/MdePkg.dec SctPkg/SctPkg.dec diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/UsbHc/BlackBoxTest/= UsbHcTest.inf b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/UsbHc/BlackBoxTe= st/UsbHcTest.inf index efc438c1..0d47536f 100644 --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/UsbHc/BlackBoxTest/UsbHcTe= st.inf +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/UsbHc/BlackBoxTest/UsbHcTe= st.inf @@ -55,6 +55,10 @@ [sources.Aarch64] Aarch64/TimerInterrupt.c =20 +# TODO: Copied source from AARCH64, need to check if they need to be adjus= ted +[sources.RISCV64] + Riscv64/TimerInterrupt.c + [Packages] MdePkg/MdePkg.dec SctPkg/SctPkg.dec diff --git a/uefi-sct/SctPkg/TestInfrastructure/SCT/Framework/ENTS/EasLib/E= ntsLib.inf b/uefi-sct/SctPkg/TestInfrastructure/SCT/Framework/ENTS/EasLib/E= ntsLib.inf index 23f12d1a..1b2a92f2 100644 --- a/uefi-sct/SctPkg/TestInfrastructure/SCT/Framework/ENTS/EasLib/EntsLib.= inf +++ b/uefi-sct/SctPkg/TestInfrastructure/SCT/Framework/ENTS/EasLib/EntsLib.= inf @@ -66,6 +66,11 @@ Aarch64/EntsLibPlat.h Aarch64/InitPlat.c =20 +# TODO: Copied source from AARCH64, need to check if they need to be adjus= ted +[sources.RISCV64] + Riscv64/EntsLibPlat.h + Riscv64/InitPlat.c + [Packages] MdePkg/MdePkg.dec SctPkg/SctPkg.dec diff --git a/uefi-sct/SctPkg/Tools/Source/GenBin/GNUmakefile b/uefi-sct/Sct= Pkg/Tools/Source/GenBin/GNUmakefile index c235f313..e49284e7 100644 --- a/uefi-sct/SctPkg/Tools/Source/GenBin/GNUmakefile +++ b/uefi-sct/SctPkg/Tools/Source/GenBin/GNUmakefile @@ -31,6 +31,9 @@ ifndef ARCH ifneq (,$(findstring arm,$(uname_m))) ARCH=3DARM endif + ifneq (,$(findstring riscv64,$(uname_m))) + ARCH=3DRISCV64 + endif ifndef ARCH $(info Could not detected ARCH from uname results) $(error ARCH is not defined!) diff --git a/uefi-sct/SctPkg/UEFI/IHV_SCT.dsc b/uefi-sct/SctPkg/UEFI/IHV_SC= T.dsc index f9e86264..2f373c5f 100644 --- a/uefi-sct/SctPkg/UEFI/IHV_SCT.dsc +++ b/uefi-sct/SctPkg/UEFI/IHV_SCT.dsc @@ -42,7 +42,7 @@ PLATFORM_VERSION =3D 0.1 DSC_SPECIFICATION =3D 0x00010005 OUTPUT_DIRECTORY =3D Build/IhvSct - SUPPORTED_ARCHITECTURES =3D IA32|X64|ARM|AARCH64 + SUPPORTED_ARCHITECTURES =3D IA32|X64|ARM|AARCH64|RISCV64 BUILD_TARGETS =3D DEBUG|RELEASE SKUID_IDENTIFIER =3D DEFAULT =20 @@ -109,6 +109,12 @@ *_*_AARCH64_PP_FLAGS =3D -D EFIAARCH64 $(GCC_VER_MACRO) RVCT:*_*_AARCH64_DLINK_FLAGS =3D --muldefweak =20 + *_*_RISCV64_CC_FLAGS =3D -D EFIRISCV64 $(GCC_VER_MACRO) + GCC:*_*_RISCV64_CC_FLAGS =3D -D EFIRISCV64 $(GCC_VER_MACRO) -ffreestand= ing -nostdinc -nostdlib -Wno-error=3Dunused-function -Wno-error=3Dunused-bu= t-set-variable -Wno-error + *_*_RISCV64_VFRPP_FLAGS =3D -D EFIRISCV64 $(GCC_VER_MACRO) + *_*_RISCV64_APP_FLAGS =3D -D EFIRISCV64 $(GCC_VER_MACRO) + *_*_RISCV64_PP_FLAGS =3D -D EFIRISCV64 $(GCC_VER_MACRO) + DEBUG_*_*_CC_FLAGS =3D -DEFI_DEBUG RELEASE_*_*_CC_FLAGS =3D -DMDEPKG_NDEBUG =20 @@ -124,6 +130,9 @@ [Libraries.AARCH64] ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf =20 +[Libraries.RISCV64] + ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf + [Libraries.IA32,Libraries.X64] =20 [LibraryClasses.common] @@ -146,6 +155,9 @@ [LibraryClasses.AARCH64] NULL|ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf =20 +[LibraryClasses.RISCV64] + NULL|ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf + [LibraryClasses.IA32] =20 ##########################################################################= ##### diff --git a/uefi-sct/SctPkg/UEFI/Protocol/DebugSupport.h b/uefi-sct/SctPkg= /UEFI/Protocol/DebugSupport.h index 7fba87ae..fb11bda4 100644 --- a/uefi-sct/SctPkg/UEFI/Protocol/DebugSupport.h +++ b/uefi-sct/SctPkg/UEFI/Protocol/DebugSupport.h @@ -607,6 +607,60 @@ typedef struct { UINT64 FAR; // Fault Address Register } EFI_SYSTEM_CONTEXT_AARCH64; =20 +/// +/// RISC-V processor exception types. +/// +#define EXCEPT_RISCV_INST_MISALIGNED 0 +#define EXCEPT_RISCV_INST_ACCESS_FAULT 1 +#define EXCEPT_RISCV_ILLEGAL_INST 2 +#define EXCEPT_RISCV_BREAKPOINT 3 +#define EXCEPT_RISCV_LOAD_ADDRESS_MISALIGNED 4 +#define EXCEPT_RISCV_LOAD_ACCESS_FAULT 5 +#define EXCEPT_RISCV_STORE_AMO_ADDRESS_MISALIGNED 6 +#define EXCEPT_RISCV_STORE_AMO_ACCESS_FAULT 7 +#define EXCEPT_RISCV_ENV_CALL_FROM_UMODE 8 +#define EXCEPT_RISCV_ENV_CALL_FROM_SMODE 9 +#define EXCEPT_RISCV_ENV_CALL_FROM_HMODE 10 +#define EXCEPT_RISCV_ENV_CALL_FROM_MMODE 11 + +#define EXCEPT_RISCV_SOFTWARE_INT 0x0 +#define EXCEPT_RISCV_TIMER_INT 0x1 + +typedef struct { + UINT64 X0; + UINT64 X1; + UINT64 X2; + UINT64 X3; + UINT64 X4; + UINT64 X5; + UINT64 X6; + UINT64 X7; + UINT64 X8; + UINT64 X9; + UINT64 X10; + UINT64 X11; + UINT64 X12; + UINT64 X13; + UINT64 X14; + UINT64 X15; + UINT64 X16; + UINT64 X17; + UINT64 X18; + UINT64 X19; + UINT64 X20; + UINT64 X21; + UINT64 X22; + UINT64 X23; + UINT64 X24; + UINT64 X25; + UINT64 X26; + UINT64 X27; + UINT64 X28; + UINT64 X29; + UINT64 X30; + UINT64 X31; +} EFI_SYSTEM_CONTEXT_RISCV64; + // // Universal EFI_SYSTEM_CONTEXT definition // @@ -618,6 +672,7 @@ union { EFI_SYSTEM_CONTEXT_IPF *SystemContextIpf; EFI_SYSTEM_CONTEXT_ARM *SystemContextArm; EFI_SYSTEM_CONTEXT_AARCH64 *SystemContextAArch64; + EFI_SYSTEM_CONTEXT_RISCV64 *SystemContextRiscV64; } EFI_SYSTEM_CONTEXT; =20 // @@ -645,6 +700,10 @@ VOID #define IMAGE_FILE_MACHINE_EBC 0x0EBC #define IMAGE_FILE_MACHINE_ARMTHUMB_MIXED 0x01c2 #define IMAGE_FILE_MACHINE_ARM64 0xAA64 +#define IMAGE_FILE_MACHINE_RISCV32 0x5032 +#define IMAGE_FILE_MACHINE_RISCV64 0x5064 +#define IMAGE_FILE_MACHINE_RISCV128 0x5128 + =20 typedef enum { @@ -653,7 +712,8 @@ enum { IsaIpf =3D IMAGE_FILE_MACHINE_IA64, IsaEbc =3D IMAGE_FILE_MACHINE_EBC, IsaArm =3D IMAGE_FILE_MACHINE_ARMTHUMB_MIXED, ///< 0x01c2 - IsaAArch64 =3D IMAGE_FILE_MACHINE_ARM64 ///< 0xAA64 + IsaAArch64 =3D IMAGE_FILE_MACHINE_ARM64, ///< 0xAA64 + IsaRiscv64 =3D IMAGE_FILE_MACHINE_RISCV64 } EFI_INSTRUCTION_SET_ARCHITECTURE; =20 typedef struct _EFI_DEBUG_SUPPORT_PROTOCOL EFI_DEBUG_SUPPORT_PROTOCOL;; diff --git a/uefi-sct/SctPkg/UEFI/UEFI_SCT.dsc b/uefi-sct/SctPkg/UEFI/UEFI_= SCT.dsc index 2e97687b..666f06dd 100644 --- a/uefi-sct/SctPkg/UEFI/UEFI_SCT.dsc +++ b/uefi-sct/SctPkg/UEFI/UEFI_SCT.dsc @@ -42,7 +42,7 @@ PLATFORM_VERSION =3D 0.1 DSC_SPECIFICATION =3D 0x00010005 OUTPUT_DIRECTORY =3D Build/UefiSct - SUPPORTED_ARCHITECTURES =3D IA32|X64|ARM|AARCH64 + SUPPORTED_ARCHITECTURES =3D IA32|X64|ARM|AARCH64|RISCV64 BUILD_TARGETS =3D DEBUG|RELEASE SKUID_IDENTIFIER =3D DEFAULT =20 @@ -112,6 +112,12 @@ *_*_AARCH64_PP_FLAGS =3D -D EFIAARCH64 $(GCC_VER_MACRO) RVCT:*_*_AARCH64_DLINK_FLAGS =3D --muldefweak =20 + *_*_RISCV64_CC_FLAGS =3D -D EFIRISCV64 $(GCC_VER_MACRO) + GCC:*_*_RISCV64_CC_FLAGS =3D -D EFIRISCV64 $(GCC_VER_MACRO) -ffreest= anding -nostdinc -nostdlib -Wno-error=3Dunused-function -Wno-error=3Dunused= -but-set-variable -Wno-error + *_*_RISCV64_VFRPP_FLAGS =3D -D EFIRISCV64 $(GCC_VER_MACRO) + *_*_RISCV64_APP_FLAGS =3D -D EFIRISCV64 $(GCC_VER_MACRO) + *_*_RISCV64_PP_FLAGS =3D -D EFIRISCV64 $(GCC_VER_MACRO) + DEBUG_*_*_CC_FLAGS =3D -DEFI_DEBUG RELEASE_*_*_CC_FLAGS =3D -DMDEPKG_NDEBUG =20 @@ -129,6 +135,9 @@ [Libraries.AARCH64] ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf =20 +[Libraries.RISCV64] + ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf + [LibraryClasses.common] UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiA= pplicationEntryPoint.inf UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntry= Point.inf @@ -157,6 +166,9 @@ [LibraryClasses.AARCH64] NULL|ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf =20 +[LibraryClasses.RISCV64] + NULL|ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf + ##########################################################################= ##### # # These are the components that will be built by the master makefile diff --git a/uefi-sct/SctPkg/build.sh b/uefi-sct/SctPkg/build.sh index cad17ccd..3d61daed 100755 --- a/uefi-sct/SctPkg/build.sh +++ b/uefi-sct/SctPkg/build.sh @@ -22,6 +22,8 @@ function get_build_arch BUILD_ARCH=3DARM;; aarch64*) BUILD_ARCH=3DAARCH64;; + riscv64*) + BUILD_ARCH=3DRISCV64;; *) BUILD_ARCH=3Dother;; esac @@ -47,6 +49,12 @@ function set_cross_compile else TEMP_CROSS_COMPILE=3Darm-linux-gnueabihf- fi + elif [ "$SCT_TARGET_ARCH" =3D=3D "RISCV64" ]; then + if [ X"$CROSS_COMPILE_64" !=3D X"" ]; then + TEMP_CROSS_COMPILE=3D"$CROSS_COMPILE_64" + else + TEMP_CROSS_COMPILE=3Driscv64-unknown-elf- + fi else echo "Unsupported target architecture '$SCT_TARGET_ARCH'!" >&2 fi @@ -110,7 +118,7 @@ PrintUsage() { #Print Help # echo "Usage:" - echo " $0 \ + echo " $0 \ \ [build type (RELEASE OR DEBUG, DEFAULT: DEBUG)]" } --=20 2.28.0 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#68138): https://edk2.groups.io/g/devel/message/68138 Mute This Topic: https://groups.io/mt/78637294/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Tue May 7 16:59:04 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+68140+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+68140+1787277+3901457@groups.io; arc=fail (BodyHash is different from the expected one); dmarc=fail(p=none dis=none) header.from=hpe.com Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1606839537296775.6474001912401; Tue, 1 Dec 2020 08:18:57 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id WBPIYY1788612xnh6ZQkpSjW; Tue, 01 Dec 2020 08:18:54 -0800 X-Received: from mx0b-002e3701.pphosted.com (mx0b-002e3701.pphosted.com [148.163.143.35]) by mx.groups.io with SMTP id smtpd.web11.12521.1606839532950815872 for ; Tue, 01 Dec 2020 08:18:53 -0800 X-Received: from pps.filterd (m0134424.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 0B1G7d5B004657; Tue, 1 Dec 2020 16:18:22 GMT X-Received: from g2t2353.austin.hpe.com (g2t2353.austin.hpe.com [15.233.44.26]) by mx0b-002e3701.pphosted.com with ESMTP id 355qmf11jd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 01 Dec 2020 16:18:22 +0000 X-Received: from G4W9120.americas.hpqcorp.net (g4w9120.houston.hp.com [16.210.21.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by g2t2353.austin.hpe.com (Postfix) with ESMTPS id 0E4119B; Tue, 1 Dec 2020 16:18:20 +0000 (UTC) X-Received: from G9W8455.americas.hpqcorp.net (2002:10d8:a15e::10d8:a15e) by G4W9120.americas.hpqcorp.net (2002:10d2:150f::10d2:150f) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 1 Dec 2020 16:18:19 +0000 X-Received: from NAM04-BN3-obe.outbound.protection.outlook.com (15.241.52.10) by G9W8455.americas.hpqcorp.net (16.216.161.94) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Tue, 1 Dec 2020 16:18:19 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=imUfcTZDoE8pU6O0lDvTEGX1PPPtq2sOMM0c+wAxphl2brAtUxCtVhvTamuO88khRcXaV60hqkoXjq6BbBgwudgKZ6SCgYGR2w7ns00ksY+O6D8BUTMHyK4R7/BzJZ7Efzc6kgB/EBrJ5u2yIkjGuus5REoP2DLTVzxVQ5bMseOR9sUXeoMOUuN6FgAwYEsqZwHqQ5bXbuzsevclem2UWKTx/iFA7C/rVk+hsH2anY2ISsZBBUoPW4JIkhZSFzaF7FHuf36R0i+vY79OEgf5OLbD0jm0Zid5IjzaZEvP4qLYlUZc4SvQ2G+cYzY36FmUGj9R6rBvbP0CtO7eag8dfw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cFN9Y748Ygk6lXn8XlirEVZesVkRcky373+2fLVpqRo=; b=M1rVvQJlITweu/ps8cUsUYpoxvyUFGvYhmYeL07rKwzb+bMrnZfEwF6DcGTNSDYOuhuobBBC2l4CJ/fodF5JmWJMDfijNmhekL/RJqc4V/Wu63i6QuY4zDEupGe5uq1ScV3HEiW6frXmoeGOvUtSNnAXKco/eod8W6AWQ/EXI2L7QOIge7Kh7RsdmIuYuUUeOyIWBbStm1J6dLoj1zDn+0Fdf4R228NKghq0jaYvE0tSkmRlFyd/sKpIw6SiYi1BkhbSNn5VahRdlLYHNRkEbQsGu8d/5OXrbWJAhN1s9fomT/gm9YihE05KHpSlI9mLsPpKL4uMDubgxpQTE3FZsA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hpe.com; dmarc=pass action=none header.from=hpe.com; dkim=pass header.d=hpe.com; arc=none X-Received: from DF4PR8401MB0444.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:760d::23) by DF4PR8401MB1004.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:760f::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3632.17; Tue, 1 Dec 2020 16:18:17 +0000 X-Received: from DF4PR8401MB0444.NAMPRD84.PROD.OUTLOOK.COM ([fe80::691c:7962:6e56:c91f]) by DF4PR8401MB0444.NAMPRD84.PROD.OUTLOOK.COM ([fe80::691c:7962:6e56:c91f%8]) with mapi id 15.20.3611.025; Tue, 1 Dec 2020 16:18:17 +0000 From: "Daniel Schaefer" To: CC: Leif Lindholm , Heinrich Schuchardt , Abner Chang , Gilbert Chen , Eric Jin , G Edhaya Chandran , Barton Gao , Samer El-Haj-Mahmoud Subject: [edk2-devel] [edk2-test PATCH v1 2/2] SctPkg: Enable RISCV64 support using AARCH64 sources Date: Wed, 2 Dec 2020 00:17:52 +0800 Message-ID: <20201201161752.23734-3-daniel.schaefer@hpe.com> In-Reply-To: <20201201161752.23734-1-daniel.schaefer@hpe.com> References: <20201201161752.23734-1-daniel.schaefer@hpe.com> X-Originating-IP: [123.193.51.23] X-ClientProxiedBy: HK2PR02CA0161.apcprd02.prod.outlook.com (2603:1096:201:1f::21) To DF4PR8401MB0444.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:760d::23) X-MS-Exchange-MessageSentRepresentingType: 1 X-Received: from x360-nix.hitronhub.home (123.193.51.23) by HK2PR02CA0161.apcprd02.prod.outlook.com (2603:1096:201:1f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.20 via Frontend Transport; Tue, 1 Dec 2020 16:18:14 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 6e852cae-b37f-42d0-d7ad-08d89614b62d X-MS-TrafficTypeDiagnostic: DF4PR8401MB1004: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Message-Info: hyX0RC9bVxYxcSGTi2uF2OKPmB8Po1ZL4UyB1rKFjdrJ0QXlsUQiwL2suxKdjQZYNge74KtGpLP4Bq/mLGJMtRQUjU5OZnTxVVJTLLBsBWy3vfZjWMUENSeuG5YGjdhKx8odFgu4mCnJc0ZYRiAMmuQzu465r0M/YXUpDH1aEvCWG4LrTylsu1xMgfj0LVx+byA9Ls7e2PotwHV/MahyLknHHitdcIpxjUuLWWQ3zpmI/fucwuqIMaG5ql2f+MBuCG1gnVX2vGlifLswta3pkrLbL3Frm2TTrqzS9qDQrHGFnHTxzIxWhuaEcTrJOe650XUG3WADWuZQBcq2ob+m4G6q/0zlDL2D6IaPGw0fxDYuud9XeDhvuFnvdjEv9LABMIJyYCZBCcMCPXSCByXRPA== X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?m6bIzq2QoFF79k4x6wIT/XuU8VOqlqLrBL8w1ZJFxbMmMtNdgSflLh3hhaIH?= =?us-ascii?Q?0yc9hrd9CVN2X0OY7z8l74OcuzCwrTjLAQzC5PorNu3xVK5+gtbwnMWw3SEj?= =?us-ascii?Q?Gjl8heRFFr7rdDZ4lCEtgUzcNwxLfi93K0h3CKs4bBSeGlhkI/VSxt1n95EX?= =?us-ascii?Q?cf1fy+8mP9IPRBva7Sn41/iNE2z5EG3UeAbAqHFGAFsypLRpGNOG3HK+tvVg?= =?us-ascii?Q?UehjC7cGTWrLldOzEbvBq4OMYBjWnHnyke1xscTjYKLdabGzL08kezEJtg0L?= =?us-ascii?Q?HTz+eU+0Gp2hNUE/Dxo4Dv7uO7Ifoa6XiiRkpN4RvscRxdUMSqsx3JQvBX1i?= =?us-ascii?Q?bZPYe3PDI4EFnlYmqq/6RP3Q9qZRNabF8fGzdzob2M2pX9EQlICqcri2K4k3?= =?us-ascii?Q?J3licWEZZef/axE0g9WnluCej3yWjU/P7APRaqYwS3cEowYzPYrrzA5GlDg9?= =?us-ascii?Q?ZP5Q5PEZh9Nf5hZJe6Ng94NE8KiTvnY3dTXrualhzMXV62uFzjzXd3m9C2Ho?= =?us-ascii?Q?AtSSQKkzCMOLFcNQ+GFqI4/s8lVhxnlk4GGwIstTETh17tJ30L8Og5R42/Lc?= =?us-ascii?Q?/NejK1nf1WCgWdRiel6d00tFaBa0BYl9NICxWZ8eLbGSyMzqpa8gd8zvoKqd?= =?us-ascii?Q?V45YfFBCO6K/OXPMTKb8XdE5Tkeyb95SlfUbSQ0/OLwdYa1tffnsFas9vAoM?= =?us-ascii?Q?ZCoQ7K39ryuZAKAR/6zpylRHBpvmOiorMb9XomDQ7EWCEuEFG2p+xQSIPH0d?= =?us-ascii?Q?bUBrsh9Yvj9zkh+aqtId4z/YTo+dMug+kaNHFtNLr5SBr//ilbLQ20ZFEBCt?= =?us-ascii?Q?Pa/lYFQNPDlX4TSlA8aD/C9Rjqamao9d6F8z3oPUgcaLNUjiWbuzC3T3CgFC?= =?us-ascii?Q?yT7k95ZUuxWRUeZjp8Ci2yrJF2jRT2Nz+Pkucu4J4X1wWJ9+FZbg/pWELPXZ?= =?us-ascii?Q?wdgdf/+Ao6cKhu/Shi87jauntloVVRVn77Z1tUyOb3Jv5cARnZA2brj4bUv3?= =?us-ascii?Q?qn0Q?= X-MS-Exchange-CrossTenant-Network-Message-Id: 6e852cae-b37f-42d0-d7ad-08d89614b62d X-MS-Exchange-CrossTenant-AuthSource: DF4PR8401MB0444.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Dec 2020 16:18:17.6313 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ayDoxQ/+lTq6KBUowvBOjg46zTzwf5WAPrvV9USp3L+KLJrnlam72pSZyi3oFSOBgg0b2OzaHI809HlAGNbsfQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DF4PR8401MB1004 X-OriginatorOrg: hpe.com X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-HPE-SCL: -1 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,daniel.schaefer@hpe.com X-Gm-Message-State: oJ7n3FufB0QmXK78Wvt3x0Knx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1606839534; bh=XK3k/bpClgfn7HkjVzQuJlgyjrnkOZfVJUQU3zb/Jsw=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=jxosTsEZfZ/QkVef9Q+fI0lF6MSEPL40wg+pD9aCxdvsaeZhEjZ0eN8edgn0/oNVGsx QTMm1GF4aoTZBJKWETGEjhD2L9FWkIaPY0pLtSJ9gTPOayoktyRNCpYy7oFM6y/BENc9r H4Pu+qTN5jzmF5MJSjEzeNvK/PomihctJ3s= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3D3042 TODO: Need to check whether we can avoid copying Aarch64 sources. Cc: Leif Lindholm Cc: Heinrich Schuchardt Cc: Abner Chang Cc: Gilbert Chen Cc: Eric Jin Cc: G Edhaya Chandran Cc: Barton Gao Cc: Samer El-Haj-Mahmoud Signed-off-by: Daniel Schaefer --- uefi-sct/SctPkg/Library/SctLib/Riscv64/SctLibPlat.h = | 32 +++ uefi-sct/SctPkg/Library/SctLib/Riscv64/initplat.c = | 45 ++++ uefi-sct/SctPkg/SCRT/SCRTApp/Riscv64/GoVirtual.S = | 45 ++++ uefi-sct/SctPkg/SCRT/SCRTApp/Riscv64/VirtualMemory.c = | 182 +++++++++++++ uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Debug.c = | 88 +++++++ uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Dump.c = | 68 +++++ uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Io.c = | 134 ++++++++++ uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Io.h = | 48 ++++ uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/Riscv= 64/DebugSupportBBTestCacheFunction.c | 137 ++++++++++ uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/Riscv= 64/DebugSupportBBTestExceptionCallbackFunction.c | 276 ++++++++++++++++++++ uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/Riscv= 64/PlatformIsa.c | 30 +++ uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/UsbHc/BlackBoxTest/Riscv64/Time= rInterrupt.c | 51 ++++ uefi-sct/SctPkg/TestInfrastructure/SCT/Framework/ENTS/EasLib/Riscv64/EntsL= ibPlat.h | 55 ++++ uefi-sct/SctPkg/TestInfrastructure/SCT/Framework/ENTS/EasLib/Riscv64/InitP= lat.c | 55 ++++ 14 files changed, 1246 insertions(+) diff --git a/uefi-sct/SctPkg/Library/SctLib/Riscv64/SctLibPlat.h b/uefi-sct= /SctPkg/Library/SctLib/Riscv64/SctLibPlat.h new file mode 100644 index 00000000..ee7c656b --- /dev/null +++ b/uefi-sct/SctPkg/Library/SctLib/Riscv64/SctLibPlat.h @@ -0,0 +1,32 @@ +/** @file + + Copyright 2006 - 2012 Unified EFI, Inc.
+ Copyright (c) 2011 - 2012, ARM Ltd. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at=20 + http://opensource.org/licenses/bsd-license.php +=20 + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. +=20 +**/ +/*++ + +Module Name: + + SctLibPlat.h + +Abstract: + + AArch64 specific defines + +--*/ + +#ifndef _EFI_LIB_PLAT_H_ +#define _EFI_LIB_PLAT_H_ + +#define MIN_ALIGNMENT_SIZE 8 + +#endif diff --git a/uefi-sct/SctPkg/Library/SctLib/Riscv64/initplat.c b/uefi-sct/S= ctPkg/Library/SctLib/Riscv64/initplat.c new file mode 100644 index 00000000..a48bb2f3 --- /dev/null +++ b/uefi-sct/SctPkg/Library/SctLib/Riscv64/initplat.c @@ -0,0 +1,45 @@ +/** @file + + Copyright 2006 - 2012 Unified EFI, Inc.
+ Copyright (c) 2011 - 2012, ARM Ltd. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at=20 + http://opensource.org/licenses/bsd-license.php +=20 + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. +=20 +**/ +/*++ + +Module Name: + + initplat.c + +Abstract: + + Math routines for compatibility with native EFI library routines. + +--*/ + +#include "SctLibInternal.h" + +VOID +InitializeLibPlatform ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) + +{ + // No platform-specific initializations +} + +UINT64 +SctReadTsc ( + VOID + ) +{ + return 0; +} diff --git a/uefi-sct/SctPkg/SCRT/SCRTApp/Riscv64/GoVirtual.S b/uefi-sct/Sc= tPkg/SCRT/SCRTApp/Riscv64/GoVirtual.S new file mode 100644 index 00000000..8bc2c624 --- /dev/null +++ b/uefi-sct/SctPkg/SCRT/SCRTApp/Riscv64/GoVirtual.S @@ -0,0 +1,45 @@ +## @file +# +# Copyright 2010 - 2012 Unified EFI, Inc.
+# Copyright (c) 2012, ARM Ltd. All rights reserved.
+# Copyright (c) 2020, Hewlett Packard Enterprise Development LP.
+# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the B= SD License +# which accompanies this distribution. The full text of the license may = be found at=20 +# http://opensource.org/licenses/bsd-license.php +#=20 +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IM= PLIED. +#=20 +## +# +# +#/*++ +# +# Module Name: +# +# GoVirtual.S +# +#--*/ +#start of the code section +.text +/* FIXME: Should alignment be different on Aarch64? */ +.align 3 + +.global JumpToTestFunc +.type JumpToTestFunc, %function + +#-------------------------------------------------------------------------= ----- +# VOID +# JumpToTestFunc ( +# IN UINTN FuncPointer, +# IN UNITN ConfigInfo +# ) +# TODO: Make sure this code is correct +JumpToTestFunc: + mv x2, x0 + mv x0, x1 + + // Jump to Virtual function + jalr x2 diff --git a/uefi-sct/SctPkg/SCRT/SCRTApp/Riscv64/VirtualMemory.c b/uefi-sc= t/SctPkg/SCRT/SCRTApp/Riscv64/VirtualMemory.c new file mode 100644 index 00000000..397b3514 --- /dev/null +++ b/uefi-sct/SctPkg/SCRT/SCRTApp/Riscv64/VirtualMemory.c @@ -0,0 +1,182 @@ +/** @file + + Copyright 2006 - 2012 Unified EFI, Inc.
+ Copyright (c) 2012, ARM Ltd. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at=20 + http://opensource.org/licenses/bsd-license.php +=20 + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. +=20 +**/ +/*++ + +Module Name: + + VirtualMemory.c + +--*/ + +#include "SCRTApp.h" + +#define VIRT_TO_PHYS_OFFSET (0x80000000) //2G + +BOOLEAN HighAddress =3D FALSE; +UINTN PageTable =3D 0; + + +VOID +ConvertRuntimeFuncPtr ( + IN OUT UINTN *VirtualFunc + ) +/*++ + +Routine Description: + + Change RuntimeTestFunc physical address to virtual address + +Arguments: + + VirtualFunc - On input, RuntimeTestFunc physical address. + On output, RuntimeTest virtual address. + +Returns: + + NONE + +--*/ +{ + /*Note: It is presumed that on ARM v5, V6 and V7 architectures + * the MMU is configured and enabled in PEI phase. As VirtualFunc + * is already mapped to virtual memory, don't have to do anything here. + */ + /* FIXME: Is it the same on ARM v8? */ +} + + +EFI_STATUS +DoMemoryAllocation ( + IN UINTN PhysicalFunc + ) +/*++ + +Routine Description: + + Allocate memory and create the PageTable to set up physical-virtual map. + +Arguments: + + PhysicalFunc - Physical address where RuntimeTestFunc locates. + +Returns: + + EFI_STATUS + +--*/ +{ + EFI_STATUS Status; + EFI_PHYSICAL_ADDRESS AllocateMemory; + + //create new page tables or use existing page tables. + // + // Allocate PageTable memory close to this Application image location in + // the system memory. In this way, it is safe for page table memory. + // + AllocateMemory =3D PhysicalFunc; + + Status =3D tBS->AllocatePages ( + AllocateMaxAddress, + EfiRuntimeServicesData, + 1, + &AllocateMemory + ); + + if (EFI_ERROR(Status)) { + return Status; + } + + PageTable =3D (UINTN)AllocateMemory; + return EFI_SUCCESS; +} + + +VOID +PrepareVirtualAddressMap ( + IN UINTN MemoryMapSize, + IN UINTN DescriptorSize, + IN EFI_MEMORY_DESCRIPTOR *MemoryMap, + IN EFI_MEMORY_DESCRIPTOR *VirtualMemoryMap, + IN OUT UINTN *VirtualMapSize + ) +/*++ + +Routine Description: + + Construct VirtualAddressMap from physical address to virtual address + +Arguments: + + MemoryMapSize - The size, in bytes, of the MemoryMap buffer + DescriptorSize - The size, in bytes, of an individual EFI_MEMORY_DESC= RIPTOR + MemoryMap - A pointer to the current memory map + VirtualMemoryMap - A pointer to the modified virtual memory map + VirtualMapSize - A pointer to the size, in bytes, of the VirtualMemor= yMap buffer + +Returns: + + NONE + +--*/ +{ + UINTN Index; + *VirtualMapSize =3D 0; + + // + // Copy entries that need runtime mapping to construct virtualMemoryMap + // + for (Index =3D 0; Index < (MemoryMapSize / DescriptorSize); Index++) { + if ((MemoryMap->Attribute & EFI_MEMORY_RUNTIME) =3D=3D EFI_MEMORY_RUNT= IME) { + SctCopyMem ((VOID *) VirtualMemoryMap, (VOID *) MemoryMap, Descripto= rSize); + VirtualMemoryMap->VirtualStart =3D VirtualMemoryMap->PhysicalStart; + *VirtualMapSize +=3D DescriptorSize; + VirtualMemoryMap =3D NextMemoryDescriptor (VirtualMemoryMap, Descrip= torSize); + } + + MemoryMap =3D NextMemoryDescriptor (MemoryMap, DescriptorSize); + } +} + + + +VOID +JumpVirtualMode( + IN UINTN VirtualFunc, + IN UINTN HandOffAddr + ) +/*++ + +Routine Description: + + Enable virtual addressing mode, and jump to RuntimeTestFunc in virtual a= ddress + +Arguments: + + VirtualFunc - RuntimeTestFunc virtual address + HandOffAddr - Configuration Data Address + +Returns: + + NONE + +--*/ +{ + // + // Note: It is assumed that the MMU and page tables are configured on AR= M platforms + // based on ARM v5 v6 and v7 architecture. + // + /* FIXME: Is it the same on ARM v8? */ + JumpToTestFunc(VirtualFunc, HandOffAddr); +} diff --git a/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Debug.c b/uefi-sct/Sct= Pkg/SCRT/SCRTDriver/Riscv64/Debug.c new file mode 100644 index 00000000..6161d596 --- /dev/null +++ b/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Debug.c @@ -0,0 +1,88 @@ +/** @file + + Copyright 2006 - 2012 Unified EFI, Inc.
+ Copyright (c) 2011 - 2012 ARM Ltd. All rights reserved.
=20 + + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at=20 + http://opensource.org/licenses/bsd-license.php +=20 + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. +=20 +**/ + +/*++ + +Module Name: + + Debug.c + +--*/ + +#include "SCRTDriver.h" + +UINTN mHandOffPtr =3D 0; +EFI_PHYSICAL_ADDRESS mIoPortSpaceAddress =3D 0; + + +EFI_STATUS +ConsumeHandOff ( + IN UINTN HandOffAddr, + OUT CONF_INFO *ConfigData + ) +{ + RUNTIME_HANDOFF *HandOffPtr; + // + // First fix the memory address of hand off data. + // + FixAddress(&HandOffAddr); + mHandOffPtr =3D HandOffAddr; + HandOffPtr =3D (RUNTIME_HANDOFF*)mHandOffPtr; + *ConfigData =3D HandOffPtr->ConfigureInfo; + + if (!HandOffPtr->DebuggerInfo.MmioFlag){ + // + // If debug port is I/O mapped, fix IoBase Address. + // + FixAddress(&HandOffPtr->DebuggerInfo.IoBase); + mIoPortSpaceAddress =3D HandOffPtr->DebuggerInfo.IoBase; + } else { + // + // If debug port is MMIO, fix MmioBase Address. + // + FixAddress(&HandOffPtr->DebuggerInfo.MmioBase); + } + + return EFI_SUCCESS; +} + + +EFI_STATUS +Send2UART ( + CHAR8 *String + ) +{ + // + // TODO: On ARM platforms use platform specific functions to + // write the data to UART. + // + return EFI_SUCCESS; +} + + + +EFI_STATUS +DebugWorker ( + IN CHAR8 *String + ) +{ + EFI_STATUS Status; + + // + // Send text message to registered UART. + // + Status =3D Send2UART(String); + return Status; +} diff --git a/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Dump.c b/uefi-sct/SctP= kg/SCRT/SCRTDriver/Riscv64/Dump.c new file mode 100644 index 00000000..cc8d9869 --- /dev/null +++ b/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Dump.c @@ -0,0 +1,68 @@ +/** @file + + Copyright 2006 - 2012 Unified EFI, Inc.
+ Copyright (c) 2011 - 2012 ARM Ltd. All rights reserved.
=20 + + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at=20 + http://opensource.org/licenses/bsd-license.php +=20 + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. +=20 +**/ + +/*++ + +Module Name: + + Dump.c + +--*/ + +#include "SCRTDriver.h" + +VOID +DumpRuntimeTable() +{ + SctAPrint ("\n=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3DDump Runti= me Table=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); + SctAPrint ("Header Signature =3D 0x%x\n", VRT->Hdr.Signature); + + SctAPrint ("\n=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3DGetTime Se= rvice=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); + SctAPrint ("GetTime @ 0x%x\n", VRT->GetTime); + + SctAPrint ("\n=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3DSetTime Se= rvice=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); + SctAPrint ("SetTime @ 0x%x\n", VRT->SetTime); + + SctAPrint ("\n=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3DGetWakeupT= ime Service=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); + SctAPrint ("GetWakeupTime @ 0x%x\n", VRT->GetWakeupTime); + + SctAPrint ("\n=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3DSetWakeupT= ime Service=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); + SctAPrint ("SetWakeupTime @ 0x%x\n", VRT->SetWakeupTime); + + SctAPrint ("\n=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3DGetVariabl= e Service=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); + SctAPrint ("GetVariable @ 0x%x\n", VRT->GetVariable); + + SctAPrint ("\n=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3DGetNextVar= iableName Service=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); + SctAPrint ("GetNextVariableName @ 0x%x\n", VRT->GetNextVariableName); + + SctAPrint ("\n=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3DSetVariabl= e Service=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); + SctAPrint ("SetVariable @ 0x%x\n", VRT->SetVariable); + + SctAPrint ("\n=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3DGetNextHig= hMonotonicCount Service=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); + SctAPrint ("GetNextHighMonotonicCount @ 0x%x\n", VRT->GetNextHighMonoton= icCount); + + SctAPrint ("\n=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3DResetSyste= m Service=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); + SctAPrint ("ResetSystem @ 0x%x\n", VRT->ResetSystem); +#if 0 + SctAPrint ("\n=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3DUpdateCaps= ule Service=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); + SctAPrint ("UpdateCapsule @ 0x%x\n", VRT->UpdateCapsule); + + SctAPrint ("\n=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3DQueryCapsu= leCapabilities Service=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); + SctAPrint ("QueryCapsuleCapabilities @ 0x%x\n", VRT->QueryCapsuleCapabil= ities); + + SctAPrint ("\n=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3DQueryVaria= bleInfo Service=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); + SctAPrint ("QueryVariableInfo @ 0x%x\n", VRT->QueryVariableInfo); +#endif +} diff --git a/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Io.c b/uefi-sct/SctPkg= /SCRT/SCRTDriver/Riscv64/Io.c new file mode 100644 index 00000000..b925e151 --- /dev/null +++ b/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Io.c @@ -0,0 +1,134 @@ +/** @file + + Copyright 2006 - 2012 Unified EFI, Inc.
+ Copyright (c) 2011 - 2012 ARM Ltd. All rights reserved.
=20 + + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at=20 + http://opensource.org/licenses/bsd-license.php +=20 + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. +=20 +**/ + +/*++ + +Module Name: + + Io.c + +--*/ + +#include "Io.h" + +EFI_STATUS +EFIAPI +CpuIoServiceWrite ( + IN EFI_PEI_CPU_IO_PPI_WIDTH Width, + IN UINT64 UserAddress, + IN UINTN Count, + IN VOID *UserBuffer + ) +/*++ + +Routine Description: + + Perform the port I/O write service + +Arguments: + + Width - Width of the port I/O operation + Address - Base address of the port I/O operation + Count - Count of the number of accesses to perform + Buffer - Pointer to the source buffer from which to write data + +Returns: + + EFI_SUCCESS - The data was written. + EFI_INVALID_PARAMETER - Width is invalid. + EFI_INVALID_PARAMETER - Buffer is NULL. + EFI_UNSUPPORTED - The Buffer is not aligned for the given Width. + EFI_UNSUPPORTED - The address range specified by Address, Width, + and Count is not valid. + +--*/ +{ + return EFI_UNSUPPORTED; +} + + +EFI_STATUS +EfiIoWrite ( + IN EFI_PEI_CPU_IO_PPI_WIDTH Width, + IN UINT64 Address, + IN UINTN Count, + IN OUT VOID *Buffer + ) +/*++ + +Routine Description: + Perform an IO write into Buffer. + +Arguments: + Width - Width of write transaction, and repeat operation to use + Address - IO address to write + Count - Number of times to write the IO address. + Buffer - Buffer to write data from. size is Width * Count + +Returns: + Status code + +--*/ +{ + return CpuIoServiceWrite(Width, Address, Count, Buffer); +} + + +EFI_STATUS +EfiIoRead ( + IN EFI_PEI_CPU_IO_PPI_WIDTH Width, + IN UINT64 Address, + IN UINTN Count, + IN OUT VOID *Buffer + ) +/*++ + +Routine Description: + Perform an IO read into Buffer. + +Arguments: + Width - Width of read transaction, and repeat operation to use + Address - IO address to read + Count - Number of times to read the IO address. + Buffer - Buffer to read data into. size is Width * Count + +Returns: + Status code + +--*/ +{ + return EFI_UNSUPPORTED; +} + + +VOID +FixAddress ( + IN UINTN *PhyAddress + ) +{ + // + //Note: On ARM platforms don't have to do this as all the functions are = virtually mapped. + // +} + +// Quick port to ARM + +VOID +Port80 ( + UINT8 Number + ) +{ + //EFI_SCT_DEBUG ((EFI_SCT_D_ERROR, L"Port80 %02x", Number)); +} diff --git a/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Io.h b/uefi-sct/SctPkg= /SCRT/SCRTDriver/Riscv64/Io.h new file mode 100644 index 00000000..1e78b3e4 --- /dev/null +++ b/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Io.h @@ -0,0 +1,48 @@ +/** @file + + Copyright 2006 - 2012 Unified EFI, Inc.
+ Copyright (c) 2011 - 2012 ARM Ltd. All rights reserved.
=20 + + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at=20 + http://opensource.org/licenses/bsd-license.php +=20 + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. +=20 +**/ + +/*++ + +Module Name: + + Debug.h + +--*/ + +#ifndef _IA32_IO_ACCESS_H +#define _IA32_IO_ACCESS_H + +#include "SCRTDriver.h" + +#define IA32_MAX_IO_ADDRESS 0xFFFF + +#define IA32API + + +typedef union { + UINT8 VOLATILE *buf; + UINT8 VOLATILE *ui8; + UINT16 VOLATILE *ui16; + UINT32 VOLATILE *ui32; + UINT64 VOLATILE *ui64; + UINTN VOLATILE ui; +} PTR; + +// This address is assuming a pure PC architecture. Not required? +#define VIRT_TO_PHYS_OFFSET (0x80000000) //2G + + + +#endif diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackB= oxTest/Riscv64/DebugSupportBBTestCacheFunction.c b/uefi-sct/SctPkg/TestCase= /UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/Riscv64/DebugSupportBBTestCach= eFunction.c new file mode 100644 index 00000000..96ee7b57 --- /dev/null +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/= Riscv64/DebugSupportBBTestCacheFunction.c @@ -0,0 +1,137 @@ +/** @file + + Copyright 2006 - 2016 Unified EFI, Inc.
+ Copyright (c) 2011 - 2016, ARM Ltd. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at=20 + http://opensource.org/licenses/bsd-license.php +=20 + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. +=20 +**/ +/*++ + +Module Name: + + DebugSupportBBTestCacheFunction.c + +Abstract: + + Interface Function Test Cases of Debug Support Protocol + +--*/ + + +#include "DebugSupportBBTestMain.h" + +/** + * Entrypoint for EFI_DEBUG_SUPPORT_PROTOCOL.InvalidateInstructionCache()= Function Test. + * @param This a pointer of EFI_BB_TEST_PROTOCOL. + * @param ClientInterface a pointer to the interface to be tested. + * @param TestLevel test "thoroughness" control. + * @param SupportHandle a handle containing protocols required. + * @return EFI_SUCCESS Finish the test successfully. + */ +// +// TDS 3.5 +// +EFI_STATUS +BBTestInvalidateInstructionCacheFunctionAutoTest ( + IN EFI_BB_TEST_PROTOCOL *This, + IN VOID *ClientInterface, + IN EFI_TEST_LEVEL TestLevel, + IN EFI_HANDLE SupportHandle + ) +{ + EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib; + EFI_STATUS Status; + EFI_DEBUG_SUPPORT_PROTOCOL *DebugSupport; + EFI_TEST_ASSERTION AssertionType; + UINT64 Start; + UINT64 Length; + UINTN MaxProcessorIndex; + UINTN ProcessorIndex; + + // + // Get the Standard Library Interface + // + Status =3D gtBS->HandleProtocol ( + SupportHandle, + &gEfiStandardTestLibraryGuid, + (VOID **) &StandardLib + ); + + if (EFI_ERROR(Status)) { + StandardLib->RecordAssertion ( + StandardLib, + EFI_TEST_ASSERTION_FAILED, + gTestGenericFailureGuid, + L"BS.HandleProtocol - Handle standard test library", + L"%a:%d:Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); + return Status; + } + + DebugSupport =3D (EFI_DEBUG_SUPPORT_PROTOCOL *)ClientInterface; + + if (DebugSupport->Isa !=3D PlatformIsa) { + return EFI_SUCCESS; + } + + Status =3D DebugSupport->GetMaximumProcessorIndex (DebugSupport, &MaxPro= cessorIndex); + if (EFI_ERROR(Status)) { + StandardLib->RecordAssertion ( + StandardLib, + EFI_TEST_ASSERTION_FAILED, + gTestGenericFailureGuid, + L"EFI_DEBUG_SUPPORT_PROTOCOL.GetMaximumProcessorIndex", + L"%a:%d:Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); + return Status; + } + + for (ProcessorIndex =3D 0; ProcessorIndex <=3D MaxProcessorIndex; Proces= sorIndex++) { + + // + // Assertion Point 3.5.2.1 + // Invoke InvalidateInstructionCache and verify interface correctness. + // + + // The Physical base of the memory range to be invalidated. + Start =3D 0x0; + + // The minimum number of bytes in the processor's instruction cache to= be invalidated. + Length =3D 0x0; + + Status =3D DebugSupport->InvalidateInstructionCache (DebugSupport, Pro= cessorIndex, (VOID*)&Start, Length); + + if (EFI_ERROR(Status)) { + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } else { + AssertionType =3D EFI_TEST_ASSERTION_PASSED; + } + + StandardLib->RecordAssertion ( + StandardLib, + AssertionType, + gDebugSupportBBTestFunctionAssertionGuid015, + L"EFI_DEBUG_SUPPORT_PROTOCOL.InvalidateInstructionCache -= Invoke this function and verify interface correctness", + L"%a:%d:Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); + } + + return EFI_SUCCESS; +} + diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackB= oxTest/Riscv64/DebugSupportBBTestExceptionCallbackFunction.c b/uefi-sct/Sct= Pkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/Riscv64/DebugSuppo= rtBBTestExceptionCallbackFunction.c new file mode 100644 index 00000000..c27c0c0c --- /dev/null +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/= Riscv64/DebugSupportBBTestExceptionCallbackFunction.c @@ -0,0 +1,276 @@ +/** @file + + Copyright 2006 - 2016 Unified EFI, Inc.
+ Copyright (c) 2011 - 2016, ARM Ltd. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at=20 + http://opensource.org/licenses/bsd-license.php +=20 + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. +=20 +**/ +/*++ + +Module Name: + + DebugSupportBBExceptionCallbackFunction.c + +Abstract: + + Interface Function Test Cases of Debug Support Protocol + +--*/ + + +#include "DebugSupportBBTestMain.h" + +extern volatile UINTN InvokedExceptionCallback; +extern volatile UINTN InvokedPeriodicCallback; + +extern EFI_INSTRUCTION_SET_ARCHITECTURE PlatformIsa; + +void +SoftwareBreak ( + void + ) +{ + // Not ported to ARM yet + ASSERT (FALSE); +} + +/** + * Entrypoint for EFI_DEBUG_SUPPORT_PROTOCOL.RegisterExceptionCallback() = Function Test. + * @param This a pointer of EFI_BB_TEST_PROTOCOL. + * @param ClientInterface a pointer to the interface to be tested. + * @param TestLevel test "thoroughness" control. + * @param SupportHandle a handle containing protocols required. + * @return EFI_SUCCESS Finish the test successfully. + */ +// +// TDS 3.4 +// +EFI_STATUS +BBTestRegisterExceptionCallbackFunctionManualTest ( + IN EFI_BB_TEST_PROTOCOL *This, + IN VOID *ClientInterface, + IN EFI_TEST_LEVEL TestLevel, + IN EFI_HANDLE SupportHandle + ) +{ + EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib; + EFI_STATUS Status; + EFI_DEBUG_SUPPORT_PROTOCOL *DebugSupport; + EFI_TEST_ASSERTION AssertionType; + + DebugSupport =3D (EFI_DEBUG_SUPPORT_PROTOCOL *)ClientInterface; + + if (DebugSupport->Isa !=3D PlatformIsa) { + return EFI_SUCCESS; + } + + // + // Get the Standard Library Interface + // + Status =3D gtBS->HandleProtocol ( + SupportHandle, + &gEfiStandardTestLibraryGuid, + (VOID **) &StandardLib + ); + + if (EFI_ERROR(Status)) { + StandardLib->RecordAssertion ( + StandardLib, + EFI_TEST_ASSERTION_FAILED, + gTestGenericFailureGuid, + L"BS.HandleProtocol - Handle standard test library", + L"%a:%d:Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); + return Status; + } + + // + // Assertion Point 3.4.2.1 + // Invoke RegisterExceptionCallback() to install an interrupt handler fu= nction. + // + InvokedExceptionCallback =3D FALSE; + // FIXME: Is it normal that we use EXCEPT_IA32_BREAKPOINT here? + // Shouldn't we define proper constants for ARM exceptions in DebugSuppo= rtProtocol.h file? + Status =3D DebugSupport->RegisterExceptionCallback (DebugSupport, 0, Exc= eptionCallback, EXCEPT_IA32_BREAKPOINT); + + if ((Status =3D=3D EFI_SUCCESS) || (Status =3D=3D EFI_ALREADY_STARTED)) { + AssertionType =3D EFI_TEST_ASSERTION_PASSED; + } else { + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } + + StandardLib->RecordAssertion ( + StandardLib, + AssertionType, + gDebugSupportBBTestFunctionAssertionGuid009, + L"EFI_DEBUG_SUPPORT_PROTOCOL.RegisterExceptionCallback - = Invoke this function and verify interface correctness", + L"%a:%d:Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); + + // + // If the callback function is already registed, return + // + if (EFI_ERROR(Status)) { + return EFI_SUCCESS; + } + + // + // Test the callback function registed. + // + + // + // Call SoftwareBreak to invoke the interrupt handler function. + // + SoftwareBreak (); + + if (InvokedExceptionCallback =3D=3D FALSE) { + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } else { + AssertionType =3D EFI_TEST_ASSERTION_PASSED; + } + + StandardLib->RecordAssertion ( + StandardLib, + AssertionType, + gDebugSupportBBTestFunctionAssertionGuid010, + L"EFI_DEBUG_SUPPORT_PROTOCOL.RegisterExceptionCallback - = Verify the callback function was invoked.", + L"%a:%d:Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); + + // + // Assertion Point 3.4.2.2 + // Invoke RegisterPeriodicCallback() to install the Periodic interrupt h= andler function. + // Verify the two callback functions can be both invoked. + // + InvokedExceptionCallback =3D FALSE; + InvokedPeriodicCallback =3D FALSE; + + Status =3D DebugSupport->RegisterPeriodicCallback (DebugSupport, 0, Peri= odicCallback); + if (EFI_ERROR(Status)) { + return Status; + } + + // + // Wait the PeriodicCallback to be invoked. + // + gtBS->Stall (500000); + + // + // Call SoftwareBreak to invoke the interrupt handler function. + // + SoftwareBreak (); + + if ((InvokedExceptionCallback =3D=3D TRUE) && (InvokedPeriodicCallback = =3D=3D TRUE)) { + AssertionType =3D EFI_TEST_ASSERTION_PASSED; + } else { + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } + + StandardLib->RecordAssertion ( + StandardLib, + AssertionType, + gDebugSupportBBTestFunctionAssertionGuid011, + L"EFI_DEBUG_SUPPORT_PROTOCOL.RegisterExceptionCallback - = Verify the two callback functions can be both invoked.", + L"%a:%d:Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); + + // + // Uninstall the Periodic callback function. + // + Status =3D DebugSupport->RegisterPeriodicCallback (DebugSupport, 0, NULL= ); + if (EFI_ERROR(Status)) { + return Status; + } + + // + // Assertion Point 3.4.2.3 + // Invoke RegisterExceptionCallback() to install another interrupt handl= er function. + // + Status =3D DebugSupport->RegisterExceptionCallback (DebugSupport, 0, Exc= eptionCallback1, EXCEPT_IA32_BREAKPOINT); + + if (Status !=3D EFI_ALREADY_STARTED) { + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } else { + AssertionType =3D EFI_TEST_ASSERTION_PASSED; + } + + StandardLib->RecordAssertion ( + StandardLib, + AssertionType, + gDebugSupportBBTestFunctionAssertionGuid012, + L"EFI_DEBUG_SUPPORT_PROTOCOL.RegisterExceptionCallback - = Register another callback function.", + L"%a:%d:Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); + + // + // Assertion Point 3.4.2.4 + // Invoke RegisterExceptionCallback() to unstall the interrupt handler f= unction. + // + Status =3D DebugSupport->RegisterExceptionCallback (DebugSupport, 0, NUL= L, EXCEPT_IA32_BREAKPOINT); + + if (EFI_ERROR(Status)) { + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } else { + AssertionType =3D EFI_TEST_ASSERTION_PASSED; + } + + StandardLib->RecordAssertion ( + StandardLib, + AssertionType, + gDebugSupportBBTestFunctionAssertionGuid013, + L"EFI_DEBUG_SUPPORT_PROTOCOL.RegisterExceptionCallback - = Invoke this function to uninstall the interrupt handler function", + L"%a:%d:Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); + + InvokedExceptionCallback =3D FALSE; + + // + // Call SoftwareBreak to invoke the interrupt handler function. + // + SoftwareBreak (); + + if (InvokedExceptionCallback !=3D FALSE) { + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } else { + AssertionType =3D EFI_TEST_ASSERTION_PASSED; + } + + StandardLib->RecordAssertion ( + StandardLib, + AssertionType, + gDebugSupportBBTestFunctionAssertionGuid014, + L"EFI_DEBUG_SUPPORT_PROTOCOL.RegisterExceptionCallback - = Verify the callback function wasn't invoked", + L"%a:%d:Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); + + return EFI_SUCCESS; +} + diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackB= oxTest/Riscv64/PlatformIsa.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/D= ebugSupport/BlackBoxTest/Riscv64/PlatformIsa.c new file mode 100644 index 00000000..8334f601 --- /dev/null +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/= Riscv64/PlatformIsa.c @@ -0,0 +1,30 @@ +/** @file + + Copyright 2006 - 2012 Unified EFI, Inc.
+ Copyright (c) 2011 - 2012, ARM Ltd. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at=20 + http://opensource.org/licenses/bsd-license.php +=20 + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. +=20 +**/ +/*++ + +Module Name: + + PlatformIsa.c + +Abstract: + + Platform related Isa definition. + +--*/ + +#include "DebugSupportBBTestMain.h" + +EFI_INSTRUCTION_SET_ARCHITECTURE PlatformIsa =3D IsaAArch64; + diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/UsbHc/BlackBoxTest/= Riscv64/TimerInterrupt.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/UsbHc= /BlackBoxTest/Riscv64/TimerInterrupt.c new file mode 100644 index 00000000..1c1940e5 --- /dev/null +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/UsbHc/BlackBoxTest/Riscv64= /TimerInterrupt.c @@ -0,0 +1,51 @@ +/** @file + + Copyright 2006 - 2010 Unified EFI, Inc.
+ Copyright (c) 2010, Intel Corporation. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at=20 + http://opensource.org/licenses/bsd-license.php +=20 + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. +=20 +**/ +/** + * Ipf Source file for Mask/Unmask TimerInterrupt. + */ +/*++ + +Module Name: + TimerInterrupt.c + +Abstract: + Ipf Source file for Mask/Unmask TimerInterrupt. + +Author(s): + + +References: + EFI Specification 1.10 + EFI/Tiano DXE Test Case Writer's Guide + +Revision History: + Initial 10-20-2002 + Version 0.01 + +--*/ + +#include "UsbHcTest.h" + +VOID MaskTimerInterrupt() +{ + // TBD + return; +} + +VOID UnmaskTimerInterrupt() +{ + // TBD + return; +} diff --git a/uefi-sct/SctPkg/TestInfrastructure/SCT/Framework/ENTS/EasLib/R= iscv64/EntsLibPlat.h b/uefi-sct/SctPkg/TestInfrastructure/SCT/Framework/ENT= S/EasLib/Riscv64/EntsLibPlat.h new file mode 100644 index 00000000..ff781aee --- /dev/null +++ b/uefi-sct/SctPkg/TestInfrastructure/SCT/Framework/ENTS/EasLib/Riscv64/= EntsLibPlat.h @@ -0,0 +1,55 @@ +/** @file + + Copyright 2006 - 2012 Unified EFI, Inc.
+ Copyright (c) 2010 - 2012, ARM Ltd. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at=20 + http://opensource.org/licenses/bsd-license.php +=20 + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. +=20 +**/ +/*++ + +Module Name: + + EntsLibPlat.h + +Abstract: + + AArch64 specific defines + +--*/ + +#ifndef _EFI_LIB_PLAT_H_ +#define _EFI_LIB_PLAT_H_ + +#define MIN_ALIGNMENT_SIZE 8 + +VOID +EntsInitializeLibPlatform ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +/*++ + +Routine Description: + + Initialize platform. + +Arguments: + + ImageHandle - The image handle. + SystemTable - The system table. + +Returns: + + None. + +--*/ +; + +#endif diff --git a/uefi-sct/SctPkg/TestInfrastructure/SCT/Framework/ENTS/EasLib/R= iscv64/InitPlat.c b/uefi-sct/SctPkg/TestInfrastructure/SCT/Framework/ENTS/E= asLib/Riscv64/InitPlat.c new file mode 100644 index 00000000..70a509a4 --- /dev/null +++ b/uefi-sct/SctPkg/TestInfrastructure/SCT/Framework/ENTS/EasLib/Riscv64/= InitPlat.c @@ -0,0 +1,55 @@ +/** @file + + Copyright 2006 - 2012 Unified EFI, Inc.
+ Copyright (c) 2010 - 2012, ARM Ltd. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at=20 + http://opensource.org/licenses/bsd-license.php +=20 + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. +=20 +**/ +/*++ + +Module Name: + + InitPlat.c + +Abstract: + + Math routines for compatibility with native EFI library routines. + +--*/ + +#include "Efi.h" +#include "EntsLibPlat.h" + +VOID +EntsInitializeLibPlatform ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +/*++ + +Routine Description: + + Initialize platform. + +Arguments: + + ImageHandle - The image handle. + SystemTable - The system table. + +Returns: + + None. + +--*/ +{ + // + // No platform-specific initializations + // +} --=20 2.28.0 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#68140): https://edk2.groups.io/g/devel/message/68140 Mute This Topic: https://groups.io/mt/78637307/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-