]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Library/CompilerStub/X64/memsetRep8.asm
16cb026df17ab2fd6337ee485d7862ba84284c6c
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Library / CompilerStub / X64 / memsetRep8.asm
1 ;------------------------------------------------------------------------------
2 ;
3 ; Copyright (c) 2007, 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 ; memsetRep8.asm
15 ;
16 ; Abstract:
17 ;
18 ; SetMem function
19 ;
20 ; Notes:
21 ;
22 ;------------------------------------------------------------------------------
23
24 .code
25
26 ;------------------------------------------------------------------------------
27 ; VOID
28 ; memset (
29 ; OUT VOID *Buffer,
30 ; IN UINT8 Value,
31 ; IN UINTN Length
32 ; );
33 ;------------------------------------------------------------------------------
34 memset PROC USES rdi rbx
35 cmp r8, 0 ; if Size == 0, do nothing
36 mov r9, rcx
37 je @SetDone
38 mov rax, rdx
39 mov bl, al
40 mov bh, bl
41 mov ax, bx
42 shl rax, 10h
43 mov ax, bx
44 mov ebx, eax
45 shl rax, 20h
46 mov eax, ebx
47 mov rdi, rcx
48 mov rcx, r8
49 shr rcx, 3
50 rep stosq
51 mov rcx, rdx
52 and rcx, 7
53 rep stosb
54 @SetDone:
55 mov rax, r9
56 ret
57 memset ENDP
58
59 END
60