Home | History | Annotate | Download | only in X64
      1 ;------------------------------------------------------------------------------
      2 ;
      3 ; Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>
      4 ; This program and the accompanying materials
      5 ; are licensed and made available under the terms and conditions of the BSD License
      6 ; which accompanies this distribution.  The full text of the license may be found at
      7 ; http://opensource.org/licenses/bsd-license.php
      8 ;
      9 ; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     10 ; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     11 ;
     12 ; Module Name:
     13 ;
     14 ;   memsetRep8.asm
     15 ;
     16 ; Abstract:
     17 ;
     18 ;   SetMem function
     19 ;
     20 ; Notes:
     21 ;
     22 ;------------------------------------------------------------------------------
     23 
     24     .code
     25 
     26 ;------------------------------------------------------------------------------
     27 ; VOID
     28 ; memset (
     29 ;   OUT     VOID                      *Buffer,
     30 ;   IN      UINT8                     Value,
     31 ;   IN      UINTN                     Length
     32 ;   );
     33 ;------------------------------------------------------------------------------
     34 memset   PROC    USES    rdi rbx
     35     cmp     r8, 0                      ; if Size == 0, do nothing
     36     mov     r9,  rcx
     37     je      @SetDone
     38     mov     rax, rdx
     39     mov     bl,  al
     40     mov     bh,  bl
     41     mov     ax,  bx
     42     shl     rax, 10h
     43     mov     ax,  bx
     44     mov     ebx, eax
     45     shl     rax, 20h
     46     mov     eax, ebx
     47     mov     rdi, rcx
     48     mov     rcx, r8
     49     shr     rcx, 3
     50     rep     stosq
     51     mov     rcx, rdx
     52     and     rcx, 7
     53     rep     stosb
     54 @SetDone:
     55     mov     rax, r9
     56     ret
     57 memset   ENDP
     58 
     59     END
     60 
     61