mirror of https://github.com/acidanthera/audk.git
MdePkg/BaseMemoryLibOptDxe AARCH64: Make asm files BTI compatible
Add the BTI instructions and the associated note to make the AArch64 asm objects compatible with BTI enforcement. Signed-off-by: Ard Biesheuvel <ardb@kernel.org> Reviewed-by: Leif Lindholm <quic_llindhol@quicinc.com> Reviewed-by: Oliver Smith-Denny <osd@smith-denny.com>
This commit is contained in:
parent
c4c7fb2174
commit
0ee255f50a
|
@ -8,6 +8,7 @@
|
||||||
.align 5
|
.align 5
|
||||||
ASM_GLOBAL ASM_PFX(InternalMemCompareGuid)
|
ASM_GLOBAL ASM_PFX(InternalMemCompareGuid)
|
||||||
ASM_PFX(InternalMemCompareGuid):
|
ASM_PFX(InternalMemCompareGuid):
|
||||||
|
AARCH64_BTI(c)
|
||||||
mov x2, xzr
|
mov x2, xzr
|
||||||
ldp x3, x4, [x0]
|
ldp x3, x4, [x0]
|
||||||
cbz x1, 0f
|
cbz x1, 0f
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
.p2align 6
|
.p2align 6
|
||||||
ASM_GLOBAL ASM_PFX(InternalMemCompareMem)
|
ASM_GLOBAL ASM_PFX(InternalMemCompareMem)
|
||||||
ASM_PFX(InternalMemCompareMem):
|
ASM_PFX(InternalMemCompareMem):
|
||||||
|
AARCH64_BTI(c)
|
||||||
eor tmp1, src1, src2
|
eor tmp1, src1, src2
|
||||||
tst tmp1, #7
|
tst tmp1, #7
|
||||||
b.ne .Lmisaligned8
|
b.ne .Lmisaligned8
|
||||||
|
|
|
@ -178,6 +178,7 @@ L(copy_long):
|
||||||
|
|
||||||
ASM_GLOBAL ASM_PFX(InternalMemCopyMem)
|
ASM_GLOBAL ASM_PFX(InternalMemCopyMem)
|
||||||
ASM_PFX(InternalMemCopyMem):
|
ASM_PFX(InternalMemCopyMem):
|
||||||
|
AARCH64_BTI(c)
|
||||||
sub tmp2, dstin, src
|
sub tmp2, dstin, src
|
||||||
cmp count, 96
|
cmp count, 96
|
||||||
ccmp tmp2, count, 2, hi
|
ccmp tmp2, count, 2, hi
|
||||||
|
|
|
@ -45,6 +45,7 @@
|
||||||
|
|
||||||
ASM_GLOBAL ASM_PFX(InternalMemScanMem8)
|
ASM_GLOBAL ASM_PFX(InternalMemScanMem8)
|
||||||
ASM_PFX(InternalMemScanMem8):
|
ASM_PFX(InternalMemScanMem8):
|
||||||
|
AARCH64_BTI(c)
|
||||||
// Do not dereference srcin if no bytes to compare.
|
// Do not dereference srcin if no bytes to compare.
|
||||||
cbz cntin, .Lzero_length
|
cbz cntin, .Lzero_length
|
||||||
//
|
//
|
||||||
|
|
|
@ -29,29 +29,34 @@
|
||||||
|
|
||||||
ASM_GLOBAL ASM_PFX(InternalMemSetMem16)
|
ASM_GLOBAL ASM_PFX(InternalMemSetMem16)
|
||||||
ASM_PFX(InternalMemSetMem16):
|
ASM_PFX(InternalMemSetMem16):
|
||||||
|
AARCH64_BTI(c)
|
||||||
dup v0.8H, valw
|
dup v0.8H, valw
|
||||||
lsl count, count, #1
|
lsl count, count, #1
|
||||||
b 0f
|
b 0f
|
||||||
|
|
||||||
ASM_GLOBAL ASM_PFX(InternalMemSetMem32)
|
ASM_GLOBAL ASM_PFX(InternalMemSetMem32)
|
||||||
ASM_PFX(InternalMemSetMem32):
|
ASM_PFX(InternalMemSetMem32):
|
||||||
|
AARCH64_BTI(c)
|
||||||
dup v0.4S, valw
|
dup v0.4S, valw
|
||||||
lsl count, count, #2
|
lsl count, count, #2
|
||||||
b 0f
|
b 0f
|
||||||
|
|
||||||
ASM_GLOBAL ASM_PFX(InternalMemSetMem64)
|
ASM_GLOBAL ASM_PFX(InternalMemSetMem64)
|
||||||
ASM_PFX(InternalMemSetMem64):
|
ASM_PFX(InternalMemSetMem64):
|
||||||
|
AARCH64_BTI(c)
|
||||||
dup v0.2D, val
|
dup v0.2D, val
|
||||||
lsl count, count, #3
|
lsl count, count, #3
|
||||||
b 0f
|
b 0f
|
||||||
|
|
||||||
ASM_GLOBAL ASM_PFX(InternalMemZeroMem)
|
ASM_GLOBAL ASM_PFX(InternalMemZeroMem)
|
||||||
ASM_PFX(InternalMemZeroMem):
|
ASM_PFX(InternalMemZeroMem):
|
||||||
|
AARCH64_BTI(c)
|
||||||
movi v0.16B, #0
|
movi v0.16B, #0
|
||||||
b 0f
|
b 0f
|
||||||
|
|
||||||
ASM_GLOBAL ASM_PFX(InternalMemSetMem)
|
ASM_GLOBAL ASM_PFX(InternalMemSetMem)
|
||||||
ASM_PFX(InternalMemSetMem):
|
ASM_PFX(InternalMemSetMem):
|
||||||
|
AARCH64_BTI(c)
|
||||||
dup v0.16B, valw
|
dup v0.16B, valw
|
||||||
0: add dstend, dstin, count
|
0: add dstend, dstin, count
|
||||||
mov val, v0.D[0]
|
mov val, v0.D[0]
|
||||||
|
|
Loading…
Reference in New Issue