summaryrefslogtreecommitdiff
path: root/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem.asm
diff options
context:
space:
mode:
Diffstat (limited to 'MdePkg/Library/BaseMemoryLibMmx/X64/SetMem.asm')
-rw-r--r--MdePkg/Library/BaseMemoryLibMmx/X64/SetMem.asm23
1 files changed, 16 insertions, 7 deletions
diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem.asm b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem.asm
index 9688c3d65b..923beef6c1 100644
--- a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem.asm
+++ b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem.asm
@@ -23,24 +23,33 @@
.code
+;------------------------------------------------------------------------------
+; VOID *
+; EFIAPI
+; InternalMemSetMem (
+; OUT VOID *Buffer,
+; IN UINTN Length,
+; IN UINT8 Value
+; );
+;------------------------------------------------------------------------------
InternalMemSetMem PROC USES rdi
mov rax, r8
mov ah, al
- DB 48h, 0fh, 6eh, 0c0h ; movq mm0, rax
+ DB 48h, 0fh, 6eh, 0c0h ; movd mm0, rax
mov r8, rcx
- mov rdi, r8
+ mov rdi, r8 ; rdi <- Buffer
mov rcx, rdx
+ and edx, 7
shr rcx, 3
jz @SetBytes
- DB 0fh, 70h, 0C0h, 00h ; pshufw mm0, mm0, 0h
-@@:
- DB 48h, 0fh, 0e7h, 07h ; movntq [rdi], mm0
+ DB 0fh, 70h, 0C0h, 00h ; pshufw mm0, mm0, 0h
+@@:
+ DB 0fh, 0e7h, 07h ; movntq [rdi], mm0
add rdi, 8
loop @B
mfence
@SetBytes:
- and rdx, 7
- mov rcx, rdx
+ mov ecx, edx
rep stosb
mov rax, r8
ret