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>
51 lines
1.1 KiB
NASM
51 lines
1.1 KiB
NASM
;------------------------------------------------------------------------------
|
|
;
|
|
; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
|
|
; SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
;
|
|
; Module Name:
|
|
;
|
|
; ZeroMem.nasm
|
|
;
|
|
; Abstract:
|
|
;
|
|
; ZeroMem function
|
|
;
|
|
; Notes:
|
|
;
|
|
;------------------------------------------------------------------------------
|
|
|
|
DEFAULT REL
|
|
SECTION .text
|
|
|
|
;------------------------------------------------------------------------------
|
|
; VOID *
|
|
; InternalMemZeroMem (
|
|
; IN VOID *Buffer,
|
|
; IN UINTN Count
|
|
; );
|
|
;------------------------------------------------------------------------------
|
|
global ASM_PFX(InternalMemZeroMem)
|
|
ASM_PFX(InternalMemZeroMem):
|
|
push rdi
|
|
mov rdi, rcx
|
|
mov rcx, rdx
|
|
mov r8, rdi
|
|
and edx, 7
|
|
shr rcx, 3
|
|
jz @ZeroBytes
|
|
pxor mm0, mm0
|
|
.0:
|
|
movntq [rdi], mm0
|
|
add rdi, 8
|
|
loop .0
|
|
mfence
|
|
@ZeroBytes:
|
|
xor eax, eax
|
|
mov ecx, edx
|
|
rep stosb
|
|
mov rax, r8
|
|
pop rdi
|
|
ret
|
|
|