From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web10.5485.1685166021466190927 for ; Fri, 26 May 2023 22:40:21 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=Nuz+TYec; spf=pass (domain: intel.com, ip: 192.55.52.136, mailfrom: yong.li@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1685166021; x=1716702021; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=9tbQ9U+vELwm8hUDf62yQpp65dFFUdDrtFiBUMmm1x4=; b=Nuz+TYecSSXz9Q193USBN/ZUwH057Lmoi/eZ8Q6ACGY8fX7Tlmpq6N0K /n4YyVKFvevzqRqUwyFOxZxw338G4P+++VaWTbsQYz/aUXtTt2kgssU7T OElX506B0XpX5ECnfavQ4V+FzRApSar+2T4Pp9on1lSEuJ2Y3oULK2PBa Mq463NqYXbviMLOjfQ1+3MqgdIDHVTF7G8Dlh1UcF5iYgpfUyaH39JNIu LKjwLPdih6HLJPiUtzdycHqNYUp5EsrECbmw+a1TEsQc4odg+al6Vt3+G Q0OLYSBw1YzT+N798FeamPFbNohFWjfSVz6rlGgmoxwPxavZGG2TBv81E Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10722"; a="333991405" X-IronPort-AV: E=Sophos;i="6.00,196,1681196400"; d="scan'208";a="333991405" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 May 2023 22:40:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10722"; a="738504110" X-IronPort-AV: E=Sophos;i="6.00,196,1681196400"; d="scan'208";a="738504110" Received: from yli147-mobl.ccr.corp.intel.com ([10.67.64.50]) by orsmga001.jf.intel.com with ESMTP; 26 May 2023 22:40:18 -0700 From: "Li, Yong" To: devel@edk2.groups.io Cc: Yong Li , Warkentin, Andrei , Evan, Chai , Sunil V L , Tuan Phan Subject: [PATCH] MdePkg/BaseLib: Add SpeculationBarrier implementation for RiscV64 Date: Sat, 27 May 2023 13:40:14 +0800 Message-Id: <685b7416bda8cefa5aefab7c30868ec20d7495d8.1685165940.git.yong.li@intel.com> X-Mailer: git-send-email 2.39.2.windows.1 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Yong Li Impelement the SpeculationBarrier with implementations consisting of fence instruction which provides finer-grain memory orderings. Data Barrier: fence rw,rw Instruction Barrier: fence.i; fence r,r More detail is in Chapter 17, RVWMO Memory Consistency Model https://github.com/riscv/riscv-isa-manual Cc: Warkentin, Andrei Cc: Evan, Chai Cc: Sunil V L Cc: Tuan Phan Signed-off-by: Yong Li --- MdePkg/Library/BaseLib/BaseLib.inf | 1 + .../BaseLib/RiscV64/SpeculationBarrier.S | 34 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100755 MdePkg/Library/BaseLib/RiscV64/SpeculationBarrier.S diff --git a/MdePkg/Library/BaseLib/BaseLib.inf b/MdePkg/Library/BaseLib/Ba= seLib.inf index 3a48492b1a..03c7b02e82 100644 --- a/MdePkg/Library/BaseLib/BaseLib.inf +++ b/MdePkg/Library/BaseLib/BaseLib.inf @@ -404,6 +404,7 @@ RiscV64/CpuScratch.S | GCC=0D RiscV64/ReadTimer.S | GCC=0D RiscV64/RiscVMmu.S | GCC=0D + RiscV64/SpeculationBarrier.S | GCC=0D =0D [Sources.LOONGARCH64]=0D Math64.c=0D diff --git a/MdePkg/Library/BaseLib/RiscV64/SpeculationBarrier.S b/MdePkg/L= ibrary/BaseLib/RiscV64/SpeculationBarrier.S new file mode 100755 index 0000000000..581a765399 --- /dev/null +++ b/MdePkg/Library/BaseLib/RiscV64/SpeculationBarrier.S @@ -0,0 +1,34 @@ +##------------------------------------------------------------------------= ------=0D +#=0D +# SpeculationBarrier() for RISCV64=0D +#=0D +# Copyright (c) 2023, Intel Corporation. All rights reserved.=0D +#=0D +# SPDX-License-Identifier: BSD-2-Clause-Patent=0D +#=0D +##------------------------------------------------------------------------= ------=0D +=0D +.text=0D +.p2align 2=0D +=0D +ASM_GLOBAL ASM_PFX(SpeculationBarrier)=0D +=0D +=0D +#/**=0D +# Uses as a barrier to stop speculative execution.=0D +#=0D +# Ensures that no later instruction will execute speculatively, until all= prior=0D +# instructions have completed.=0D +#=0D +#**/=0D +#VOID=0D +#EFIAPI=0D +#SpeculationBarrier (=0D +# VOID=0D +# );=0D +#=0D +ASM_PFX(SpeculationBarrier):=0D + fence rw,rw=0D + fence.i=0D + fence r,r=0D + ret=0D --=20 2.25.1