As the ASM_FUNC() macro performs a section switch, the preceding .balign directive applies the alignment constraint to the current location in the previous section. As the linker may not merge the sections in-order, ArmReplaceLiveTranslationEntry() may be left unaligned.
Replace the explicit invocation of .balign with the ASM_FUNC_ALIGN() macro, which guarantees the alignment constraint is applied correctly. Reviewed-by: Leif Lindholm <quic_llind...@quicinc.com> Signed-off-by: Marvin Häuser <mhaeu...@posteo.de> Cc: Leif Lindholm <quic_llind...@quicinc.com> Cc: Ard Biesheuvel <ardb+tianoc...@kernel.org> Cc: Sami Mujawar <sami.muja...@arm.com> Cc: Vitaly Cheptsov <vit9...@protonmail.com> --- ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibReplaceEntry.S | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibReplaceEntry.S b/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibReplaceEntry.S index e936a5be4e11..7627aeb95464 100644 --- a/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibReplaceEntry.S +++ b/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibReplaceEntry.S @@ -69,17 +69,16 @@ .L2_\@: .endm - // Align this routine to a log2 upper bound of its size, so that it is - // guaranteed not to cross a page or block boundary. - .balign 0x200 - //VOID //ArmReplaceLiveTranslationEntry ( // IN UINT64 *Entry, // IN UINT64 Value, // IN UINT64 Address // ) -ASM_FUNC(ArmReplaceLiveTranslationEntry) +// +// Align this routine to a log2 upper bound of its size, so that it is +// guaranteed not to cross a page or block boundary. +ASM_FUNC_ALIGN(ArmReplaceLiveTranslationEntry, 0x200) // disable interrupts mrs x4, daif -- 2.40.0 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#103122): https://edk2.groups.io/g/devel/message/103122 Mute This Topic: https://groups.io/mt/98330365/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-