]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/X64/EfiSetMemRep4.S
Fixed issues compiling for Apple gcc on IA-32
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Library / EfiCommonLib / X64 / EfiSetMemRep4.S
CommitLineData
e8de4680
A
1#------------------------------------------------------------------------------
2#
3# Copyright (c) 2008, Intel Corporation
4# All rights reserved. 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