From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR04-VI1-obe.outbound.protection.outlook.com (EUR04-VI1-obe.outbound.protection.outlook.com [40.107.8.48]) by mx.groups.io with SMTP id smtpd.web12.237.1620162389838621798 for ; Tue, 04 May 2021 14:06:31 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=4fDs+ehc; spf=pass (domain: arm.com, ip: 40.107.8.48, mailfrom: sami.mujawar@arm.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=J1JOIsrY11YIa2k7HxUlhp5GnH8q6xBjzK9Bs774uRs=; b=4fDs+ehcUxJkiHNWhKKPYmUJ+wR4pN0/a9d8Px1V1FJy71Ma4c/Q1M1B6BmeOCil3qRCgGcy/N33a3EkQ5iuMVNmo/OqnH6VpBWp3j9j80YHBWq476SpI0vHXKyfYBtkRG0/3dbQ35hVI2e+7KilzxGwbyHunCqvPvc8D6QLrGs= Received: from AM6P195CA0082.EURP195.PROD.OUTLOOK.COM (2603:10a6:209:86::23) by AM8PR08MB6577.eurprd08.prod.outlook.com (2603:10a6:20b:355::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.35; Tue, 4 May 2021 21:06:18 +0000 Received: from VE1EUR03FT020.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:86:cafe::bc) by AM6P195CA0082.outlook.office365.com (2603:10a6:209:86::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.24 via Frontend Transport; Tue, 4 May 2021 21:06:18 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; edk2.groups.io; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;edk2.groups.io; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT020.mail.protection.outlook.com (10.152.18.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Tue, 4 May 2021 21:06:18 +0000 Received: ("Tessian outbound aff50003470c:v91"); Tue, 04 May 2021 21:06:17 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 7510c1a290320b01 X-CR-MTA-TID: 64aa7808 Received: from c54bb2f1fd7f.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 1A656166-AC52-4D0A-8F98-4B4EB57898C3.1; Tue, 04 May 2021 21:06:11 +0000 Received: from EUR02-VE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id c54bb2f1fd7f.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 04 May 2021 21:06:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nz5CdM9tjRzjW2qbvNVCY/vrw6hpwfDxF23FlEfl7tKPBdwo8+zfYRmByJjjEyxHsDTEZ5Yz67wikc6KsMw93EMlRA8Vk3mhMICTgxarw3XaZRJjYm1YcOagJAavLGBnIyZaAayVzdb+sC84vJ/H8i0uE8gv2TExoYhyo2l4iyo8WMb9kMMQ3eY4dcxFlcaI0J2klLqRRAdEBDekQXyKm8UulkI3t+kHDHfDieVbN7ouoncf2Kq2+xA5U0u33xTNdy/4g+gO8KG0cs/hxlT0Gl9Wukydgzha+AJsx1spIuJwOjNn6QFoKJ9g+thHP0XOmq1waMTHctcY0u8AiSL0Ng== 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=J1JOIsrY11YIa2k7HxUlhp5GnH8q6xBjzK9Bs774uRs=; b=SCYDIkuCBOmpsQh57lgXrmJhIOSiKn9ml1jhoAZ6yLj4UjHPTX8kcPGHTEQURNTu7jC7UDNMsq6s7HRNcrGd9vGdNqgKOXywqtX+MYvQ1CnKfZh0G0F5+ud1UesAE60XvdD4BaWIdZrbX8Uvy2DBgcojCAGMoFGU7YS5zm20uBG8EHPoPUKn9e5hARnBaRurvE+f88XxICi7E3rQJrFsWc9cktcNF+wUlv5IC22ucbcWFs3ob7vroUelgV/52cIAHpJy718wnw+6QxQZ2zCaeIX7GVKP/aOxXW/yaDlM+rGUbkZ/iA3+rfhsX8QprfUSJKeXZnC5HLuoa6A5PejRaw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=J1JOIsrY11YIa2k7HxUlhp5GnH8q6xBjzK9Bs774uRs=; b=4fDs+ehcUxJkiHNWhKKPYmUJ+wR4pN0/a9d8Px1V1FJy71Ma4c/Q1M1B6BmeOCil3qRCgGcy/N33a3EkQ5iuMVNmo/OqnH6VpBWp3j9j80YHBWq476SpI0vHXKyfYBtkRG0/3dbQ35hVI2e+7KilzxGwbyHunCqvPvc8D6QLrGs= Authentication-Results-Original: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; Received: from AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) by AM6PR08MB3624.eurprd08.prod.outlook.com (2603:10a6:20b:51::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.24; Tue, 4 May 2021 21:06:06 +0000 Received: from AS8PR08MB6806.eurprd08.prod.outlook.com ([fe80::80cb:878d:c8f1:2688]) by AS8PR08MB6806.eurprd08.prod.outlook.com ([fe80::80cb:878d:c8f1:2688%7]) with mapi id 15.20.4087.044; Tue, 4 May 2021 21:06:06 +0000 Subject: Re: [PATCH 1/3] MdePkg/BaseLib: Add support for ARMv8.5 RNG instructions To: Rebecca Cran , devel@edk2.groups.io Cc: Jiewen Yao , Jian J Wang , Michael D Kinney , Liming Gao , Zhiguang Liu , Ard Biesheuvel , nd@arm.com References: <20210428204415.25454-1-rebecca@nuviainc.com> <20210428204415.25454-2-rebecca@nuviainc.com> From: "Sami Mujawar" Message-ID: <04dea53e-14e4-fb93-cbe7-0ba68ea08341@arm.com> Date: Tue, 4 May 2021 22:06:00 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.0.1 In-Reply-To: <20210428204415.25454-2-rebecca@nuviainc.com> X-Originating-IP: [217.140.106.52] X-ClientProxiedBy: LO4P123CA0217.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a6::6) To AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [10.1.196.43] (217.140.106.52) by LO4P123CA0217.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.24 via Frontend Transport; Tue, 4 May 2021 21:06:03 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ebc90286-f482-4d09-2ebb-08d90f40761a X-MS-TrafficTypeDiagnostic: AM6PR08MB3624:|AM8PR08MB6577: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:9508;OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: evjobtO3ZiptYbv9DteSCTFJcI+WfVb36X1LHe/+iVQnjp5+XHmXAEyMW/QxRMazj+i05YINpoOqaAK+9GX3264P3Wx2tFg4SLkFVZvslyivnWEBlewo3EaNKmiBDqAqJarHLv2ofN1kFQFLtmdS9J1EEMERRbbO0u8GmBCUvgMhSHP+dXDJNWBddsRnSM3CDHUchXZgpvDD1YNJvQTDKOsKc4QDFrhuX9iSqY0sjDA5qvRenzR+2lSxxPc8tGup3mp8X12GI75OqAb7rBUd6tRwWCPUqjJUrPA9VjZ9sZOcoijt/AP+VPcsMgKDiA/lxwO6QLjIK5zIld3I3Ika9h16LRmBjKGGsVoc/HVXHJ+OLNwrxyyI67flOrq+nbAq224mzsezCdbTrSDgClAfdFa8rUaJOrW4Hbpdpzjdf/kCWBKMY1nGNwhMqI3SbmpIpQj3ahFaTXtID1ZqUJSTNysEDqalk9OQ+MWDN9pYENSyErb5el3fPna5jlOh7+EPUCWt6n7Dy5pj40GPxnu8LpfEM7gY5QS6/HL2Cdg87hbvYoHfF50/qetxTJH/ZO6eP7bqBF2DASRhy0uz2GOPFrU/DWh2KZjGtVU9zI5zelevp/l6xT1CRS4p0I2drCi3rs5EIecKbVi+crwurAjuzvFQuQcM4WId5Ag7RKfdZMztoG5IxhWzblDWXcZ6wqrU6UgIiE4QfQii70oy9dTrAaLRXITS5laRLbN5OWW4Qe4= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR08MB6806.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(396003)(366004)(346002)(376002)(136003)(39830400003)(83380400001)(66476007)(66556008)(66946007)(16526019)(186003)(31686004)(6486002)(19627235002)(2906002)(54906003)(36756003)(16576012)(316002)(4326008)(52116002)(26005)(8676002)(8936002)(86362001)(53546011)(44832011)(478600001)(2616005)(5660300002)(956004)(31696002)(38100700002)(38350700002)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?ZzJLQm40VS9PcWFIbXBhMjNTem92eENqTlVtbDY5eU5LcUJCTGxJYlRYUWV3?= =?utf-8?B?K1B1NjNDUEFMUVdHTmVTMktxTmp4NlZpNTVLbjlwSkJLcjF1M2ZQSzJWVngx?= =?utf-8?B?N0d4TmtrdWFFSWpYQU9uaHBQWTVWS0Yvei9DL0pxL1NvRzBQYUxSRktxdXAr?= =?utf-8?B?V0xnWGVQQWpZMS93OFJzcFhia0FXTXJHUmRNTG1YWE1UU1JzUWxQM0Qva1hi?= =?utf-8?B?cS9JRmRlUWVlWVFxZ3JWeldpR3pQRzJWdDd5Si83K3NKR1ZWQVprK0VYR3do?= =?utf-8?B?YXVjYlZvRjJYZnFMSS9CVGwyR1Qvc3A4ZGRQL2RWbWZpQk85ZVg3L0FhR29W?= =?utf-8?B?dFppSWcxZGZuOGtEeDBlZ0lHT0xUWWk0UCtBZlduRG9HVktaRk16czBTUzFG?= =?utf-8?B?YVJGY0FGY0J6cmZWR1g5QkxKNEcvd016SVJTSTJucUpDMmpKOXkySVJydmVH?= =?utf-8?B?aytQWE9NQTd4R0hQMzRhT1lpK3czMkNNN0dVQjNyNVBadFFLaG91Z0xzTkFj?= =?utf-8?B?SDdjNzRzRXQrUktseSs0VkJtdEpUdXVidXB3bEcyNWRTNTFLWkZPTTNRTERO?= =?utf-8?B?WUFQRlVEQmFNa1RYdkFXOWlCQ3AzVkJFbTFvbzZSOHJVZmFNaDM3Z0ZsemNo?= =?utf-8?B?Q3RKekF1M1JnL1BrTXBJSU9iNDFPTGxDQVZaeUl1YmdRd3lER21Vd2pIMTRO?= =?utf-8?B?NTRTOGVBUVBXZlhxSHR4Y0YxdjhCUkxsNXNIb0RZZVlLUWRtb0xCaW4yb096?= =?utf-8?B?NGwvM2lzdzlIb3J4bStvODNtMTI3cnFXM1VWL3ZEaENNazVUenVUYjl0ZWlD?= =?utf-8?B?aWFSN2U3VHl3aVhjclBBZ3kvWmtjYVJkbFc5MU9qWnY0WFo5UVN1MjNqWGM1?= =?utf-8?B?blVaVWM2QmFvekhqQUJNdUhFYWtyWkxFRE80UENLbGZDVEl1QnZjT3NWK0M5?= =?utf-8?B?cnBDV05CSk9jNFFRaEVlaElXRGVYZXgxWW1vTUplZk0zVHBIYW5hVXliUjdB?= =?utf-8?B?L3NFQjhEbjFiNlNrSWNaSGJBUDFBUi9kUWVCTCtBam04dE5kMnZNNnpSc1Fp?= =?utf-8?B?WkNQeUtJeEhvM3pDWm4yWWViVXYvYnVNL3ZnOTY3enRZZC9FMFhCNG9aektO?= =?utf-8?B?Y0hCN0hVaE5EbmZoL2NkblJvK0krN0VJRlJ1RTBJRFkvT3NJdzVyT0NRVERu?= =?utf-8?B?N002VzBTNUtpUklPb2hWTjQxNlJDRUZub04vbi9ycjRwUUJqUHpENnB5Sm05?= =?utf-8?B?Y3IrSlpPbUQ0Z01zbkNYYkQ1UzZub21aVUY0YU5lMWIxcENEOVRiTWZGWSs5?= =?utf-8?B?Vm1SQ21iYklkejlORUh6RVpEUEtpZ0N6MVV1eERxVTcydkQ3VXpwRmVWazZD?= =?utf-8?B?U2RnOFo3VkdBNHV2eXZCMTFBMkFINENHSkxYSG9ybXFEd3pNTit3TzZoMDJo?= =?utf-8?B?Yldrcnp0YkF2Z2p3MTdCSWZnOVJpWUJySHBZa2hmYlZGcW9meXp1bVlRUjJZ?= =?utf-8?B?YWx4MkJFcnZ1eXppbFZZMHhWY0xNeTZBbDNqVCtnV1FHL3ZlZmE5eCtIbWdh?= =?utf-8?B?SGp1ZEg3SUhaTDZpaHo0RzZudFU3Wit6NDIweFlNNmI3NUw3RHZ3dXVmaVBP?= =?utf-8?B?UUt4dUdLbU5HL2x4T0UrUExOYmhNMXVkS3gxbndubDJ4Q3FvZFNSMHJOVTJE?= =?utf-8?B?Q0o5T3ViRzJSaWN1dDFwcys0WExlaFoxcXFTelRjVHRja1pndXk4Nmd3dmRM?= =?utf-8?Q?ii+2cmlUPt0iHXigATxhSh7RCkyjuWh89Pbbvgv?= X-MS-Exchange-Transport-Forked: True X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3624 Original-Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; Return-Path: Sami.Mujawar@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT020.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: f22882da-be89-4d01-f458-08d90f406d79 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lzW8BCljYZN2qQuxDXkra3K9bxpuuASowtwNY8lxqARTIhEtYfqbGjTTC1XQOE8yy9bNmxa5oq4zEWjyoDyINcGsRrSagDpxWsSeL4DKscO5KfROmpZ6QQp65bzEhOwXn0e7HZdbo8djRvRBLSYtCGGy9zc2Hnjs3UDeNN6aZL1kJOH9KyhAXyr05JFmottwpI1q683jGvgAkugu9hAvoWtI8Wi5/1dM0xmCgiHOVnNR7fc6uNCARDQkamtqkuShSQGVokdAa0j4uwQtIQt262qMh5QsvCQPlMkVwshlchJe75FHr0HDULjAgp34iQANpv1KN09rLIEQsS9Tz4lwjsN9SR9p8nwSxvbKUdW0Zbt8+IvnOL+ErBGozaaiMuMRghrmSZPEQT94mKVdLa0lFFinRle5kCSnnbD+ENC3OEP2QpcFsL65VdXIm7KW5vsZ0C3sitVL/ORMNmNLu6N6Vz9HqYTLXZaJA7rhULNywL4tK3p1rY9nu7FKmOWzjwxwyUbUnO0/OEAsk2mfNGlUCm9VtowQfkkloDZfZA+vyLtlOqf32FR1f0NdILLmnOJa2t258qZRSkVyQSNu5NjZChQXILTJPi4fLF0MAAA0xpWtS7blXBzOVge3m9hwQbPM2+aJ80fp0H0w7X/6n0PFpK9dNrck6gUrMOkVoswp5iFib4bVGxKIyoTF/Et92ny2 X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(4636009)(46966006)(36840700001)(2906002)(53546011)(956004)(4326008)(2616005)(54906003)(5660300002)(186003)(70586007)(70206006)(82310400003)(83380400001)(16576012)(36860700001)(19627235002)(498600001)(47076005)(16526019)(336012)(36756003)(26005)(356005)(44832011)(6486002)(31696002)(81166007)(8676002)(8936002)(31686004)(86362001)(43740500002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2021 21:06:18.2097 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ebc90286-f482-4d09-2ebb-08d90f40761a X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR03FT020.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB6577 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-GB Hi Rebecca, Please find my response inline marked [SAMI]. Regards, Sami Mujawar On 28/04/2021 09:44 PM, Rebecca Cran wrote: > Add support for the optional ARMv8.5 RNDR and RNDRRS instructions that > are a part of FEAT_RNG to BaseLib, and add a function to read the ISAR0 > register which indicates whether the CPU supports FEAT_RNG. > > Signed-off-by: Rebecca Cran > --- > MdePkg/Library/BaseLib/BaseLib.inf | 4 ++ > MdePkg/Include/Library/BaseLib.h | 47 +++++++++++++++++ > MdePkg/Library/BaseLib/BaseLibInternals.h | 6 +++ > MdePkg/Library/BaseLib/AArch64/ArmReadIdIsar0.S | 29 +++++++++++ > MdePkg/Library/BaseLib/AArch64/ArmReadIdIsar0.asm | 28 ++++++++++ > MdePkg/Library/BaseLib/AArch64/ArmRng.S | 51 ++++++++++++++++++ > MdePkg/Library/BaseLib/AArch64/ArmRng.asm | 55 ++++++++++++++++++++ > 7 files changed, 220 insertions(+) > > diff --git a/MdePkg/Library/BaseLib/BaseLib.inf b/MdePkg/Library/BaseLib/BaseLib.inf > index b76f3af380ea..7f582079d786 100644 > --- a/MdePkg/Library/BaseLib/BaseLib.inf > +++ b/MdePkg/Library/BaseLib/BaseLib.inf > @@ -380,6 +380,8 @@ [Sources.AARCH64] > AArch64/SetJumpLongJump.S | GCC > AArch64/CpuBreakpoint.S | GCC > AArch64/SpeculationBarrier.S | GCC > + AArch64/ArmRng.S | GCC > + AArch64/ArmReadIdIsar0.S | GCC > > AArch64/MemoryFence.asm | MSFT > AArch64/SwitchStack.asm | MSFT > @@ -389,6 +391,8 @@ [Sources.AARCH64] > AArch64/SetJumpLongJump.asm | MSFT > AArch64/CpuBreakpoint.asm | MSFT > AArch64/SpeculationBarrier.asm | MSFT > + AArch64/ArmRng.asm | MSFT > + AArch64/ArmReadIdIsar0.asm | MSFT > > [Sources.RISCV64] > Math64.c > diff --git a/MdePkg/Include/Library/BaseLib.h b/MdePkg/Include/Library/BaseLib.h > index 7253997a6f8c..60cf559b0849 100644 > --- a/MdePkg/Include/Library/BaseLib.h > +++ b/MdePkg/Include/Library/BaseLib.h > @@ -7519,4 +7519,51 @@ PatchInstructionX86 ( > ); > > #endif // defined (MDE_CPU_IA32) || defined (MDE_CPU_X64) > + > +#if defined (MDE_CPU_AARCH64) > + > +/** > + Reads the ID_AA64ISAR0 Register. > + > + @return The contents of the ID_AA64ISAR0 Register > + > +**/ > +UINT64 > +EFIAPI > +ArmReadIdIsar0 ( > + VOID > + ); > + [SAMI] Should this function be part of ArmLib? [/SAMI] > +/** > + Generates a random number using the RNDR instruction. > + > + @param[out] The generated random number > + > + @retval TRUE Success: a random number was successfully generated > + @retval FALSE Failure: a random number was unable to be generated > + > +**/ > +BOOLEAN > +EFIAPI > +ArmRndr ( > + OUT UINT64 *Rand > + ); > + > +/** > + Generates a random number using the RNDRRS instruction. > + > + @param[out] The generated random number > + > + @retval TRUE Success: a random number was successfully generated > + @retval FALSE Failure: a random number was unable to be generated > + > +**/ > +BOOLEAN > +EFIAPI > +ArmRndrrs ( > + OUT UINT64 *Rand > + ); > + > +#endif // defined (MDE_CPU_AARCH64) > + > #endif // !defined (__BASE_LIB__) > diff --git a/MdePkg/Library/BaseLib/BaseLibInternals.h b/MdePkg/Library/BaseLib/BaseLibInternals.h > index 6837d67d90cf..4ae79a4e7ab4 100644 > --- a/MdePkg/Library/BaseLib/BaseLibInternals.h > +++ b/MdePkg/Library/BaseLib/BaseLibInternals.h > @@ -862,6 +862,12 @@ InternalX86RdRand64 ( > OUT UINT64 *Rand > ); [SAMI] I can see that the X86RdRand64 functions are implemented in this library. However, I am not sure we want ArmRndr() and ArmRndrrs() in BaseLib. I think these functions should be in BaseRngLib and should not be available publicly. The RngLib interface should be used by edk2 modules. What do you think? [/SAMI] > > +#elif defined (MDE_CPU_AARCH64) > + > +// RNDR, Random Number > +#define RNDR S3_3_C2_C4_0 > +#define RNDRRS S3_3_C2_C4_1 > + > #else > > #endif > diff --git a/MdePkg/Library/BaseLib/AArch64/ArmReadIdIsar0.S b/MdePkg/Library/BaseLib/AArch64/ArmReadIdIsar0.S > new file mode 100644 > index 000000000000..b31e565c7955 > --- /dev/null > +++ b/MdePkg/Library/BaseLib/AArch64/ArmReadIdIsar0.S > @@ -0,0 +1,29 @@ > +#------------------------------------------------------------------------------ > +# > +# ArmReadIdIsar0() for AArch64 > +# > +# Copyright (c) 2021, NUVIA Inc. All rights reserved.
> +# > +# SPDX-License-Identifier: BSD-2-Clause-Patent > +# > +#------------------------------------------------------------------------------ > + > +.text > +.p2align 2 > +GCC_ASM_EXPORT(ArmReadIdIsar0) > + > +#/** > +# Reads the ID_AA64ISAR0 Register. > +# > +#**/ > +#UINT64 > +#EFIAPI > +#ArmReadIdIsar0 ( > +# VOID > +# ); > +# > +ASM_PFX(ArmReadIdIsar0): > + mrs x0, id_aa64isar0_el1 // Read ID_AA64ISAR0 Register > + ret > + > + > diff --git a/MdePkg/Library/BaseLib/AArch64/ArmReadIdIsar0.asm b/MdePkg/Library/BaseLib/AArch64/ArmReadIdIsar0.asm > new file mode 100644 > index 000000000000..1f1d15626cc2 > --- /dev/null > +++ b/MdePkg/Library/BaseLib/AArch64/ArmReadIdIsar0.asm > @@ -0,0 +1,28 @@ > +;------------------------------------------------------------------------------ > +; > +; ArmReadIdIsar0() for AArch64 > +; > +; Copyright (c) 2021, NUVIA Inc. All rights reserved.
> +; > +; SPDX-License-Identifier: BSD-2-Clause-Patent > +; > +;------------------------------------------------------------------------------ > + > + EXPORT ArmReadIdIsar0 > + AREA BaseLib_LowLevel, CODE, READONLY > + > +;/** > +; Reads the ID_AA64ISAR0 Register. > +; > +;**/ > +;UINT64 > +;EFIAPI > +;ArmReadIdIsar0 ( > +; VOID > +; ); > +; > +ArmReadIdIsar0 > + mrs x0, id_aa64isar0_el1 // Read ID_AA64ISAR0 Register > + ret > + > + END > diff --git a/MdePkg/Library/BaseLib/AArch64/ArmRng.S b/MdePkg/Library/BaseLib/AArch64/ArmRng.S > new file mode 100644 > index 000000000000..fc2adb660d21 > --- /dev/null > +++ b/MdePkg/Library/BaseLib/AArch64/ArmRng.S > @@ -0,0 +1,51 @@ > +#------------------------------------------------------------------------------ > +# > +# ArmRndr() and ArmRndrrs() for AArch64 > +# > +# Copyright (c) 2021, NUVIA Inc. All rights reserved.
> +# > +# SPDX-License-Identifier: BSD-2-Clause-Patent > +# > +#------------------------------------------------------------------------------ > + > +#include "BaseLibInternals.h" > + > +.text > +.p2align 2 > +GCC_ASM_EXPORT(ArmRndr) > +GCC_ASM_EXPORT(ArmRndrrs) > + > +#/** > +# Generates a random number using RNDR. > +# Returns TRUE on success; FALSE on failure. > +# > +#**/ > +#BOOLEAN > +#EFIAPI > +#ArmRndr ( > +# OUT UINT64 *Rand > +# ); > +# > +ASM_PFX(ArmRndr): > + mrs x1, RNDR > + str x1, [x0] > + cset x0, ne // RNDR sets NZCV to 0b0100 on failure > + ret > + > + > +#/** > +# Generates a random number using RNDRRS > +# Returns TRUE on success; FALSE on failure. > +# > +#**/ > +#BOOLEAN > +#EFIAPI > +#ArmRndrrs ( > +# OUT UINT64 *Rand > +# ); > +# > +ASM_PFX(ArmRndrrs): > + mrs x1, RNDRRS > + str x1, [x0] > + cset x0, ne // RNDRRS sets NZCV to 0b0100 on failure > + ret > diff --git a/MdePkg/Library/BaseLib/AArch64/ArmRng.asm b/MdePkg/Library/BaseLib/AArch64/ArmRng.asm > new file mode 100644 > index 000000000000..ed8d1a81bdfe > --- /dev/null > +++ b/MdePkg/Library/BaseLib/AArch64/ArmRng.asm > @@ -0,0 +1,55 @@ > +;------------------------------------------------------------------------------ > +; > +; ArmRndr() and ArmRndrrs() for AArch64 > +; > +; Copyright (c) 2021, NUVIA Inc. All rights reserved.
> +; > +; SPDX-License-Identifier: BSD-2-Clause-Patent > +; > +;------------------------------------------------------------------------------ > + > +#include "BaseLibInternals.h" > + > + EXPORT ArmRndr > + EXPORT ArmRndrrs > + AREA BaseLib_LowLevel, CODE, READONLY > + > + > +;/** > +; Generates a random number using RNDR. > +; Returns TRUE on success; FALSE on failure. > +; > +;**/ > +;BOOLEAN > +;EFIAPI > +;ArmRndr ( > +; OUT UINT64 *Rand > +; ); > +; > +ArmRndr > + mrs x1, RNDR > + str x1, [x0] > + cset x0, ne // RNDR sets NZCV to 0b0100 on failure > + ret > + > + END > + > +;/** > +; Generates a random number using RNDRRS. > +; Returns TRUE on success; FALSE on failure. > +; > +;**/ > +;BOOLEAN > +;EFIAPI > +;ArmRndrrs ( > +; OUT UINT64 *Rand > +; ); > +; > +ArmRndrrs > + mrs x1, RNDRRS > + str x1, [x0] > + cset x0, ne // RNDRRS sets NZCV to 0b0100 on failure > + ret > + > + END > +