REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3790 Replace Opcode with the corresponding instructions. The code changes have been verified with CompareBuild.py tool, which can be used to compare the results of two different EDK II builds to determine if they generate the same binaries. (tool link: https://github.com/mdkinney/edk2/tree/sandbox/CompareBuild) Signed-off-by: Jason Lou <yun.lou@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn> Cc: Zhiguang Liu <zhiguang.liu@intel.com>
54 lines
1.2 KiB
NASM
54 lines
1.2 KiB
NASM
;------------------------------------------------------------------------------
|
|
;
|
|
; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
|
|
; SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
;
|
|
; Module Name:
|
|
;
|
|
; SetMem16.nasm
|
|
;
|
|
; Abstract:
|
|
;
|
|
; SetMem16 function
|
|
;
|
|
; Notes:
|
|
;
|
|
;------------------------------------------------------------------------------
|
|
|
|
DEFAULT REL
|
|
SECTION .text
|
|
|
|
;------------------------------------------------------------------------------
|
|
; VOID *
|
|
; EFIAPI
|
|
; InternalMemSetMem16 (
|
|
; OUT VOID *Buffer,
|
|
; IN UINTN Length,
|
|
; IN UINT16 Value
|
|
; );
|
|
;------------------------------------------------------------------------------
|
|
global ASM_PFX(InternalMemSetMem16)
|
|
ASM_PFX(InternalMemSetMem16):
|
|
push rdi
|
|
mov rax, r8
|
|
movq mm0, rax
|
|
mov r8, rcx
|
|
mov rdi, r8
|
|
mov rcx, rdx
|
|
and edx, 3
|
|
shr rcx, 2
|
|
jz @SetWords
|
|
pshufw mm0, mm0, 0
|
|
.0:
|
|
movntq [rdi], mm0
|
|
add rdi, 8
|
|
loop .0
|
|
mfence
|
|
@SetWords:
|
|
mov ecx, edx
|
|
rep stosw
|
|
mov rax, r8
|
|
pop rdi
|
|
ret
|
|
|