From: Yong Li <[email protected]>

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 <[email protected]>
Cc: Evan, Chai <[email protected]>
Cc: Sunil V L <[email protected]>
Cc: Tuan Phan <[email protected]>
Signed-off-by: Yong Li <[email protected]>
---
 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/BaseLib.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
   RiscV64/ReadTimer.S               | GCC
   RiscV64/RiscVMmu.S                | GCC
+  RiscV64/SpeculationBarrier.S      | GCC
 
 [Sources.LOONGARCH64]
   Math64.c
diff --git a/MdePkg/Library/BaseLib/RiscV64/SpeculationBarrier.S 
b/MdePkg/Library/BaseLib/RiscV64/SpeculationBarrier.S
new file mode 100755
index 0000000000..581a765399
--- /dev/null
+++ b/MdePkg/Library/BaseLib/RiscV64/SpeculationBarrier.S
@@ -0,0 +1,34 @@
+##------------------------------------------------------------------------------
+#
+# SpeculationBarrier() for RISCV64
+#
+# Copyright (c) 2023, Intel Corporation. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##------------------------------------------------------------------------------
+
+.text
+.p2align 2
+
+ASM_GLOBAL ASM_PFX(SpeculationBarrier)
+
+
+#/**
+#  Uses as a barrier to stop speculative execution.
+#
+#  Ensures that no later instruction will execute speculatively, until all 
prior
+#  instructions have completed.
+#
+#**/
+#VOID
+#EFIAPI
+#SpeculationBarrier (
+#  VOID
+#  );
+#
+ASM_PFX(SpeculationBarrier):
+    fence rw,rw
+    fence.i
+    fence r,r
+    ret
-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#105350): https://edk2.groups.io/g/devel/message/105350
Mute This Topic: https://groups.io/mt/99163570/21656
Group Owner: [email protected]
Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to