summaryrefslogtreecommitdiff
path: root/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.asm
diff options
context:
space:
mode:
Diffstat (limited to 'MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.asm')
-rw-r--r--MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.asm21
1 files changed, 15 insertions, 6 deletions
diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.asm b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.asm
index a95020876c..01b72c55d5 100644
--- a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.asm
+++ b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.asm
@@ -23,23 +23,32 @@
.code
+;------------------------------------------------------------------------------
+; VOID *
+; EFIAPI
+; InternalMemSetMem16 (
+; OUT VOID *Buffer,
+; IN UINTN Length,
+; IN UINT16 Value
+; );
+;------------------------------------------------------------------------------
InternalMemSetMem16 PROC USES rdi
mov rax, r8
- DB 48h, 0fh, 6eh, 0c0h ; movq mm0, rax
+ DB 48h, 0fh, 6eh, 0c0h ; movd mm0, rax
mov r8, rcx
mov rdi, r8
mov rcx, rdx
- and rdx, 3
+ and edx, 3
shr rcx, 2
jz @SetWords
- 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
@SetWords:
- mov rcx, rdx
+ mov ecx, edx
rep stosw
mov rax, r8
ret