1 #------------------------------------------------------------------------------ 2 # 3 # Copyright (c) 2008, Intel Corporation. All rights reserved.<BR> 4 # This program and the accompanying materials 5 # are licensed and made available under the terms and conditions of the BSD License 6 # which accompanies this distribution. The full text of the license may be found at 7 # http://opensource.org/licenses/bsd-license.php 8 # 9 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 10 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 11 # 12 # Module Name: 13 # 14 # EfiSetMemRep4.S 15 # 16 # Abstract: 17 # 18 # SetMem function 19 # 20 # Notes: 21 # 22 #------------------------------------------------------------------------------ 23 #include <EfiBind.h> 24 25 .code: 26 27 .globl ASM_PFX(EfiCommonLibCopyMem) 28 29 #------------------------------------------------------------------------------ 30 # VOID 31 # EfiCommonLibSetMem ( 32 # OUT VOID *Buffer, 33 # IN UINTN Size, 34 # IN UINT8 Value 35 # ); 36 #------------------------------------------------------------------------------ 37 ASM_PFX(EfiCommonLibSetMem): 38 push %rdi 39 cmp $0x0,%rdx 40 je SetDone 41 mov %rcx,%rdi 42 mov %r8b,%al 43 mov %al,%ah 44 shrd $0x10,%eax,%ecx 45 shld $0x10,%ecx,%eax 46 mov %rdx,%rcx 47 shr $0x2,%rcx 48 rep stos %eax,%es:(%rdi) 49 mov %rdx,%rcx 50 and $0x3,%rcx 51 rep stos %al,%es:(%rdi) 52 SetDone: 53 pop %rdi 54 retq 55