mirror of https://github.com/acidanthera/audk.git
Remove old dir
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@209 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
6e3b8c4716
commit
2dec64ee9b
|
@ -1,46 +0,0 @@
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
;
|
|
||||||
; Copyright (c) 2006, Intel Corporation
|
|
||||||
; All rights reserved. This program and the accompanying materials
|
|
||||||
; are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
; which accompanies this distribution. The full text of the license may be found at
|
|
||||||
; http://opensource.org/licenses/bsd-license.php
|
|
||||||
;
|
|
||||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
;
|
|
||||||
; Module Name:
|
|
||||||
;
|
|
||||||
; CompareMem.Asm
|
|
||||||
;
|
|
||||||
; Abstract:
|
|
||||||
;
|
|
||||||
; CompareMem function
|
|
||||||
;
|
|
||||||
; Notes:
|
|
||||||
;
|
|
||||||
; The following BaseMemoryLib instances share the same version of this file:
|
|
||||||
;
|
|
||||||
; BaseMemoryLibRepStr
|
|
||||||
; BaseMemoryLibMmx
|
|
||||||
; BaseMemoryLibSse2
|
|
||||||
;
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686
|
|
||||||
.model flat,C
|
|
||||||
.code
|
|
||||||
|
|
||||||
InternalMemCompareMem PROC USES esi edi
|
|
||||||
mov esi, [esp + 12]
|
|
||||||
mov edi, [esp + 16]
|
|
||||||
mov ecx, [esp + 20]
|
|
||||||
repe cmpsb
|
|
||||||
movzx eax, byte ptr [esi - 1]
|
|
||||||
movzx edx, byte ptr [edi - 1]
|
|
||||||
sub eax, edx
|
|
||||||
sub eax, edx
|
|
||||||
ret
|
|
||||||
InternalMemCompareMem ENDP
|
|
||||||
|
|
||||||
END
|
|
|
@ -1,50 +0,0 @@
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006, Intel Corporation
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
#
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
# Module Name:
|
|
||||||
#
|
|
||||||
# CompareMem.Asm
|
|
||||||
#
|
|
||||||
# Abstract:
|
|
||||||
#
|
|
||||||
# CompareMem function
|
|
||||||
#
|
|
||||||
# Notes:
|
|
||||||
#
|
|
||||||
# The following BaseMemoryLib instances share the same version of this file:
|
|
||||||
#
|
|
||||||
# BaseMemoryLibRepStr
|
|
||||||
# BaseMemoryLibMmx
|
|
||||||
# BaseMemoryLibSse2
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686:
|
|
||||||
#.MODEL flat,C
|
|
||||||
.code:
|
|
||||||
|
|
||||||
.global _InternalMemCompareMem
|
|
||||||
_InternalMemCompareMem:
|
|
||||||
push %esi
|
|
||||||
push %edi
|
|
||||||
movl 12(%esp), %esi
|
|
||||||
movl 16(%esp), %edi
|
|
||||||
movl 20(%esp), %ecx
|
|
||||||
repe cmpsb
|
|
||||||
movzbl -1(%esi), %eax
|
|
||||||
movzbl -1(%edi), %edx
|
|
||||||
subl %edx, %eax
|
|
||||||
subl %edx, %eax
|
|
||||||
pop %edi
|
|
||||||
pop %esi
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
|
@ -1,86 +0,0 @@
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
;
|
|
||||||
; Copyright (c) 2006, Intel Corporation
|
|
||||||
; All rights reserved. This program and the accompanying materials
|
|
||||||
; are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
; which accompanies this distribution. The full text of the license may be found at
|
|
||||||
; http://opensource.org/licenses/bsd-license.php
|
|
||||||
;
|
|
||||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
;
|
|
||||||
; Module Name:
|
|
||||||
;
|
|
||||||
; CopyMem.asm
|
|
||||||
;
|
|
||||||
; Abstract:
|
|
||||||
;
|
|
||||||
; CopyMem function
|
|
||||||
;
|
|
||||||
; Notes:
|
|
||||||
;
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686
|
|
||||||
.model flat,C
|
|
||||||
.xmm
|
|
||||||
.code
|
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
; VOID *
|
|
||||||
; _mem_CopyMem (
|
|
||||||
; IN VOID *Destination,
|
|
||||||
; IN VOID *Source,
|
|
||||||
; IN UINTN Count
|
|
||||||
; )
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
InternalMemCopyMem PROC USES esi edi
|
|
||||||
mov esi, [esp + 16] ; esi <- Source
|
|
||||||
mov edi, [esp + 12] ; edi <- Destination
|
|
||||||
mov edx, [esp + 20] ; edx <- Count
|
|
||||||
lea eax, [edi + edx - 1] ; eax <- End of Destination
|
|
||||||
cmp esi, edi
|
|
||||||
jae @F
|
|
||||||
cmp eax, esi ; Overlapped?
|
|
||||||
jae @CopyBackward ; Copy backward if overlapped
|
|
||||||
@@:
|
|
||||||
xor ecx, ecx
|
|
||||||
sub ecx, esi
|
|
||||||
and ecx, 7 ; ecx + esi aligns on 8-byte boundary
|
|
||||||
jz @F
|
|
||||||
cmp ecx, edx
|
|
||||||
cmova ecx, edx
|
|
||||||
sub edx, ecx ; edx <- remaining bytes to copy
|
|
||||||
rep movsb
|
|
||||||
@@:
|
|
||||||
mov ecx, edx
|
|
||||||
and edx, 7
|
|
||||||
shr ecx, 3 ; ecx <- # of Qwords to copy
|
|
||||||
jz @CopyBytes
|
|
||||||
push eax
|
|
||||||
push eax
|
|
||||||
movq [esp], mm0 ; save mm0
|
|
||||||
@@:
|
|
||||||
movq mm0, [esi]
|
|
||||||
movntq [edi], mm0
|
|
||||||
add esi, 8
|
|
||||||
add edi, 8
|
|
||||||
loop @B
|
|
||||||
mfence
|
|
||||||
movq mm0, [esp] ; restore mm0
|
|
||||||
pop ecx ; stack cleanup
|
|
||||||
pop ecx ; stack cleanup
|
|
||||||
jmp @CopyBytes
|
|
||||||
@CopyBackward:
|
|
||||||
mov edi, eax ; edi <- Last byte in Destination
|
|
||||||
lea esi, [esi + edx - 1] ; esi <- Last byte in Source
|
|
||||||
std
|
|
||||||
@CopyBytes:
|
|
||||||
mov ecx, edx
|
|
||||||
rep movsb
|
|
||||||
cld
|
|
||||||
mov eax, [esp + 12]
|
|
||||||
ret
|
|
||||||
InternalMemCopyMem ENDP
|
|
||||||
|
|
||||||
END
|
|
|
@ -1,90 +0,0 @@
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006, Intel Corporation
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
#
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
# Module Name:
|
|
||||||
#
|
|
||||||
# CopyMem.asm
|
|
||||||
#
|
|
||||||
# Abstract:
|
|
||||||
#
|
|
||||||
# CopyMem function
|
|
||||||
#
|
|
||||||
# Notes:
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686:
|
|
||||||
#.MODEL flat,C
|
|
||||||
.xmm:
|
|
||||||
.code:
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# VOID *
|
|
||||||
# _mem_CopyMem (
|
|
||||||
# IN VOID *Destination,
|
|
||||||
# IN VOID *Source,
|
|
||||||
# IN UINTN Count
|
|
||||||
# )
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
.global _InternalMemCopyMem
|
|
||||||
_InternalMemCopyMem:
|
|
||||||
push %esi
|
|
||||||
push %edi
|
|
||||||
movl 16(%esp), %esi # esi <- Source
|
|
||||||
movl 12(%esp), %edi # edi <- Destination
|
|
||||||
movl 20(%esp), %edx # edx <- Count
|
|
||||||
leal -1(%edi,%edx,), %eax # eax <- End of Destination
|
|
||||||
cmpl %edi, %esi
|
|
||||||
jae L0
|
|
||||||
cmpl %esi, %eax # Overlapped?
|
|
||||||
jae @CopyBackward # Copy backward if overlapped
|
|
||||||
L0:
|
|
||||||
xorl %ecx, %ecx
|
|
||||||
subl %esi, %ecx
|
|
||||||
andl $7, %ecx # ecx + esi aligns on 8-byte boundary
|
|
||||||
jz L1
|
|
||||||
cmpl %edx, %ecx
|
|
||||||
cmova %edx, %ecx
|
|
||||||
subl %ecx, %edx # edx <- remaining bytes to copy
|
|
||||||
rep
|
|
||||||
movsb
|
|
||||||
L1:
|
|
||||||
movl %edx, %ecx
|
|
||||||
andl $7, %edx
|
|
||||||
shrl $3, %ecx # ecx <- # of Qwords to copy
|
|
||||||
jz @CopyBytes
|
|
||||||
pushl %eax
|
|
||||||
pushl %eax
|
|
||||||
movq %mm0, (%esp) # save mm0
|
|
||||||
L2:
|
|
||||||
movq (%esi), %mm0
|
|
||||||
movntq %mm0, (%edi)
|
|
||||||
addl $8, %esi
|
|
||||||
addl $8, %edi
|
|
||||||
loop L2
|
|
||||||
mfence
|
|
||||||
movq (%esp), %mm0 # restore mm0
|
|
||||||
popl %ecx # stack cleanup
|
|
||||||
popl %ecx # stack cleanup
|
|
||||||
jmp @CopyBytes
|
|
||||||
@CopyBackward:
|
|
||||||
movl %eax, %edi # edi <- Last byte in Destination
|
|
||||||
leal -1(%esi,%edx,), %esi # esi <- Last byte in Source
|
|
||||||
std
|
|
||||||
@CopyBytes:
|
|
||||||
movl %edx, %ecx
|
|
||||||
rep
|
|
||||||
movsb
|
|
||||||
cld
|
|
||||||
movl 12(%esp), %eax
|
|
||||||
push %esi
|
|
||||||
push %edi
|
|
||||||
ret
|
|
|
@ -1,44 +0,0 @@
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
;
|
|
||||||
; Copyright (c) 2006, Intel Corporation
|
|
||||||
; All rights reserved. This program and the accompanying materials
|
|
||||||
; are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
; which accompanies this distribution. The full text of the license may be found at
|
|
||||||
; http://opensource.org/licenses/bsd-license.php
|
|
||||||
;
|
|
||||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
;
|
|
||||||
; Module Name:
|
|
||||||
;
|
|
||||||
; ScanMem16.Asm
|
|
||||||
;
|
|
||||||
; Abstract:
|
|
||||||
;
|
|
||||||
; ScanMem16 function
|
|
||||||
;
|
|
||||||
; Notes:
|
|
||||||
;
|
|
||||||
; The following BaseMemoryLib instances share the same version of this file:
|
|
||||||
;
|
|
||||||
; BaseMemoryLibRepStr
|
|
||||||
; BaseMemoryLibMmx
|
|
||||||
; BaseMemoryLibSse2
|
|
||||||
;
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686
|
|
||||||
.model flat,C
|
|
||||||
.code
|
|
||||||
|
|
||||||
InternalMemScanMem16 PROC USES edi
|
|
||||||
mov ecx, [esp + 12]
|
|
||||||
mov edi, [esp + 8]
|
|
||||||
mov eax, [esp + 16]
|
|
||||||
repne scasw
|
|
||||||
lea eax, [edi - 2]
|
|
||||||
cmovnz eax, ecx
|
|
||||||
ret
|
|
||||||
InternalMemScanMem16 ENDP
|
|
||||||
|
|
||||||
END
|
|
|
@ -1,46 +0,0 @@
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006, Intel Corporation
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
#
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
# Module Name:
|
|
||||||
#
|
|
||||||
# ScanMem16.Asm
|
|
||||||
#
|
|
||||||
# Abstract:
|
|
||||||
#
|
|
||||||
# ScanMem16 function
|
|
||||||
#
|
|
||||||
# Notes:
|
|
||||||
#
|
|
||||||
# The following BaseMemoryLib instances share the same version of this file:
|
|
||||||
#
|
|
||||||
# BaseMemoryLibRepStr
|
|
||||||
# BaseMemoryLibMmx
|
|
||||||
# BaseMemoryLibSse2
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686:
|
|
||||||
#.MODEL flat,C
|
|
||||||
.code:
|
|
||||||
|
|
||||||
.global _InternalMemScanMem16
|
|
||||||
_InternalMemScanMem16:
|
|
||||||
push %edi
|
|
||||||
movl 12(%esp), %ecx
|
|
||||||
movl 8(%esp), %edi
|
|
||||||
movl 16(%esp), %eax
|
|
||||||
repne scasw
|
|
||||||
leal -2(%edi), %eax
|
|
||||||
cmovnz %ecx, %eax
|
|
||||||
pop %edi
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
|
@ -1,44 +0,0 @@
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
;
|
|
||||||
; Copyright (c) 2006, Intel Corporation
|
|
||||||
; All rights reserved. This program and the accompanying materials
|
|
||||||
; are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
; which accompanies this distribution. The full text of the license may be found at
|
|
||||||
; http://opensource.org/licenses/bsd-license.php
|
|
||||||
;
|
|
||||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
;
|
|
||||||
; Module Name:
|
|
||||||
;
|
|
||||||
; ScanMem32.Asm
|
|
||||||
;
|
|
||||||
; Abstract:
|
|
||||||
;
|
|
||||||
; ScanMem32 function
|
|
||||||
;
|
|
||||||
; Notes:
|
|
||||||
;
|
|
||||||
; The following BaseMemoryLib instances share the same version of this file:
|
|
||||||
;
|
|
||||||
; BaseMemoryLibRepStr
|
|
||||||
; BaseMemoryLibMmx
|
|
||||||
; BaseMemoryLibSse2
|
|
||||||
;
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686
|
|
||||||
.model flat,C
|
|
||||||
.code
|
|
||||||
|
|
||||||
InternalMemScanMem32 PROC USES edi
|
|
||||||
mov ecx, [esp + 12]
|
|
||||||
mov edi, [esp + 8]
|
|
||||||
mov eax, [esp + 16]
|
|
||||||
repne scasd
|
|
||||||
lea eax, [edi - 4]
|
|
||||||
cmovnz eax, ecx
|
|
||||||
ret
|
|
||||||
InternalMemScanMem32 ENDP
|
|
||||||
|
|
||||||
END
|
|
|
@ -1,44 +0,0 @@
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006, Intel Corporation
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
#
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
# Module Name:
|
|
||||||
#
|
|
||||||
# ScanMem32.Asm
|
|
||||||
#
|
|
||||||
# Abstract:
|
|
||||||
#
|
|
||||||
# ScanMem32 function
|
|
||||||
#
|
|
||||||
# Notes:
|
|
||||||
#
|
|
||||||
# The following BaseMemoryLib instances share the same version of this file:
|
|
||||||
#
|
|
||||||
# BaseMemoryLibRepStr
|
|
||||||
# BaseMemoryLibMmx
|
|
||||||
# BaseMemoryLibSse2
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686:
|
|
||||||
#.MODEL flat,C
|
|
||||||
.code:
|
|
||||||
|
|
||||||
.global _InternalMemScanMem32
|
|
||||||
_InternalMemScanMem32:
|
|
||||||
push %edi
|
|
||||||
movl 12(%esp), %ecx
|
|
||||||
movl 8(%esp), %edi
|
|
||||||
movl 16(%esp), %eax
|
|
||||||
repne scasl
|
|
||||||
leal -4(%edi), %eax
|
|
||||||
cmovnz %ecx, %eax
|
|
||||||
pop %edi
|
|
||||||
ret
|
|
|
@ -1,53 +0,0 @@
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
;
|
|
||||||
; Copyright (c) 2006, Intel Corporation
|
|
||||||
; All rights reserved. This program and the accompanying materials
|
|
||||||
; are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
; which accompanies this distribution. The full text of the license may be found at
|
|
||||||
; http://opensource.org/licenses/bsd-license.php
|
|
||||||
;
|
|
||||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
;
|
|
||||||
; Module Name:
|
|
||||||
;
|
|
||||||
; ScanMem64.Asm
|
|
||||||
;
|
|
||||||
; Abstract:
|
|
||||||
;
|
|
||||||
; ScanMem64 function
|
|
||||||
;
|
|
||||||
; Notes:
|
|
||||||
;
|
|
||||||
; The following BaseMemoryLib instances share the same version of this file:
|
|
||||||
;
|
|
||||||
; BaseMemoryLibRepStr
|
|
||||||
; BaseMemoryLibMmx
|
|
||||||
; BaseMemoryLibSse2
|
|
||||||
;
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686
|
|
||||||
.model flat,C
|
|
||||||
.code
|
|
||||||
|
|
||||||
InternalMemScanMem64 PROC USES edi
|
|
||||||
mov ecx, [esp + 12]
|
|
||||||
mov eax, [esp + 16]
|
|
||||||
mov edx, [esp + 20]
|
|
||||||
mov edi, [esp + 8]
|
|
||||||
@@:
|
|
||||||
cmp eax, [edi]
|
|
||||||
lea edi, [edi + 8]
|
|
||||||
loopne @B
|
|
||||||
jne @F
|
|
||||||
cmp edx, [edi - 4]
|
|
||||||
jecxz @F
|
|
||||||
jne @B
|
|
||||||
@@:
|
|
||||||
lea eax, [edi - 8]
|
|
||||||
cmovne eax, ecx
|
|
||||||
ret
|
|
||||||
InternalMemScanMem64 ENDP
|
|
||||||
|
|
||||||
END
|
|
|
@ -1,53 +0,0 @@
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006, Intel Corporation
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
#
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
# Module Name:
|
|
||||||
#
|
|
||||||
# ScanMem64.Asm
|
|
||||||
#
|
|
||||||
# Abstract:
|
|
||||||
#
|
|
||||||
# ScanMem64 function
|
|
||||||
#
|
|
||||||
# Notes:
|
|
||||||
#
|
|
||||||
# The following BaseMemoryLib instances share the same version of this file:
|
|
||||||
#
|
|
||||||
# BaseMemoryLibRepStr
|
|
||||||
# BaseMemoryLibMmx
|
|
||||||
# BaseMemoryLibSse2
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686:
|
|
||||||
#.MODEL flat,C
|
|
||||||
.code:
|
|
||||||
|
|
||||||
.global _InternalMemScanMem64
|
|
||||||
_InternalMemScanMem64:
|
|
||||||
push %edi
|
|
||||||
movl 12(%esp), %ecx
|
|
||||||
movl 16(%esp), %eax
|
|
||||||
movl 20(%esp), %edx
|
|
||||||
movl 8(%esp), %edi
|
|
||||||
L0:
|
|
||||||
cmpl (%edi), %eax
|
|
||||||
leal 8(%edi), %edi
|
|
||||||
loopne L0
|
|
||||||
jne L1
|
|
||||||
cmpl -4(%edi), %edx
|
|
||||||
jecxz L1
|
|
||||||
jne L0
|
|
||||||
L1:
|
|
||||||
leal -8(%edi), %eax
|
|
||||||
cmovne %ecx, %eax
|
|
||||||
pop %edi
|
|
||||||
ret
|
|
|
@ -1,44 +0,0 @@
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
;
|
|
||||||
; Copyright (c) 2006, Intel Corporation
|
|
||||||
; All rights reserved. This program and the accompanying materials
|
|
||||||
; are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
; which accompanies this distribution. The full text of the license may be found at
|
|
||||||
; http://opensource.org/licenses/bsd-license.php
|
|
||||||
;
|
|
||||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
;
|
|
||||||
; Module Name:
|
|
||||||
;
|
|
||||||
; ScanMem8.Asm
|
|
||||||
;
|
|
||||||
; Abstract:
|
|
||||||
;
|
|
||||||
; ScanMem8 function
|
|
||||||
;
|
|
||||||
; Notes:
|
|
||||||
;
|
|
||||||
; The following BaseMemoryLib instances share the same version of this file:
|
|
||||||
;
|
|
||||||
; BaseMemoryLibRepStr
|
|
||||||
; BaseMemoryLibMmx
|
|
||||||
; BaseMemoryLibSse2
|
|
||||||
;
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686
|
|
||||||
.model flat,C
|
|
||||||
.code
|
|
||||||
|
|
||||||
InternalMemScanMem8 PROC USES edi
|
|
||||||
mov ecx, [esp + 12]
|
|
||||||
mov edi, [esp + 8]
|
|
||||||
mov al, [esp + 16]
|
|
||||||
repne scasb
|
|
||||||
lea eax, [edi - 1]
|
|
||||||
cmovnz eax, ecx
|
|
||||||
ret
|
|
||||||
InternalMemScanMem8 ENDP
|
|
||||||
|
|
||||||
END
|
|
|
@ -1,44 +0,0 @@
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006, Intel Corporation
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
#
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
# Module Name:
|
|
||||||
#
|
|
||||||
# ScanMem8.Asm
|
|
||||||
#
|
|
||||||
# Abstract:
|
|
||||||
#
|
|
||||||
# ScanMem8 function
|
|
||||||
#
|
|
||||||
# Notes:
|
|
||||||
#
|
|
||||||
# The following BaseMemoryLib instances share the same version of this file:
|
|
||||||
#
|
|
||||||
# BaseMemoryLibRepStr
|
|
||||||
# BaseMemoryLibMmx
|
|
||||||
# BaseMemoryLibSse2
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686:
|
|
||||||
#.MODEL flat,C
|
|
||||||
.code:
|
|
||||||
|
|
||||||
.global _InternalMemScanMem8
|
|
||||||
_InternalMemScanMem8:
|
|
||||||
push %edi
|
|
||||||
movl 12(%esp), %ecx
|
|
||||||
movl 8(%esp), %edi
|
|
||||||
movb 16(%esp), %al
|
|
||||||
repne scasb
|
|
||||||
leal -1(%edi), %eax
|
|
||||||
cmovnz %ecx, %eax
|
|
||||||
pop %edi
|
|
||||||
ret
|
|
|
@ -1,66 +0,0 @@
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
;
|
|
||||||
; Copyright (c) 2006, Intel Corporation
|
|
||||||
; All rights reserved. This program and the accompanying materials
|
|
||||||
; are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
; which accompanies this distribution. The full text of the license may be found at
|
|
||||||
; http://opensource.org/licenses/bsd-license.php
|
|
||||||
;
|
|
||||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
;
|
|
||||||
; Module Name:
|
|
||||||
;
|
|
||||||
; SetMem.asm
|
|
||||||
;
|
|
||||||
; Abstract:
|
|
||||||
;
|
|
||||||
; SetMem function
|
|
||||||
;
|
|
||||||
; Notes:
|
|
||||||
;
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686
|
|
||||||
.model flat,C
|
|
||||||
.xmm
|
|
||||||
.code
|
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
; VOID *
|
|
||||||
; _mem_SetMem (
|
|
||||||
; IN VOID *Buffer,
|
|
||||||
; IN UINTN Count,
|
|
||||||
; IN UINT8 Value
|
|
||||||
; )
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
InternalMemSetMem PROC USES edi
|
|
||||||
mov ecx, [esp + 12] ; ecx <- Count
|
|
||||||
mov edi, [esp + 8] ; edi <- Buffer
|
|
||||||
mov edx, ecx
|
|
||||||
shr ecx, 3 ; # of Qwords to set
|
|
||||||
mov al, [esp + 16] ; al <- Value
|
|
||||||
jz @SetBytes
|
|
||||||
mov ah, al ; ax <- Value | (Value << 8)
|
|
||||||
push ecx
|
|
||||||
push ecx
|
|
||||||
movq [esp], mm0 ; save mm0
|
|
||||||
movd mm0, eax
|
|
||||||
pshufw mm0, mm0, 0 ; fill mm0 with 8 Value's
|
|
||||||
@@:
|
|
||||||
movntq [edi], mm0
|
|
||||||
add edi, 8
|
|
||||||
loop @B
|
|
||||||
mfence
|
|
||||||
movq mm0, [esp] ; restore mm0
|
|
||||||
pop ecx ; stack cleanup
|
|
||||||
pop ecx
|
|
||||||
@SetBytes:
|
|
||||||
and edx, 7
|
|
||||||
mov ecx, edx
|
|
||||||
rep stosb
|
|
||||||
mov eax, [esp + 8] ; eax <- Buffer as return value
|
|
||||||
ret
|
|
||||||
InternalMemSetMem ENDP
|
|
||||||
|
|
||||||
END
|
|
|
@ -1,67 +0,0 @@
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006, Intel Corporation
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
#
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
# Module Name:
|
|
||||||
#
|
|
||||||
# SetMem.asm
|
|
||||||
#
|
|
||||||
# Abstract:
|
|
||||||
#
|
|
||||||
# SetMem function
|
|
||||||
#
|
|
||||||
# Notes:
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686:
|
|
||||||
#.MODEL flat,C
|
|
||||||
.xmm:
|
|
||||||
.code:
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# VOID *
|
|
||||||
# _mem_SetMem (
|
|
||||||
# IN VOID *Buffer,
|
|
||||||
# IN UINTN Count,
|
|
||||||
# IN UINT8 Value
|
|
||||||
# )
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
.global _InternalMemSetMem
|
|
||||||
_InternalMemSetMem:
|
|
||||||
push %edi
|
|
||||||
movl 12(%esp), %ecx # ecx <- Count
|
|
||||||
movl 8(%esp), %edi # edi <- Buffer
|
|
||||||
movl %ecx, %edx
|
|
||||||
shrl $3, %ecx # # of Qwords to set
|
|
||||||
movb 16(%esp), %al # al <- Value
|
|
||||||
jz @SetBytes
|
|
||||||
movb %al, %ah # ax <- Value | (Value << 8)
|
|
||||||
pushl %ecx
|
|
||||||
pushl %ecx
|
|
||||||
movq %mm0, (%esp) # save mm0
|
|
||||||
movd %eax, %mm0
|
|
||||||
pshufw $0x0,%mm0,%mm0
|
|
||||||
L0:
|
|
||||||
movntq %mm0, (%edi)
|
|
||||||
addl $8, %edi
|
|
||||||
loop L0
|
|
||||||
mfence
|
|
||||||
movq (%esp), %mm0 # restore mm0
|
|
||||||
popl %ecx # stack cleanup
|
|
||||||
popl %ecx
|
|
||||||
@SetBytes:
|
|
||||||
andl $7, %edx
|
|
||||||
movl %edx, %ecx
|
|
||||||
rep
|
|
||||||
stosb
|
|
||||||
movl 8(%esp), %eax # eax <- Buffer as return value
|
|
||||||
pop %edi
|
|
||||||
ret
|
|
|
@ -1,59 +0,0 @@
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
;
|
|
||||||
; Copyright (c) 2006, Intel Corporation
|
|
||||||
; All rights reserved. This program and the accompanying materials
|
|
||||||
; are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
; which accompanies this distribution. The full text of the license may be found at
|
|
||||||
; http://opensource.org/licenses/bsd-license.php
|
|
||||||
;
|
|
||||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
;
|
|
||||||
; Module Name:
|
|
||||||
;
|
|
||||||
; SetMem16.asm
|
|
||||||
;
|
|
||||||
; Abstract:
|
|
||||||
;
|
|
||||||
; SetMem16 function
|
|
||||||
;
|
|
||||||
; Notes:
|
|
||||||
;
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686
|
|
||||||
.model flat,C
|
|
||||||
.xmm
|
|
||||||
.code
|
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
; VOID *
|
|
||||||
; _mem_SetMem16 (
|
|
||||||
; IN VOID *Buffer,
|
|
||||||
; IN UINTN Count,
|
|
||||||
; IN UINT16 Value
|
|
||||||
; )
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
InternalMemSetMem16 PROC USES edi
|
|
||||||
mov edx, [esp + 12]
|
|
||||||
mov edi, [esp + 8]
|
|
||||||
mov ecx, edx
|
|
||||||
and edx, 3
|
|
||||||
shr ecx, 2
|
|
||||||
mov eax, [esp + 16]
|
|
||||||
jz @SetWords
|
|
||||||
movd mm0, eax
|
|
||||||
pshufw mm0, mm0, 0
|
|
||||||
@@:
|
|
||||||
movntq [edi], mm0
|
|
||||||
add edi, 8
|
|
||||||
loop @B
|
|
||||||
mfence
|
|
||||||
@SetWords:
|
|
||||||
mov ecx, edx
|
|
||||||
rep stosw
|
|
||||||
mov eax, [esp + 8]
|
|
||||||
ret
|
|
||||||
InternalMemSetMem16 ENDP
|
|
||||||
|
|
||||||
END
|
|
|
@ -1,60 +0,0 @@
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006, Intel Corporation
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
#
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
# Module Name:
|
|
||||||
#
|
|
||||||
# SetMem16.asm
|
|
||||||
#
|
|
||||||
# Abstract:
|
|
||||||
#
|
|
||||||
# SetMem16 function
|
|
||||||
#
|
|
||||||
# Notes:
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686:
|
|
||||||
#.MODEL flat,C
|
|
||||||
.xmm:
|
|
||||||
.code:
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# VOID *
|
|
||||||
# _mem_SetMem16 (
|
|
||||||
# IN VOID *Buffer,
|
|
||||||
# IN UINTN Count,
|
|
||||||
# IN UINT16 Value
|
|
||||||
# )
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
.global _InternalMemSetMem16
|
|
||||||
_InternalMemSetMem16:
|
|
||||||
push %edi
|
|
||||||
movl 12(%esp), %edx
|
|
||||||
movl 8(%esp), %edi
|
|
||||||
movl %edx, %ecx
|
|
||||||
andl $3, %edx
|
|
||||||
shrl $2, %ecx
|
|
||||||
movl 16(%esp), %eax
|
|
||||||
jz @SetWords
|
|
||||||
movd %eax, %mm0
|
|
||||||
pshufw $0, %mm0, %mm0
|
|
||||||
L0:
|
|
||||||
movntq %mm0, (%edi)
|
|
||||||
addl $8, %edi
|
|
||||||
loop L0
|
|
||||||
mfence
|
|
||||||
@SetWords:
|
|
||||||
movl %edx, %ecx
|
|
||||||
rep
|
|
||||||
stosw
|
|
||||||
movl 8(%esp), %eax
|
|
||||||
pop %edi
|
|
||||||
ret
|
|
|
@ -1,59 +0,0 @@
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
;
|
|
||||||
; Copyright (c) 2006, Intel Corporation
|
|
||||||
; All rights reserved. This program and the accompanying materials
|
|
||||||
; are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
; which accompanies this distribution. The full text of the license may be found at
|
|
||||||
; http://opensource.org/licenses/bsd-license.php
|
|
||||||
;
|
|
||||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
;
|
|
||||||
; Module Name:
|
|
||||||
;
|
|
||||||
; SetMem32.asm
|
|
||||||
;
|
|
||||||
; Abstract:
|
|
||||||
;
|
|
||||||
; SetMem32 function
|
|
||||||
;
|
|
||||||
; Notes:
|
|
||||||
;
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686
|
|
||||||
.model flat,C
|
|
||||||
.xmm
|
|
||||||
.code
|
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
; VOID *
|
|
||||||
; _mem_SetMem32 (
|
|
||||||
; IN VOID *Buffer,
|
|
||||||
; IN UINTN Count,
|
|
||||||
; IN UINT32 Value
|
|
||||||
; )
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
InternalMemSetMem32 PROC USES edi
|
|
||||||
mov edx, [esp + 12]
|
|
||||||
mov edi, [esp + 8]
|
|
||||||
mov ecx, edx
|
|
||||||
shr ecx, 1
|
|
||||||
movd mm0, [esp + 16]
|
|
||||||
mov eax, edi
|
|
||||||
jz @SetDwords
|
|
||||||
pshufw mm0, mm0, 44h
|
|
||||||
@@:
|
|
||||||
movntq [edi], mm0
|
|
||||||
add edi, 8
|
|
||||||
loop @B
|
|
||||||
mfence
|
|
||||||
@SetDwords:
|
|
||||||
test dl, 1
|
|
||||||
jz @F
|
|
||||||
movd [edi], mm0
|
|
||||||
@@:
|
|
||||||
ret
|
|
||||||
InternalMemSetMem32 ENDP
|
|
||||||
|
|
||||||
END
|
|
|
@ -1,59 +0,0 @@
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006, Intel Corporation
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
#
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
# Module Name:
|
|
||||||
#
|
|
||||||
# SetMem32.asm
|
|
||||||
#
|
|
||||||
# Abstract:
|
|
||||||
#
|
|
||||||
# SetMem32 function
|
|
||||||
#
|
|
||||||
# Notes:
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686:
|
|
||||||
#.MODEL flat,C
|
|
||||||
.xmm:
|
|
||||||
.code:
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# VOID *
|
|
||||||
# _mem_SetMem32 (
|
|
||||||
# IN VOID *Buffer,
|
|
||||||
# IN UINTN Count,
|
|
||||||
# IN UINT32 Value
|
|
||||||
# )
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
.global _InternalMemSetMem32
|
|
||||||
_InternalMemSetMem32:
|
|
||||||
push %edi
|
|
||||||
movl 12(%esp), %edx
|
|
||||||
movl 8(%esp), %edi
|
|
||||||
movl %edx, %ecx
|
|
||||||
shrl %ecx
|
|
||||||
movd 16(%esp), %mm0
|
|
||||||
movl %edi, %eax
|
|
||||||
jz @SetDwords
|
|
||||||
pshufw $0x44, %mm0, %mm0
|
|
||||||
L0:
|
|
||||||
movntq %mm0, (%edi)
|
|
||||||
addl $8, %edi
|
|
||||||
loopl L0
|
|
||||||
mfence
|
|
||||||
@SetDwords:
|
|
||||||
testb $1, %dl
|
|
||||||
jz @F
|
|
||||||
movd %mm0, (%edi)
|
|
||||||
L1:
|
|
||||||
pop %edi
|
|
||||||
ret
|
|
|
@ -1,50 +0,0 @@
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
;
|
|
||||||
; Copyright (c) 2006, Intel Corporation
|
|
||||||
; All rights reserved. This program and the accompanying materials
|
|
||||||
; are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
; which accompanies this distribution. The full text of the license may be found at
|
|
||||||
; http://opensource.org/licenses/bsd-license.php
|
|
||||||
;
|
|
||||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
;
|
|
||||||
; Module Name:
|
|
||||||
;
|
|
||||||
; SetMem64.asm
|
|
||||||
;
|
|
||||||
; Abstract:
|
|
||||||
;
|
|
||||||
; SetMem64 function
|
|
||||||
;
|
|
||||||
; Notes:
|
|
||||||
;
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686
|
|
||||||
.model flat,C
|
|
||||||
.xmm
|
|
||||||
.code
|
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
; VOID *
|
|
||||||
; _mem_SetMem64 (
|
|
||||||
; IN VOID *Buffer,
|
|
||||||
; IN UINTN Count,
|
|
||||||
; IN UINT64 Value
|
|
||||||
; )
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
InternalMemSetMem64 PROC USES edi
|
|
||||||
movq mm0, [esp + 16]
|
|
||||||
mov ecx, [esp + 12]
|
|
||||||
mov edi, [esp + 8]
|
|
||||||
mov eax, edi
|
|
||||||
@@:
|
|
||||||
movntq [edi], mm0
|
|
||||||
add edi, 8
|
|
||||||
loop @B
|
|
||||||
mfence
|
|
||||||
ret
|
|
||||||
InternalMemSetMem64 ENDP
|
|
||||||
|
|
||||||
END
|
|
|
@ -1,50 +0,0 @@
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006, Intel Corporation
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
#
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
# Module Name:
|
|
||||||
#
|
|
||||||
# SetMem64.asm
|
|
||||||
#
|
|
||||||
# Abstract:
|
|
||||||
#
|
|
||||||
# SetMem64 function
|
|
||||||
#
|
|
||||||
# Notes:
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686:
|
|
||||||
#.MODEL flat,C
|
|
||||||
.xmm:
|
|
||||||
.code:
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# VOID *
|
|
||||||
# _mem_SetMem64 (
|
|
||||||
# IN VOID *Buffer,
|
|
||||||
# IN UINTN Count,
|
|
||||||
# IN UINT64 Value
|
|
||||||
# )
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
.global _InternalMemSetMem64
|
|
||||||
_InternalMemSetMem64:
|
|
||||||
push %edi
|
|
||||||
movq 16(%esp), %mm0
|
|
||||||
movl 12(%esp), %ecx
|
|
||||||
movl 8(%esp), %edi
|
|
||||||
movl %edi, %eax
|
|
||||||
L0:
|
|
||||||
movntq %mm0, (%edi)
|
|
||||||
addl $8, %edi
|
|
||||||
loopl L0
|
|
||||||
mfence
|
|
||||||
pop %edi
|
|
||||||
ret
|
|
|
@ -1,57 +0,0 @@
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
;
|
|
||||||
; Copyright (c) 2006, Intel Corporation
|
|
||||||
; All rights reserved. This program and the accompanying materials
|
|
||||||
; are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
; which accompanies this distribution. The full text of the license may be found at
|
|
||||||
; http://opensource.org/licenses/bsd-license.php
|
|
||||||
;
|
|
||||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
;
|
|
||||||
; Module Name:
|
|
||||||
;
|
|
||||||
; ZeroMem.asm
|
|
||||||
;
|
|
||||||
; Abstract:
|
|
||||||
;
|
|
||||||
; ZeroMem function
|
|
||||||
;
|
|
||||||
; Notes:
|
|
||||||
;
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686
|
|
||||||
.model flat,C
|
|
||||||
.xmm
|
|
||||||
.code
|
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
; VOID *
|
|
||||||
; _mem_ZeroMem (
|
|
||||||
; IN VOID *Buffer,
|
|
||||||
; IN UINTN Count
|
|
||||||
; )
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
InternalMemZeroMem PROC USES edi
|
|
||||||
mov edi, [esp + 8]
|
|
||||||
mov ecx, [esp + 12]
|
|
||||||
mov edx, ecx
|
|
||||||
shr ecx, 3
|
|
||||||
jz @ZeroBytes
|
|
||||||
pxor mm0, mm0
|
|
||||||
@@:
|
|
||||||
movntq [edi], mm0
|
|
||||||
add edi, 8
|
|
||||||
loop @B
|
|
||||||
mfence
|
|
||||||
@ZeroBytes:
|
|
||||||
and edx, 7
|
|
||||||
xor eax, eax
|
|
||||||
mov ecx, edx
|
|
||||||
rep stosb
|
|
||||||
mov eax, [esp + 8]
|
|
||||||
ret
|
|
||||||
InternalMemZeroMem ENDP
|
|
||||||
|
|
||||||
END
|
|
|
@ -1,58 +0,0 @@
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006, Intel Corporation
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
#
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
# Module Name:
|
|
||||||
#
|
|
||||||
# ZeroMem.asm
|
|
||||||
#
|
|
||||||
# Abstract:
|
|
||||||
#
|
|
||||||
# ZeroMem function
|
|
||||||
#
|
|
||||||
# Notes:
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686:
|
|
||||||
#.MODEL flat,C
|
|
||||||
.xmm:
|
|
||||||
.code:
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# VOID *
|
|
||||||
# _mem_ZeroMem (
|
|
||||||
# IN VOID *Buffer,
|
|
||||||
# IN UINTN Count
|
|
||||||
# )
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
.global _InternalMemZeroMem
|
|
||||||
_InternalMemZeroMem:
|
|
||||||
push %edi
|
|
||||||
movl 8(%esp), %edi
|
|
||||||
movl 12(%esp), %ecx
|
|
||||||
movl %ecx, %edx
|
|
||||||
shrl $3, %ecx
|
|
||||||
jz @ZeroBytes
|
|
||||||
pxor %mm0, %mm0
|
|
||||||
L0:
|
|
||||||
movntq %mm0, (%edi)
|
|
||||||
addl $8, %edi
|
|
||||||
loop L0
|
|
||||||
mfence
|
|
||||||
@ZeroBytes:
|
|
||||||
andl $7, %edx
|
|
||||||
xorl %eax, %eax
|
|
||||||
movl %edx, %ecx
|
|
||||||
rep
|
|
||||||
stosb
|
|
||||||
movl 8(%esp), %eax
|
|
||||||
pop %edi
|
|
||||||
ret
|
|
|
@ -1,46 +0,0 @@
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
;
|
|
||||||
; Copyright (c) 2006, Intel Corporation
|
|
||||||
; All rights reserved. This program and the accompanying materials
|
|
||||||
; are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
; which accompanies this distribution. The full text of the license may be found at
|
|
||||||
; http://opensource.org/licenses/bsd-license.php
|
|
||||||
;
|
|
||||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
;
|
|
||||||
; Module Name:
|
|
||||||
;
|
|
||||||
; CompareMem.Asm
|
|
||||||
;
|
|
||||||
; Abstract:
|
|
||||||
;
|
|
||||||
; CompareMem function
|
|
||||||
;
|
|
||||||
; Notes:
|
|
||||||
;
|
|
||||||
; The following BaseMemoryLib instances share the same version of this file:
|
|
||||||
;
|
|
||||||
; BaseMemoryLibRepStr
|
|
||||||
; BaseMemoryLibMmx
|
|
||||||
; BaseMemoryLibSse2
|
|
||||||
;
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686
|
|
||||||
.model flat,C
|
|
||||||
.code
|
|
||||||
|
|
||||||
InternalMemCompareMem PROC USES esi edi
|
|
||||||
mov esi, [esp + 12]
|
|
||||||
mov edi, [esp + 16]
|
|
||||||
mov ecx, [esp + 20]
|
|
||||||
repe cmpsb
|
|
||||||
movzx eax, byte ptr [esi - 1]
|
|
||||||
movzx edx, byte ptr [edi - 1]
|
|
||||||
sub eax, edx
|
|
||||||
sub eax, edx
|
|
||||||
ret
|
|
||||||
InternalMemCompareMem ENDP
|
|
||||||
|
|
||||||
END
|
|
|
@ -1,48 +0,0 @@
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006, Intel Corporation
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
#
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
# Module Name:
|
|
||||||
#
|
|
||||||
# CompareMem.Asm
|
|
||||||
#
|
|
||||||
# Abstract:
|
|
||||||
#
|
|
||||||
# CompareMem function
|
|
||||||
#
|
|
||||||
# Notes:
|
|
||||||
#
|
|
||||||
# The following BaseMemoryLib instances share the same version of this file:
|
|
||||||
#
|
|
||||||
# BaseMemoryLibRepStr
|
|
||||||
# BaseMemoryLibMmx
|
|
||||||
# BaseMemoryLibSse2
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686:
|
|
||||||
#.MODEL flat,C
|
|
||||||
.code:
|
|
||||||
|
|
||||||
.global _InternalMemCompareMem
|
|
||||||
_InternalMemCompareMem:
|
|
||||||
push %esi
|
|
||||||
push %edi
|
|
||||||
movl 12(%esp), %esi
|
|
||||||
movl 16(%esp), %edi
|
|
||||||
movl 20(%esp), %ecx
|
|
||||||
repe cmpsb
|
|
||||||
movzbl -1(%esi), %eax
|
|
||||||
movzbl -1(%edi), %edx
|
|
||||||
subl %edx, %eax
|
|
||||||
subl %edx, %eax
|
|
||||||
pop %edi
|
|
||||||
pop %esi
|
|
||||||
ret
|
|
|
@ -1,84 +0,0 @@
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
;
|
|
||||||
; Copyright (c) 2006, Intel Corporation
|
|
||||||
; All rights reserved. This program and the accompanying materials
|
|
||||||
; are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
; which accompanies this distribution. The full text of the license may be found at
|
|
||||||
; http://opensource.org/licenses/bsd-license.php
|
|
||||||
;
|
|
||||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
;
|
|
||||||
; Module Name:
|
|
||||||
;
|
|
||||||
; CopyMem.asm
|
|
||||||
;
|
|
||||||
; Abstract:
|
|
||||||
;
|
|
||||||
; CopyMem function
|
|
||||||
;
|
|
||||||
; Notes:
|
|
||||||
;
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686
|
|
||||||
.model flat,C
|
|
||||||
.xmm
|
|
||||||
.code
|
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
; VOID *
|
|
||||||
; _mem_CopyMem (
|
|
||||||
; IN VOID *Destination,
|
|
||||||
; IN VOID *Source,
|
|
||||||
; IN UINTN Count
|
|
||||||
; )
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
InternalMemCopyMem PROC USES esi edi
|
|
||||||
mov esi, [esp + 16] ; esi <- Source
|
|
||||||
mov edi, [esp + 12] ; edi <- Destination
|
|
||||||
mov edx, [esp + 20] ; edx <- Count
|
|
||||||
lea eax, [edi + edx - 1] ; eax <- End of Destination
|
|
||||||
cmp esi, edi
|
|
||||||
jae @F
|
|
||||||
cmp eax, esi ; Overlapped?
|
|
||||||
jae @CopyBackward ; Copy backward if overlapped
|
|
||||||
@@:
|
|
||||||
xor ecx, ecx
|
|
||||||
sub ecx, edi
|
|
||||||
and ecx, 15 ; ecx + edi aligns on 16-byte boundary
|
|
||||||
jz @F
|
|
||||||
cmp ecx, edx
|
|
||||||
cmova ecx, edx
|
|
||||||
sub edx, ecx ; edx <- remaining bytes to copy
|
|
||||||
rep movsb
|
|
||||||
@@:
|
|
||||||
mov ecx, edx
|
|
||||||
and edx, 15
|
|
||||||
shr ecx, 4 ; ecx <- # of DQwords to copy
|
|
||||||
jz @CopyBytes
|
|
||||||
add esp, -16
|
|
||||||
movdqu [esp], xmm0 ; save xmm0
|
|
||||||
@@:
|
|
||||||
movdqu xmm0, [esi] ; esi may not be 16-bytes aligned
|
|
||||||
movntdq [edi], xmm0 ; edi should be 16-bytes aligned
|
|
||||||
add esi, 16
|
|
||||||
add edi, 16
|
|
||||||
loop @B
|
|
||||||
mfence
|
|
||||||
movdqu xmm0, [esp] ; restore xmm0
|
|
||||||
add esp, 16 ; stack cleanup
|
|
||||||
jmp @CopyBytes
|
|
||||||
@CopyBackward:
|
|
||||||
mov edi, eax ; edi <- Last byte in Destination
|
|
||||||
lea esi, [esi + edx - 1] ; esi <- Last byte in Source
|
|
||||||
std
|
|
||||||
@CopyBytes:
|
|
||||||
mov ecx, edx
|
|
||||||
rep movsb
|
|
||||||
cld
|
|
||||||
mov eax, [esp + 12] ; eax <- Destination as return value
|
|
||||||
ret
|
|
||||||
InternalMemCopyMem ENDP
|
|
||||||
|
|
||||||
END
|
|
|
@ -1,88 +0,0 @@
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006, Intel Corporation
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
#
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
# Module Name:
|
|
||||||
#
|
|
||||||
# CopyMem.asm
|
|
||||||
#
|
|
||||||
# Abstract:
|
|
||||||
#
|
|
||||||
# CopyMem function
|
|
||||||
#
|
|
||||||
# Notes:
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686:
|
|
||||||
#.MODEL flat,C
|
|
||||||
.xmm:
|
|
||||||
.code:
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# VOID *
|
|
||||||
# _mem_CopyMem (
|
|
||||||
# IN VOID *Destination,
|
|
||||||
# IN VOID *Source,
|
|
||||||
# IN UINTN Count
|
|
||||||
# )
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
.global _InternalMemCopyMem
|
|
||||||
_InternalMemCopyMem:
|
|
||||||
push %esi
|
|
||||||
push %edi
|
|
||||||
movl 16(%esp), %esi # esi <- Source
|
|
||||||
movl 12(%esp), %edi # edi <- Destination
|
|
||||||
movl 20(%esp), %edx # edx <- Count
|
|
||||||
leal -1(%edi,%edx,), %eax # eax <- End of Destination
|
|
||||||
cmpl %edi, %esi
|
|
||||||
jae L0
|
|
||||||
cmpl %esi, %eax # Overlapped?
|
|
||||||
jae @CopyBackward # Copy backward if overlapped
|
|
||||||
L0:
|
|
||||||
xorl %ecx, %ecx
|
|
||||||
subl %edi, %ecx
|
|
||||||
andl $15, %ecx # ecx + edi aligns on 16-byte boundary
|
|
||||||
jz L1
|
|
||||||
cmpl %edx, %ecx
|
|
||||||
cmova %edx, %ecx
|
|
||||||
subl %ecx, %edx # edx <- remaining bytes to copy
|
|
||||||
rep
|
|
||||||
movsb
|
|
||||||
L1:
|
|
||||||
movl %edx, %ecx
|
|
||||||
andl $15, %edx
|
|
||||||
shrl $4, %ecx # ecx <- # of DQwords to copy
|
|
||||||
jz @CopyBytes
|
|
||||||
addl $-16, %esp
|
|
||||||
movdqu %xmm0, (%esp)
|
|
||||||
L2:
|
|
||||||
movdqu (%esi), %xmm0
|
|
||||||
movntdq %xmm0, (%edi)
|
|
||||||
addl $16, %esi
|
|
||||||
addl $16, %edi
|
|
||||||
loop L2
|
|
||||||
mfence
|
|
||||||
movdqu (%esp),%xmm0
|
|
||||||
addl $16, %esp # stack cleanup
|
|
||||||
jmp @CopyBytes
|
|
||||||
@CopyBackward:
|
|
||||||
movl %eax, %edi # edi <- Last byte in Destination
|
|
||||||
leal -1(%esi,%edx,), %esi # esi <- Last byte in Source
|
|
||||||
std
|
|
||||||
@CopyBytes:
|
|
||||||
movl %edx, %ecx
|
|
||||||
rep
|
|
||||||
movsb
|
|
||||||
cld
|
|
||||||
movl 12(%esp), %eax # eax <- Destination as return value
|
|
||||||
pop %edi
|
|
||||||
pop %esi
|
|
||||||
ret
|
|
|
@ -1,44 +0,0 @@
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
;
|
|
||||||
; Copyright (c) 2006, Intel Corporation
|
|
||||||
; All rights reserved. This program and the accompanying materials
|
|
||||||
; are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
; which accompanies this distribution. The full text of the license may be found at
|
|
||||||
; http://opensource.org/licenses/bsd-license.php
|
|
||||||
;
|
|
||||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
;
|
|
||||||
; Module Name:
|
|
||||||
;
|
|
||||||
; ScanMem16.Asm
|
|
||||||
;
|
|
||||||
; Abstract:
|
|
||||||
;
|
|
||||||
; ScanMem16 function
|
|
||||||
;
|
|
||||||
; Notes:
|
|
||||||
;
|
|
||||||
; The following BaseMemoryLib instances share the same version of this file:
|
|
||||||
;
|
|
||||||
; BaseMemoryLibRepStr
|
|
||||||
; BaseMemoryLibMmx
|
|
||||||
; BaseMemoryLibSse2
|
|
||||||
;
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686
|
|
||||||
.model flat,C
|
|
||||||
.code
|
|
||||||
|
|
||||||
InternalMemScanMem16 PROC USES edi
|
|
||||||
mov ecx, [esp + 12]
|
|
||||||
mov edi, [esp + 8]
|
|
||||||
mov eax, [esp + 16]
|
|
||||||
repne scasw
|
|
||||||
lea eax, [edi - 2]
|
|
||||||
cmovnz eax, ecx
|
|
||||||
ret
|
|
||||||
InternalMemScanMem16 ENDP
|
|
||||||
|
|
||||||
END
|
|
|
@ -1,44 +0,0 @@
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006, Intel Corporation
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
#
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
# Module Name:
|
|
||||||
#
|
|
||||||
# ScanMem16.Asm
|
|
||||||
#
|
|
||||||
# Abstract:
|
|
||||||
#
|
|
||||||
# ScanMem16 function
|
|
||||||
#
|
|
||||||
# Notes:
|
|
||||||
#
|
|
||||||
# The following BaseMemoryLib instances share the same version of this file:
|
|
||||||
#
|
|
||||||
# BaseMemoryLibRepStr
|
|
||||||
# BaseMemoryLibMmx
|
|
||||||
# BaseMemoryLibSse2
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686:
|
|
||||||
#.MODEL flat,C
|
|
||||||
.code:
|
|
||||||
|
|
||||||
.global _InternalMemScanMem16
|
|
||||||
_InternalMemScanMem16:
|
|
||||||
push %edi
|
|
||||||
movl 12(%esp), %ecx
|
|
||||||
movl 8(%esp), %edi
|
|
||||||
movl 16(%esp), %eax
|
|
||||||
repne scasw
|
|
||||||
leal -2(%edi), %eax
|
|
||||||
cmovnz %ecx, %eax
|
|
||||||
pop %edi
|
|
||||||
ret
|
|
|
@ -1,44 +0,0 @@
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
;
|
|
||||||
; Copyright (c) 2006, Intel Corporation
|
|
||||||
; All rights reserved. This program and the accompanying materials
|
|
||||||
; are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
; which accompanies this distribution. The full text of the license may be found at
|
|
||||||
; http://opensource.org/licenses/bsd-license.php
|
|
||||||
;
|
|
||||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
;
|
|
||||||
; Module Name:
|
|
||||||
;
|
|
||||||
; ScanMem32.Asm
|
|
||||||
;
|
|
||||||
; Abstract:
|
|
||||||
;
|
|
||||||
; ScanMem32 function
|
|
||||||
;
|
|
||||||
; Notes:
|
|
||||||
;
|
|
||||||
; The following BaseMemoryLib instances share the same version of this file:
|
|
||||||
;
|
|
||||||
; BaseMemoryLibRepStr
|
|
||||||
; BaseMemoryLibMmx
|
|
||||||
; BaseMemoryLibSse2
|
|
||||||
;
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686
|
|
||||||
.model flat,C
|
|
||||||
.code
|
|
||||||
|
|
||||||
InternalMemScanMem32 PROC USES edi
|
|
||||||
mov ecx, [esp + 12]
|
|
||||||
mov edi, [esp + 8]
|
|
||||||
mov eax, [esp + 16]
|
|
||||||
repne scasd
|
|
||||||
lea eax, [edi - 4]
|
|
||||||
cmovnz eax, ecx
|
|
||||||
ret
|
|
||||||
InternalMemScanMem32 ENDP
|
|
||||||
|
|
||||||
END
|
|
|
@ -1,44 +0,0 @@
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006, Intel Corporation
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
#
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
# Module Name:
|
|
||||||
#
|
|
||||||
# ScanMem32.Asm
|
|
||||||
#
|
|
||||||
# Abstract:
|
|
||||||
#
|
|
||||||
# ScanMem32 function
|
|
||||||
#
|
|
||||||
# Notes:
|
|
||||||
#
|
|
||||||
# The following BaseMemoryLib instances share the same version of this file:
|
|
||||||
#
|
|
||||||
# BaseMemoryLibRepStr
|
|
||||||
# BaseMemoryLibMmx
|
|
||||||
# BaseMemoryLibSse2
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686:
|
|
||||||
#.MODEL flat,C
|
|
||||||
.code:
|
|
||||||
|
|
||||||
.global _InternalMemScanMem32
|
|
||||||
_InternalMemScanMem32:
|
|
||||||
push %edi
|
|
||||||
movl 12(%esp), %ecx
|
|
||||||
movl 8(%esp), %edi
|
|
||||||
movl 16(%esp), %eax
|
|
||||||
repnz scasl
|
|
||||||
leal -4(%edi), %eax
|
|
||||||
cmovnz %ecx, %eax
|
|
||||||
pop %edi
|
|
||||||
ret
|
|
|
@ -1,53 +0,0 @@
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
;
|
|
||||||
; Copyright (c) 2006, Intel Corporation
|
|
||||||
; All rights reserved. This program and the accompanying materials
|
|
||||||
; are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
; which accompanies this distribution. The full text of the license may be found at
|
|
||||||
; http://opensource.org/licenses/bsd-license.php
|
|
||||||
;
|
|
||||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
;
|
|
||||||
; Module Name:
|
|
||||||
;
|
|
||||||
; ScanMem64.Asm
|
|
||||||
;
|
|
||||||
; Abstract:
|
|
||||||
;
|
|
||||||
; ScanMem64 function
|
|
||||||
;
|
|
||||||
; Notes:
|
|
||||||
;
|
|
||||||
; The following BaseMemoryLib instances share the same version of this file:
|
|
||||||
;
|
|
||||||
; BaseMemoryLibRepStr
|
|
||||||
; BaseMemoryLibMmx
|
|
||||||
; BaseMemoryLibSse2
|
|
||||||
;
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686
|
|
||||||
.model flat,C
|
|
||||||
.code
|
|
||||||
|
|
||||||
InternalMemScanMem64 PROC USES edi
|
|
||||||
mov ecx, [esp + 12]
|
|
||||||
mov eax, [esp + 16]
|
|
||||||
mov edx, [esp + 20]
|
|
||||||
mov edi, [esp + 8]
|
|
||||||
@@:
|
|
||||||
cmp eax, [edi]
|
|
||||||
lea edi, [edi + 8]
|
|
||||||
loopne @B
|
|
||||||
jne @F
|
|
||||||
cmp edx, [edi - 4]
|
|
||||||
jecxz @F
|
|
||||||
jne @B
|
|
||||||
@@:
|
|
||||||
lea eax, [edi - 8]
|
|
||||||
cmovne eax, ecx
|
|
||||||
ret
|
|
||||||
InternalMemScanMem64 ENDP
|
|
||||||
|
|
||||||
END
|
|
|
@ -1,53 +0,0 @@
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006, Intel Corporation
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
#
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
# Module Name:
|
|
||||||
#
|
|
||||||
# ScanMem64.Asm
|
|
||||||
#
|
|
||||||
# Abstract:
|
|
||||||
#
|
|
||||||
# ScanMem64 function
|
|
||||||
#
|
|
||||||
# Notes:
|
|
||||||
#
|
|
||||||
# The following BaseMemoryLib instances share the same version of this file:
|
|
||||||
#
|
|
||||||
# BaseMemoryLibRepStr
|
|
||||||
# BaseMemoryLibMmx
|
|
||||||
# BaseMemoryLibSse2
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686:
|
|
||||||
#.MODEL flat,C
|
|
||||||
.code:
|
|
||||||
|
|
||||||
.global _InternalMemScanMem64
|
|
||||||
_InternalMemScanMem64:
|
|
||||||
push %edi
|
|
||||||
movl 12(%esp), %ecx
|
|
||||||
movl 16(%esp), %eax
|
|
||||||
movl 20(%esp), %edx
|
|
||||||
movl 8(%esp), %edi
|
|
||||||
L0:
|
|
||||||
cmpl (%edi), %eax
|
|
||||||
leal 8(%edi), %edi
|
|
||||||
loopne L0
|
|
||||||
jne L1
|
|
||||||
cmpl -4(%edi), %edx
|
|
||||||
jecxz L1
|
|
||||||
jne L0
|
|
||||||
L1:
|
|
||||||
leal -8(%edi), %eax
|
|
||||||
cmovne %ecx, %eax
|
|
||||||
pop %edi
|
|
||||||
ret
|
|
|
@ -1,44 +0,0 @@
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
;
|
|
||||||
; Copyright (c) 2006, Intel Corporation
|
|
||||||
; All rights reserved. This program and the accompanying materials
|
|
||||||
; are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
; which accompanies this distribution. The full text of the license may be found at
|
|
||||||
; http://opensource.org/licenses/bsd-license.php
|
|
||||||
;
|
|
||||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
;
|
|
||||||
; Module Name:
|
|
||||||
;
|
|
||||||
; ScanMem8.Asm
|
|
||||||
;
|
|
||||||
; Abstract:
|
|
||||||
;
|
|
||||||
; ScanMem8 function
|
|
||||||
;
|
|
||||||
; Notes:
|
|
||||||
;
|
|
||||||
; The following BaseMemoryLib instances share the same version of this file:
|
|
||||||
;
|
|
||||||
; BaseMemoryLibRepStr
|
|
||||||
; BaseMemoryLibMmx
|
|
||||||
; BaseMemoryLibSse2
|
|
||||||
;
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686
|
|
||||||
.model flat,C
|
|
||||||
.code
|
|
||||||
|
|
||||||
InternalMemScanMem8 PROC USES edi
|
|
||||||
mov ecx, [esp + 12]
|
|
||||||
mov edi, [esp + 8]
|
|
||||||
mov al, [esp + 16]
|
|
||||||
repne scasb
|
|
||||||
lea eax, [edi - 1]
|
|
||||||
cmovnz eax, ecx
|
|
||||||
ret
|
|
||||||
InternalMemScanMem8 ENDP
|
|
||||||
|
|
||||||
END
|
|
|
@ -1,44 +0,0 @@
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006, Intel Corporation
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
#
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
# Module Name:
|
|
||||||
#
|
|
||||||
# ScanMem8.Asm
|
|
||||||
#
|
|
||||||
# Abstract:
|
|
||||||
#
|
|
||||||
# ScanMem8 function
|
|
||||||
#
|
|
||||||
# Notes:
|
|
||||||
#
|
|
||||||
# The following BaseMemoryLib instances share the same version of this file:
|
|
||||||
#
|
|
||||||
# BaseMemoryLibRepStr
|
|
||||||
# BaseMemoryLibMmx
|
|
||||||
# BaseMemoryLibSse2
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686:
|
|
||||||
#.MODEL flat,C
|
|
||||||
.code:
|
|
||||||
|
|
||||||
.global _InternalMemScanMem8
|
|
||||||
_InternalMemScanMem8:
|
|
||||||
push %edi
|
|
||||||
movl 12(%esp), %ecx
|
|
||||||
movl 8(%esp), %edi
|
|
||||||
movb 16(%esp), %al
|
|
||||||
repne scasb
|
|
||||||
leal -1(%edi), %eax
|
|
||||||
cmovnz %ecx, %eax
|
|
||||||
pop %edi
|
|
||||||
ret
|
|
|
@ -1,74 +0,0 @@
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
;
|
|
||||||
; Copyright (c) 2006, Intel Corporation
|
|
||||||
; All rights reserved. This program and the accompanying materials
|
|
||||||
; are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
; which accompanies this distribution. The full text of the license may be found at
|
|
||||||
; http://opensource.org/licenses/bsd-license.php
|
|
||||||
;
|
|
||||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
;
|
|
||||||
; Module Name:
|
|
||||||
;
|
|
||||||
; SetMem.asm
|
|
||||||
;
|
|
||||||
; Abstract:
|
|
||||||
;
|
|
||||||
; SetMem function
|
|
||||||
;
|
|
||||||
; Notes:
|
|
||||||
;
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686
|
|
||||||
.model flat,C
|
|
||||||
.xmm
|
|
||||||
.code
|
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
; VOID *
|
|
||||||
; _mem_SetMem (
|
|
||||||
; IN VOID *Buffer,
|
|
||||||
; IN UINTN Count,
|
|
||||||
; IN UINT8 Value
|
|
||||||
; )
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
InternalMemSetMem PROC USES edi
|
|
||||||
mov edx, [esp + 12] ; edx <- Count
|
|
||||||
mov edi, [esp + 8] ; edi <- Buffer
|
|
||||||
mov al, [esp + 16] ; al <- Value
|
|
||||||
xor ecx, ecx
|
|
||||||
sub ecx, edi
|
|
||||||
and ecx, 15 ; ecx + edi aligns on 16-byte boundary
|
|
||||||
jz @F
|
|
||||||
cmp ecx, edx
|
|
||||||
cmova ecx, edx
|
|
||||||
sub edx, ecx
|
|
||||||
rep stosb
|
|
||||||
@@:
|
|
||||||
mov ecx, edx
|
|
||||||
and edx, 15
|
|
||||||
shr ecx, 4 ; ecx <- # of DQwords to set
|
|
||||||
jz @SetBytes
|
|
||||||
mov ah, al ; ax <- Value | (Value << 8)
|
|
||||||
add esp, -16
|
|
||||||
movdqu [esp], xmm0 ; save xmm0
|
|
||||||
movd xmm0, eax
|
|
||||||
pshuflw xmm0, xmm0, 0 ; xmm0[0..63] <- Value repeats 8 times
|
|
||||||
movlhps xmm0, xmm0 ; xmm0 <- Value repeats 16 times
|
|
||||||
@@:
|
|
||||||
movntdq [edi], xmm0 ; edi should be 16-byte aligned
|
|
||||||
add edi, 16
|
|
||||||
loop @B
|
|
||||||
mfence
|
|
||||||
movdqu xmm0, [esp] ; restore xmm0
|
|
||||||
add esp, 16 ; stack cleanup
|
|
||||||
@SetBytes:
|
|
||||||
mov ecx, edx
|
|
||||||
rep stosb
|
|
||||||
mov eax, [esp + 8] ; eax <- Buffer as return value
|
|
||||||
ret
|
|
||||||
InternalMemSetMem ENDP
|
|
||||||
|
|
||||||
END
|
|
|
@ -1,76 +0,0 @@
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006, Intel Corporation
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
#
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
# Module Name:
|
|
||||||
#
|
|
||||||
# SetMem.asm
|
|
||||||
#
|
|
||||||
# Abstract:
|
|
||||||
#
|
|
||||||
# SetMem function
|
|
||||||
#
|
|
||||||
# Notes:
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686:
|
|
||||||
#.MODEL flat,C
|
|
||||||
.xmm:
|
|
||||||
.code:
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# VOID *
|
|
||||||
# _mem_SetMem (
|
|
||||||
# IN VOID *Buffer,
|
|
||||||
# IN UINTN Count,
|
|
||||||
# IN UINT8 Value
|
|
||||||
# )
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
.global _InternalMemSetMem
|
|
||||||
_InternalMemSetMem:
|
|
||||||
push %edi
|
|
||||||
movl 12(%esp), %edx # edx <- Count
|
|
||||||
movl 8(%esp), %edi # edi <- Buffer
|
|
||||||
movb 16(%esp), %al # al <- Value
|
|
||||||
xorl %ecx, %ecx
|
|
||||||
subl %edi, %ecx
|
|
||||||
andl $15, %ecx # ecx + edi aligns on 16-byte boundary
|
|
||||||
jz L0
|
|
||||||
cmpl %edx, %ecx
|
|
||||||
cmova %edx, %ecx
|
|
||||||
subl %ecx, %edx
|
|
||||||
rep
|
|
||||||
stosb
|
|
||||||
L0:
|
|
||||||
movl %edx, %ecx
|
|
||||||
andl $15, %edx
|
|
||||||
shrl $4, %ecx # ecx <- # of DQwords to set
|
|
||||||
jz @SetBytes
|
|
||||||
movb %al, %ah # ax <- Value | (Value << 8)
|
|
||||||
addl $-16, %esp
|
|
||||||
movdqu %xmm0, (%esp)
|
|
||||||
movd %eax, %xmm0
|
|
||||||
pshuflw $0, %xmm0, %xmm0
|
|
||||||
movlhps %xmm0, %xmm0
|
|
||||||
L1:
|
|
||||||
movntdq %xmm0, (%edi)
|
|
||||||
addl $16, %edi
|
|
||||||
loop L1
|
|
||||||
mfence
|
|
||||||
movdqu (%esp), %xmm0
|
|
||||||
addl $16, %esp # stack cleanup
|
|
||||||
@SetBytes:
|
|
||||||
movl %edx, %ecx
|
|
||||||
rep
|
|
||||||
stosb
|
|
||||||
movl 8(%esp), %eax # eax <- Buffer as return value
|
|
||||||
pop %edi
|
|
||||||
ret
|
|
|
@ -1,70 +0,0 @@
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
;
|
|
||||||
; Copyright (c) 2006, Intel Corporation
|
|
||||||
; All rights reserved. This program and the accompanying materials
|
|
||||||
; are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
; which accompanies this distribution. The full text of the license may be found at
|
|
||||||
; http://opensource.org/licenses/bsd-license.php
|
|
||||||
;
|
|
||||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
;
|
|
||||||
; Module Name:
|
|
||||||
;
|
|
||||||
; SetMem16.asm
|
|
||||||
;
|
|
||||||
; Abstract:
|
|
||||||
;
|
|
||||||
; SetMem16 function
|
|
||||||
;
|
|
||||||
; Notes:
|
|
||||||
;
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686
|
|
||||||
.model flat,C
|
|
||||||
.xmm
|
|
||||||
.code
|
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
; VOID *
|
|
||||||
; _mem_SetMem16 (
|
|
||||||
; IN VOID *Buffer,
|
|
||||||
; IN UINTN Count,
|
|
||||||
; IN UINT16 Value
|
|
||||||
; )
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
InternalMemSetMem16 PROC USES edi
|
|
||||||
mov edx, [esp + 12]
|
|
||||||
mov edi, [esp + 8]
|
|
||||||
xor ecx, ecx
|
|
||||||
sub ecx, edi
|
|
||||||
and ecx, 15 ; ecx + edi aligns on 16-byte boundary
|
|
||||||
mov eax, [esp + 16]
|
|
||||||
jz @F
|
|
||||||
shr ecx, 1
|
|
||||||
cmp ecx, edx
|
|
||||||
cmova ecx, edx
|
|
||||||
sub edx, ecx
|
|
||||||
rep stosw
|
|
||||||
@@:
|
|
||||||
mov ecx, edx
|
|
||||||
and edx, 7
|
|
||||||
shr ecx, 3
|
|
||||||
jz @SetWords
|
|
||||||
movd xmm0, eax
|
|
||||||
pshuflw xmm0, xmm0, 0
|
|
||||||
movlhps xmm0, xmm0
|
|
||||||
@@:
|
|
||||||
movntdq [edi], xmm0 ; edi should be 16-byte aligned
|
|
||||||
add edi, 16
|
|
||||||
loop @B
|
|
||||||
mfence
|
|
||||||
@SetWords:
|
|
||||||
mov ecx, edx
|
|
||||||
rep stosw
|
|
||||||
mov eax, [esp + 8]
|
|
||||||
ret
|
|
||||||
InternalMemSetMem16 ENDP
|
|
||||||
|
|
||||||
END
|
|
|
@ -1,72 +0,0 @@
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006, Intel Corporation
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
#
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
# Module Name:
|
|
||||||
#
|
|
||||||
# SetMem16.asm
|
|
||||||
#
|
|
||||||
# Abstract:
|
|
||||||
#
|
|
||||||
# SetMem16 function
|
|
||||||
#
|
|
||||||
# Notes:
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686:
|
|
||||||
#.MODEL flat,C
|
|
||||||
.xmm:
|
|
||||||
.code:
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# VOID *
|
|
||||||
# _mem_SetMem16 (
|
|
||||||
# IN VOID *Buffer,
|
|
||||||
# IN UINTN Count,
|
|
||||||
# IN UINT16 Value
|
|
||||||
# )
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
.global _InternalMemSetMem16
|
|
||||||
_InternalMemSetMem16:
|
|
||||||
push %edi
|
|
||||||
movl 12(%esp), %edx
|
|
||||||
movl 8(%esp), %edi
|
|
||||||
xorl %ecx, %ecx
|
|
||||||
subl %edi, %ecx
|
|
||||||
andl $15, %ecx # ecx + edi aligns on 16-byte boundary
|
|
||||||
movl 16(%esp), %eax
|
|
||||||
jz L0
|
|
||||||
shrl %ecx
|
|
||||||
cmpl %edx, %ecx
|
|
||||||
cmova %edx, %ecx
|
|
||||||
subl %ecx, %edx
|
|
||||||
rep
|
|
||||||
stosw
|
|
||||||
L0:
|
|
||||||
movl %edx, %ecx
|
|
||||||
andl $7, %edx
|
|
||||||
shrl $3, %ecx
|
|
||||||
jz @SetWords
|
|
||||||
movd %eax, %xmm0
|
|
||||||
pshuflw $0, %xmm0, %xmm0
|
|
||||||
movlhps %xmm0, %xmm0
|
|
||||||
L1:
|
|
||||||
movntdq %xmm0, (%edi)
|
|
||||||
addl $16, %edi
|
|
||||||
loop L1
|
|
||||||
mfence
|
|
||||||
@SetWords:
|
|
||||||
movl %edx, %ecx
|
|
||||||
rep
|
|
||||||
stosw
|
|
||||||
movl 8(%esp), %eax
|
|
||||||
pop %edi
|
|
||||||
ret
|
|
|
@ -1,69 +0,0 @@
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
;
|
|
||||||
; Copyright (c) 2006, Intel Corporation
|
|
||||||
; All rights reserved. This program and the accompanying materials
|
|
||||||
; are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
; which accompanies this distribution. The full text of the license may be found at
|
|
||||||
; http://opensource.org/licenses/bsd-license.php
|
|
||||||
;
|
|
||||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
;
|
|
||||||
; Module Name:
|
|
||||||
;
|
|
||||||
; SetMem32.asm
|
|
||||||
;
|
|
||||||
; Abstract:
|
|
||||||
;
|
|
||||||
; SetMem32 function
|
|
||||||
;
|
|
||||||
; Notes:
|
|
||||||
;
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686
|
|
||||||
.model flat,C
|
|
||||||
.xmm
|
|
||||||
.code
|
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
; VOID *
|
|
||||||
; _mem_SetMem32 (
|
|
||||||
; IN VOID *Buffer,
|
|
||||||
; IN UINTN Count,
|
|
||||||
; IN UINT32 Value
|
|
||||||
; )
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
InternalMemSetMem32 PROC USES edi
|
|
||||||
mov edx, [esp + 12]
|
|
||||||
mov edi, [esp + 8]
|
|
||||||
xor ecx, ecx
|
|
||||||
sub ecx, edi
|
|
||||||
and ecx, 15 ; ecx + edi aligns on 16-byte boundary
|
|
||||||
mov eax, [esp + 16]
|
|
||||||
jz @F
|
|
||||||
shr ecx, 2
|
|
||||||
cmp ecx, edx
|
|
||||||
cmova ecx, edx
|
|
||||||
sub edx, ecx
|
|
||||||
rep stosd
|
|
||||||
@@:
|
|
||||||
mov ecx, edx
|
|
||||||
and edx, 3
|
|
||||||
shr ecx, 2
|
|
||||||
jz @SetDwords
|
|
||||||
movd xmm0, eax
|
|
||||||
pshufd xmm0, xmm0, 0
|
|
||||||
@@:
|
|
||||||
movntdq [edi], xmm0
|
|
||||||
add edi, 16
|
|
||||||
loop @B
|
|
||||||
mfence
|
|
||||||
@SetDwords:
|
|
||||||
mov ecx, edx
|
|
||||||
rep stosd
|
|
||||||
mov eax, [esp + 8]
|
|
||||||
ret
|
|
||||||
InternalMemSetMem32 ENDP
|
|
||||||
|
|
||||||
END
|
|
|
@ -1,71 +0,0 @@
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006, Intel Corporation
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
#
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
# Module Name:
|
|
||||||
#
|
|
||||||
# SetMem32.asm
|
|
||||||
#
|
|
||||||
# Abstract:
|
|
||||||
#
|
|
||||||
# SetMem32 function
|
|
||||||
#
|
|
||||||
# Notes:
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686:
|
|
||||||
#.MODEL flat,C
|
|
||||||
.xmm:
|
|
||||||
.code:
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# VOID *
|
|
||||||
# _mem_SetMem32 (
|
|
||||||
# IN VOID *Buffer,
|
|
||||||
# IN UINTN Count,
|
|
||||||
# IN UINT32 Value
|
|
||||||
# )
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
.global _InternalMemSetMem32
|
|
||||||
_InternalMemSetMem32:
|
|
||||||
push %edi
|
|
||||||
movl 12(%esp), %edx
|
|
||||||
movl 8(%esp), %edi
|
|
||||||
xorl %ecx, %ecx
|
|
||||||
subl %edi, %ecx
|
|
||||||
andl $15, %ecx # ecx + edi aligns on 16-byte boundary
|
|
||||||
movl 16(%esp), %eax
|
|
||||||
jz L0
|
|
||||||
shrl $2, %ecx
|
|
||||||
cmpl %edx, %ecx
|
|
||||||
cmova %edx, %ecx
|
|
||||||
subl %ecx, %edx
|
|
||||||
rep
|
|
||||||
stosl
|
|
||||||
L0:
|
|
||||||
movl %edx, %ecx
|
|
||||||
andl $3, %edx
|
|
||||||
shrl $2, %ecx
|
|
||||||
jz @SetDwords
|
|
||||||
movd %eax, %xmm0
|
|
||||||
pshufd $0, %xmm0, %xmm0
|
|
||||||
L1:
|
|
||||||
movntdq %xmm0, (%edi)
|
|
||||||
addl $16, %edi
|
|
||||||
loop L1
|
|
||||||
mfence
|
|
||||||
@SetDwords:
|
|
||||||
movl %edx, %ecx
|
|
||||||
rep
|
|
||||||
stosl
|
|
||||||
movl 8(%esp), %eax
|
|
||||||
pop %edi
|
|
||||||
ret
|
|
|
@ -1,63 +0,0 @@
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
;
|
|
||||||
; Copyright (c) 2006, Intel Corporation
|
|
||||||
; All rights reserved. This program and the accompanying materials
|
|
||||||
; are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
; which accompanies this distribution. The full text of the license may be found at
|
|
||||||
; http://opensource.org/licenses/bsd-license.php
|
|
||||||
;
|
|
||||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
;
|
|
||||||
; Module Name:
|
|
||||||
;
|
|
||||||
; SetMem64.asm
|
|
||||||
;
|
|
||||||
; Abstract:
|
|
||||||
;
|
|
||||||
; SetMem64 function
|
|
||||||
;
|
|
||||||
; Notes:
|
|
||||||
;
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686
|
|
||||||
.model flat,C
|
|
||||||
.xmm
|
|
||||||
.code
|
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
; VOID *
|
|
||||||
; _mem_SetMem64 (
|
|
||||||
; IN VOID *Buffer,
|
|
||||||
; IN UINTN Count,
|
|
||||||
; IN UINT64 Value
|
|
||||||
; )
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
InternalMemSetMem64 PROC USES edi
|
|
||||||
mov ecx, [esp + 12]
|
|
||||||
mov edi, [esp + 8]
|
|
||||||
test edi, 8
|
|
||||||
DB 0f2h, 0fh, 12h, 44h, 24h, 16 ; movddup xmm0, [esp + 16]
|
|
||||||
jz @F
|
|
||||||
movq [edi], xmm0
|
|
||||||
add edi, 8
|
|
||||||
dec ecx
|
|
||||||
@@:
|
|
||||||
mov edx, ecx
|
|
||||||
shr ecx, 1
|
|
||||||
jz @SetQwords
|
|
||||||
@@:
|
|
||||||
movntdq [edi], xmm0
|
|
||||||
add edi, 16
|
|
||||||
loop @B
|
|
||||||
mfence
|
|
||||||
@SetQwords:
|
|
||||||
test dl, 1
|
|
||||||
jz @F
|
|
||||||
movq [edi], xmm0
|
|
||||||
@@:
|
|
||||||
ret
|
|
||||||
InternalMemSetMem64 ENDP
|
|
||||||
|
|
||||||
END
|
|
|
@ -1,63 +0,0 @@
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006, Intel Corporation
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
#
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
# Module Name:
|
|
||||||
#
|
|
||||||
# SetMem64.asm
|
|
||||||
#
|
|
||||||
# Abstract:
|
|
||||||
#
|
|
||||||
# SetMem64 function
|
|
||||||
#
|
|
||||||
# Notes:
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686:
|
|
||||||
#.MODEL flat,C
|
|
||||||
.xmm:
|
|
||||||
.code:
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# VOID *
|
|
||||||
# _mem_SetMem64 (
|
|
||||||
# IN VOID *Buffer,
|
|
||||||
# IN UINTN Count,
|
|
||||||
# IN UINT64 Value
|
|
||||||
# )
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
.global _InternalMemSetMem64
|
|
||||||
_InternalMemSetMem64:
|
|
||||||
push %edi
|
|
||||||
movl 12(%esp), %ecx
|
|
||||||
movl 8(%esp), %edi
|
|
||||||
testl $8, %edi
|
|
||||||
movddup 16(%esp), %xmm0
|
|
||||||
jz L0
|
|
||||||
movq %xmm0, (%edi)
|
|
||||||
addl $8, %edi
|
|
||||||
decl %ecx
|
|
||||||
L0:
|
|
||||||
movl %ecx, %edx
|
|
||||||
shrl %ecx
|
|
||||||
jz @SetQwords
|
|
||||||
L1:
|
|
||||||
movntdq %xmm0, (%edi)
|
|
||||||
addl $16, %edi
|
|
||||||
loop L1
|
|
||||||
mfence
|
|
||||||
@SetQwords:
|
|
||||||
testb $1, %dl
|
|
||||||
jz L2
|
|
||||||
movq %xmm0, (%edi)
|
|
||||||
L2:
|
|
||||||
pop %edi
|
|
||||||
ret
|
|
|
@ -1,66 +0,0 @@
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
;
|
|
||||||
; Copyright (c) 2006, Intel Corporation
|
|
||||||
; All rights reserved. This program and the accompanying materials
|
|
||||||
; are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
; which accompanies this distribution. The full text of the license may be found at
|
|
||||||
; http://opensource.org/licenses/bsd-license.php
|
|
||||||
;
|
|
||||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
;
|
|
||||||
; Module Name:
|
|
||||||
;
|
|
||||||
; ZeroMem.asm
|
|
||||||
;
|
|
||||||
; Abstract:
|
|
||||||
;
|
|
||||||
; ZeroMem function
|
|
||||||
;
|
|
||||||
; Notes:
|
|
||||||
;
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686
|
|
||||||
.model flat,C
|
|
||||||
.xmm
|
|
||||||
.code
|
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
; VOID *
|
|
||||||
; _mem_ZeroMem (
|
|
||||||
; IN VOID *Buffer,
|
|
||||||
; IN UINTN Count
|
|
||||||
; )
|
|
||||||
;------------------------------------------------------------------------------
|
|
||||||
InternalMemZeroMem PROC USES edi
|
|
||||||
mov edi, [esp + 8]
|
|
||||||
mov edx, [esp + 12]
|
|
||||||
xor ecx, ecx
|
|
||||||
sub ecx, edi
|
|
||||||
xor eax, eax
|
|
||||||
and ecx, 15
|
|
||||||
jz @F
|
|
||||||
cmp ecx, edx
|
|
||||||
cmova ecx, edx
|
|
||||||
sub edx, ecx
|
|
||||||
rep stosb
|
|
||||||
@@:
|
|
||||||
mov ecx, edx
|
|
||||||
and edx, 15
|
|
||||||
shr ecx, 4
|
|
||||||
jz @ZeroBytes
|
|
||||||
pxor xmm0, xmm0
|
|
||||||
@@:
|
|
||||||
movntdq [edi], xmm0
|
|
||||||
add edi, 16
|
|
||||||
loop @B
|
|
||||||
mfence
|
|
||||||
@ZeroBytes:
|
|
||||||
mov ecx, edx
|
|
||||||
rep stosb
|
|
||||||
mov eax, [esp + 8]
|
|
||||||
ret
|
|
||||||
InternalMemZeroMem ENDP
|
|
||||||
|
|
||||||
END
|
|
|
@ -1,68 +0,0 @@
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006, Intel Corporation
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
#
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
# Module Name:
|
|
||||||
#
|
|
||||||
# ZeroMem.asm
|
|
||||||
#
|
|
||||||
# Abstract:
|
|
||||||
#
|
|
||||||
# ZeroMem function
|
|
||||||
#
|
|
||||||
# Notes:
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.686:
|
|
||||||
#.MODEL flat,C
|
|
||||||
.xmm:
|
|
||||||
.code:
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# VOID *
|
|
||||||
# _mem_ZeroMem (
|
|
||||||
# IN VOID *Buffer,
|
|
||||||
# IN UINTN Count
|
|
||||||
# )
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
.global _InternalMemZeroMem
|
|
||||||
_InternalMemZeroMem:
|
|
||||||
push %edi
|
|
||||||
movl 8(%esp), %edi
|
|
||||||
movl 12(%esp), %edx
|
|
||||||
xorl %ecx, %ecx
|
|
||||||
subl %edi, %ecx
|
|
||||||
xorl %eax, %eax
|
|
||||||
andl $15, %ecx
|
|
||||||
jz L0
|
|
||||||
cmpl %edx, %ecx
|
|
||||||
cmova %edx, %ecx
|
|
||||||
subl %ecx, %edx
|
|
||||||
rep
|
|
||||||
stosb
|
|
||||||
L0:
|
|
||||||
movl %edx, %ecx
|
|
||||||
andl $15, %edx
|
|
||||||
shrl $4, %ecx
|
|
||||||
jz @ZeroBytes
|
|
||||||
pxor %xmm0, %xmm0
|
|
||||||
L1:
|
|
||||||
movntdq %xmm0, (%edi)
|
|
||||||
addl $16, %edi
|
|
||||||
loop L1
|
|
||||||
mfence
|
|
||||||
@ZeroBytes:
|
|
||||||
movl %edx, %ecx
|
|
||||||
rep
|
|
||||||
stosb
|
|
||||||
movl 8(%esp), %eax
|
|
||||||
pop %edi
|
|
||||||
ret
|
|
Loading…
Reference in New Issue