[edk2-devel] [PATCH v2 06/17] MdePkg/BaseMemoryLibOptDxe AARCH64: Make asm files BTI compatible

Ard Biesheuvel ardb at kernel.org
Mon Mar 27 11:01:01 UTC 2023


Add the BTI instructions and the associated note to make the AArch64 asm
objects compatible with BTI enforcement.

Signed-off-by: Ard Biesheuvel <ardb at kernel.org>
---
 MdePkg/Library/BaseMemoryLibOptDxe/AArch64/CompareGuid.S | 1 +
 MdePkg/Library/BaseMemoryLibOptDxe/AArch64/CompareMem.S  | 1 +
 MdePkg/Library/BaseMemoryLibOptDxe/AArch64/CopyMem.S     | 1 +
 MdePkg/Library/BaseMemoryLibOptDxe/AArch64/ScanMem.S     | 1 +
 MdePkg/Library/BaseMemoryLibOptDxe/AArch64/SetMem.S      | 5 +++++
 5 files changed, 9 insertions(+)

diff --git a/MdePkg/Library/BaseMemoryLibOptDxe/AArch64/CompareGuid.S b/MdePkg/Library/BaseMemoryLibOptDxe/AArch64/CompareGuid.S
index b7a566fdafacc8a6..7f058e94b3b7023a 100644
--- a/MdePkg/Library/BaseMemoryLibOptDxe/AArch64/CompareGuid.S
+++ b/MdePkg/Library/BaseMemoryLibOptDxe/AArch64/CompareGuid.S
@@ -8,6 +8,7 @@
     .align  5
 ASM_GLOBAL ASM_PFX(InternalMemCompareGuid)
 ASM_PFX(InternalMemCompareGuid):
+    AARCH64_BTI(c)
     mov     x2, xzr
     ldp     x3, x4, [x0]
     cbz     x1, 0f
diff --git a/MdePkg/Library/BaseMemoryLibOptDxe/AArch64/CompareMem.S b/MdePkg/Library/BaseMemoryLibOptDxe/AArch64/CompareMem.S
index ffe4b7a0b058cc85..707e06b0505a19cd 100644
--- a/MdePkg/Library/BaseMemoryLibOptDxe/AArch64/CompareMem.S
+++ b/MdePkg/Library/BaseMemoryLibOptDxe/AArch64/CompareMem.S
@@ -32,6 +32,7 @@
     .p2align 6
 ASM_GLOBAL ASM_PFX(InternalMemCompareMem)
 ASM_PFX(InternalMemCompareMem):
+    AARCH64_BTI(c)
     eor     tmp1, src1, src2
     tst     tmp1, #7
     b.ne    .Lmisaligned8
diff --git a/MdePkg/Library/BaseMemoryLibOptDxe/AArch64/CopyMem.S b/MdePkg/Library/BaseMemoryLibOptDxe/AArch64/CopyMem.S
index 9fad6d1f267c1bcf..59a6593d96cae907 100644
--- a/MdePkg/Library/BaseMemoryLibOptDxe/AArch64/CopyMem.S
+++ b/MdePkg/Library/BaseMemoryLibOptDxe/AArch64/CopyMem.S
@@ -178,6 +178,7 @@ L(copy_long):
 
 ASM_GLOBAL ASM_PFX(InternalMemCopyMem)
 ASM_PFX(InternalMemCopyMem):
+    AARCH64_BTI(c)
     sub     tmp2, dstin, src
     cmp     count, 96
     ccmp    tmp2, count, 2, hi
diff --git a/MdePkg/Library/BaseMemoryLibOptDxe/AArch64/ScanMem.S b/MdePkg/Library/BaseMemoryLibOptDxe/AArch64/ScanMem.S
index 8673b76eca857b8e..55aaf89f56b43fad 100644
--- a/MdePkg/Library/BaseMemoryLibOptDxe/AArch64/ScanMem.S
+++ b/MdePkg/Library/BaseMemoryLibOptDxe/AArch64/ScanMem.S
@@ -45,6 +45,7 @@
 
 ASM_GLOBAL ASM_PFX(InternalMemScanMem8)
 ASM_PFX(InternalMemScanMem8):
+    AARCH64_BTI(c)
     // Do not dereference srcin if no bytes to compare.
     cbz  cntin, .Lzero_length
     //
diff --git a/MdePkg/Library/BaseMemoryLibOptDxe/AArch64/SetMem.S b/MdePkg/Library/BaseMemoryLibOptDxe/AArch64/SetMem.S
index f9748405592057f0..b5618bf09d8bae2f 100644
--- a/MdePkg/Library/BaseMemoryLibOptDxe/AArch64/SetMem.S
+++ b/MdePkg/Library/BaseMemoryLibOptDxe/AArch64/SetMem.S
@@ -29,29 +29,34 @@
 
 ASM_GLOBAL ASM_PFX(InternalMemSetMem16)
 ASM_PFX(InternalMemSetMem16):
+    AARCH64_BTI(c)
     dup     v0.8H, valw
     lsl     count, count, #1
     b       0f
 
 ASM_GLOBAL ASM_PFX(InternalMemSetMem32)
 ASM_PFX(InternalMemSetMem32):
+    AARCH64_BTI(c)
     dup     v0.4S, valw
     lsl     count, count, #2
     b       0f
 
 ASM_GLOBAL ASM_PFX(InternalMemSetMem64)
 ASM_PFX(InternalMemSetMem64):
+    AARCH64_BTI(c)
     dup     v0.2D, val
     lsl     count, count, #3
     b       0f
 
 ASM_GLOBAL ASM_PFX(InternalMemZeroMem)
 ASM_PFX(InternalMemZeroMem):
+    AARCH64_BTI(c)
     movi    v0.16B, #0
     b       0f
 
 ASM_GLOBAL ASM_PFX(InternalMemSetMem)
 ASM_PFX(InternalMemSetMem):
+    AARCH64_BTI(c)
     dup     v0.16B, valw
 0:  add     dstend, dstin, count
     mov     val, v0.D[0]
-- 
2.39.2



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#101930): https://edk2.groups.io/g/devel/message/101930
Mute This Topic: https://groups.io/mt/97879287/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-




More information about the edk2-devel-archive mailing list