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#------------------------------------------------------------------------------ 37ASM_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) 52SetDone: 53 pop %rdi 54 retq 55