-;------------------------------------------------------------------------------\r
-;\r
-; Copyright (c) 2006, Intel Corporation\r
-; All rights reserved. This program and the accompanying materials\r
-; are licensed and made available under the terms and conditions of the BSD License\r
-; which accompanies this distribution. The full text of the license may be found at\r
-; http://opensource.org/licenses/bsd-license.php\r
-;\r
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-;\r
-; Module Name:\r
-;\r
-; SetMem.Asm\r
-;\r
-; Abstract:\r
-;\r
-; SetMem function\r
-;\r
-; Notes:\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; VOID *\r
-; EFIAPI\r
-; InternalMemSetMem (\r
-; IN VOID *Buffer,\r
-; IN UINTN Count,\r
-; IN UINT8 Value\r
-; )\r
-;------------------------------------------------------------------------------\r
+#------------------------------------------------------------------------------\r
+#\r
+# Copyright (c) 2006, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+# Module Name:\r
+#\r
+# SetMem.Asm\r
+#\r
+# Abstract:\r
+#\r
+# SetMem function\r
+#\r
+# Notes:\r
+#\r
+#------------------------------------------------------------------------------\r
+#------------------------------------------------------------------------------\r
+# VOID *\r
+# EFIAPI\r
+# InternalMemSetMem (\r
+# IN VOID *Buffer,\r
+# IN UINTN Count,\r
+# IN UINT8 Value\r
+# )\r
+#------------------------------------------------------------------------------\r
.intel_syntax noprefix\r
.globl ASM_PFX(InternalMemSetMem)\r
ASM_PFX(InternalMemZeroMem):\r
-InternalMemSetMem PROC USES rdi rbx\r
push rdi\r
push rbx\r
- push rcx ; push Buffer\r
- mov rax, r8 ; rax = Value\r
- and rax, 0ffh ; rax = lower 8 bits of r8, upper 56 bits are 0\r
- mov ah, al ; ah = al\r
- mov bx, ax ; bx = ax\r
- shl rax, 10h ; rax = ax << 16\r
- mov ax, bx ; ax = bx\r
- mov rbx, rax ; ebx = eax\r
- shl rax, 20h ; rax = rax << 32\r
- or rax, rbx ; eax = ebx\r
- mov rdi, rcx ; rdi = Buffer\r
- mov rcx, rdx ; rcx = Count\r
- shr rcx, 3 ; rcx = rcx / 8\r
+ push rcx # push Buffer\r
+ mov rax, r8 # rax = Value\r
+ and rax, 0xff # rax = lower 8 bits of r8, upper 56 bits are 0\r
+ mov ah, al # ah = al\r
+ mov bx, ax # bx = ax\r
+ shl rax, 0x10 # rax = ax << 16\r
+ mov ax, bx # ax = bx\r
+ mov rbx, rax # ebx = eax\r
+ shl rax, 0x20 # rax = rax << 32\r
+ or rax, rbx # eax = ebx\r
+ mov rdi, rcx # rdi = Buffer\r
+ mov rcx, rdx # rcx = Count\r
+ shr rcx, 3 # rcx = rcx / 8\r
cld\r
rep stosq \r
- mov rcx, rdx ; rcx = rdx\r
- and rcx, 7 ; rcx = rcx & 7\r
+ mov rcx, rdx # rcx = rdx\r
+ and rcx, 7 # rcx = rcx & 7\r
rep stosb \r
- pop rax ; rax = Buffer\r
+ pop rax # rax = Buffer\r
pop rbx\r
pop rdi\r
ret\r
-InternalMemSetMem ENDP\r
-\r
- END\r