Home | History | Annotate | Download | only in EfiCommonLib
      1 /*++
      2 
      3 Copyright (c) 2004, 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   EfiCopyMem.c
     15 
     16 Abstract:
     17 
     18   Implementation of the EfiCopyMem routine. This function is broken
     19   out into its own source file so that it can be excluded from a
     20   build for a particular platform easily if an optimized version
     21   is desired.
     22 
     23 --*/
     24 
     25 #include "Tiano.h"
     26 
     27 VOID
     28 EfiCommonLibCopyMem (
     29   IN VOID   *Destination,
     30   IN VOID   *Source,
     31   IN UINTN  Length
     32   )
     33 /*++
     34 
     35 Routine Description:
     36 
     37   Copy Length bytes from Source to Destination.
     38 
     39 Arguments:
     40 
     41   Destination - Target of copy
     42 
     43   Source      - Place to copy from
     44 
     45   Length      - Number of bytes to copy
     46 
     47 Returns:
     48 
     49   None
     50 
     51 --*/
     52 {
     53   CHAR8 *Destination8;
     54   CHAR8 *Source8;
     55 
     56   if (Source < Destination) {
     57     Destination8  = (CHAR8 *) Destination + Length - 1;
     58     Source8       = (CHAR8 *) Source + Length - 1;
     59     while (Length--) {
     60       *(Destination8--) = *(Source8--);
     61     }
     62   } else {
     63     Destination8  = (CHAR8 *) Destination;
     64     Source8       = (CHAR8 *) Source;
     65     while (Length--) {
     66       *(Destination8++) = *(Source8++);
     67     }
     68   }
     69 }
     70