]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Library/BaseMemoryLibSse2/X64/ZeroMem.nasm
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdePkg / Library / BaseMemoryLibSse2 / X64 / ZeroMem.nasm
CommitLineData
41a275ba
JJ
1;------------------------------------------------------------------------------\r
2;\r
3; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
9344f092 4; SPDX-License-Identifier: BSD-2-Clause-Patent\r
41a275ba
JJ
5;\r
6; Module Name:\r
7;\r
8; ZeroMem.nasm\r
9;\r
10; Abstract:\r
11;\r
12; ZeroMem function\r
13;\r
14; Notes:\r
15;\r
16;------------------------------------------------------------------------------\r
17\r
18 DEFAULT REL\r
19 SECTION .text\r
20\r
21;------------------------------------------------------------------------------\r
22; VOID *\r
23; InternalMemZeroMem (\r
24; IN VOID *Buffer,\r
25; IN UINTN Count\r
26; )\r
27;------------------------------------------------------------------------------\r
28global ASM_PFX(InternalMemZeroMem)\r
29ASM_PFX(InternalMemZeroMem):\r
30 push rdi\r
31 mov rdi, rcx\r
32 xor rcx, rcx\r
33 xor eax, eax\r
34 sub rcx, rdi\r
d25fd871 35 and rcx, 63\r
41a275ba
JJ
36 mov r8, rdi\r
37 jz .0\r
38 cmp rcx, rdx\r
39 cmova rcx, rdx\r
40 sub rdx, rcx\r
41 rep stosb\r
42.0:\r
43 mov rcx, rdx\r
d25fd871
CJ
44 and edx, 63\r
45 shr rcx, 6\r
41a275ba
JJ
46 jz @ZeroBytes\r
47 pxor xmm0, xmm0\r
48.1:\r
d25fd871
CJ
49 movntdq [rdi], xmm0\r
50 movntdq [rdi + 16], xmm0\r
51 movntdq [rdi + 32], xmm0\r
52 movntdq [rdi + 48], xmm0\r
53 add rdi, 64\r
41a275ba
JJ
54 loop .1\r
55 mfence\r
56@ZeroBytes:\r
57 mov ecx, edx\r
58 rep stosb\r
59 mov rax, r8\r
60 pop rdi\r
61 ret\r
62\r