ZeroMem.asm revision 4fd606d1f5abe38e1f42c38de1d2e895166bd0f4
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync;------------------------------------------------------------------------------
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync; This program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync; are licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync; which accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync; Module Name:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync; ZeroMem function
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync;------------------------------------------------------------------------------
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync;------------------------------------------------------------------------------
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync; InternalMemZeroMem (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync; IN VOID *Buffer,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync; IN UINTN Count
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync;------------------------------------------------------------------------------
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncInternalMemZeroMem PROC USES rdi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mov rdi, rcx
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync xor rcx, rcx
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync xor eax, eax
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sub rcx, rdi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync and rcx, 15
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mov r8, rdi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync cmp rcx, rdx
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync cmova rcx, rdx
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sub rdx, rcx
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mov rcx, rdx
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync and edx, 15
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync jz @ZeroBytes
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync pxor xmm0, xmm0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync movntdq [rdi], xmm0 ; rdi should be 16-byte aligned
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync add rdi, 16
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mov ecx, edx
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mov rax, r8
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncInternalMemZeroMem ENDP