]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Library/BaseMemoryLibSse2/Ia32/ZeroMem.nasm
MdePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdePkg / Library / BaseMemoryLibSse2 / Ia32 / ZeroMem.nasm
CommitLineData
37968f40
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
37968f40
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 SECTION .text\r
19\r
20;------------------------------------------------------------------------------\r
21; VOID *\r
22; EFIAPI\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 edi\r
31 mov edi, [esp + 8]\r
32 mov edx, [esp + 12]\r
33 xor ecx, ecx\r
34 sub ecx, edi\r
35 xor eax, eax\r
36 and ecx, 15\r
37 jz .0\r
38 cmp ecx, edx\r
39 cmova ecx, edx\r
40 sub edx, ecx\r
41 rep stosb\r
42.0:\r
43 mov ecx, edx\r
44 and edx, 15\r
45 shr ecx, 4\r
46 jz @ZeroBytes\r
47 pxor xmm0, xmm0\r
48.1:\r
49 movntdq [edi], xmm0\r
50 add edi, 16\r
51 loop .1\r
52 mfence\r
53@ZeroBytes:\r
54 mov ecx, edx\r
55 rep stosb\r
56 mov eax, [esp + 8]\r
57 pop edi\r
58 ret\r
59\r