\r
.code\r
\r
+;------------------------------------------------------------------------------\r
+; VOID *\r
+; EFIAPI\r
+; InternalMemSetMem (\r
+; OUT VOID *Buffer,\r
+; IN UINTN Length,\r
+; IN UINT8 Value\r
+; );\r
+;------------------------------------------------------------------------------\r
InternalMemSetMem PROC USES rdi\r
mov rax, r8\r
mov ah, al\r
- DB 48h, 0fh, 6eh, 0c0h ; movq mm0, rax\r
+ DB 48h, 0fh, 6eh, 0c0h ; movd mm0, rax\r
mov r8, rcx\r
- mov rdi, r8\r
+ mov rdi, r8 ; rdi <- Buffer\r
mov rcx, rdx\r
+ and edx, 7\r
shr rcx, 3\r
jz @SetBytes\r
- DB 0fh, 70h, 0C0h, 00h ; pshufw mm0, mm0, 0h\r
-@@: \r
- DB 48h, 0fh, 0e7h, 07h ; movntq [rdi], mm0\r
+ DB 0fh, 70h, 0C0h, 00h ; pshufw mm0, mm0, 0h\r
+@@:\r
+ DB 0fh, 0e7h, 07h ; movntq [rdi], mm0\r
add rdi, 8\r
loop @B\r
mfence\r
@SetBytes:\r
- and rdx, 7\r
- mov rcx, rdx\r
+ mov ecx, edx\r
rep stosb\r
mov rax, r8\r
ret\r