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>
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			NASM
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			NASM
		
	
	
	
	
	
| ;------------------------------------------------------------------------------
 | |
| ;
 | |
| ; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
 | |
| ; SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| ;
 | |
| ; Module Name:
 | |
| ;
 | |
| ;   SetMem.nasm
 | |
| ;
 | |
| ; Abstract:
 | |
| ;
 | |
| ;   SetMem function
 | |
| ;
 | |
| ; Notes:
 | |
| ;
 | |
| ;------------------------------------------------------------------------------
 | |
| 
 | |
|     DEFAULT REL
 | |
|     SECTION .text
 | |
| 
 | |
| ;------------------------------------------------------------------------------
 | |
| ; VOID *
 | |
| ; EFIAPI
 | |
| ; InternalMemSetMem (
 | |
| ;   OUT     VOID                      *Buffer,
 | |
| ;   IN      UINTN                     Length,
 | |
| ;   IN      UINT8                     Value
 | |
| ;   );
 | |
| ;------------------------------------------------------------------------------
 | |
| global ASM_PFX(InternalMemSetMem)
 | |
| ASM_PFX(InternalMemSetMem):
 | |
|     push    rdi
 | |
|     mov     rax, r8
 | |
|     mov     ah, al
 | |
|     movq    mm0, rax
 | |
|     mov     r8, rcx
 | |
|     mov     rdi, r8                     ; rdi <- Buffer
 | |
|     mov     rcx, rdx
 | |
|     and     edx, 7
 | |
|     shr     rcx, 3
 | |
|     jz      @SetBytes
 | |
|     pshufw  mm0, mm0, 0
 | |
| .0:
 | |
|     movntq  [rdi], mm0
 | |
|     add     rdi, 8
 | |
|     loop    .0
 | |
|     mfence
 | |
| @SetBytes:
 | |
|     mov     ecx, edx
 | |
|     rep     stosb
 | |
|     mov     rax, r8
 | |
|     pop     rdi
 | |
|     ret
 | |
| 
 |