Home | History | Annotate | Download | only in runtime
      1 /*++
      2 
      3 Copyright (c) 1999  Intel Corporation
      4 
      5 Module Name:
      6 
      7     EfiRtLib.h
      8 
      9 Abstract:
     10 
     11     EFI Runtime library functions
     12 
     13 
     14 
     15 Revision History
     16 
     17 --*/
     18 
     19 #include "efi.h"
     20 #include "efilib.h"
     21 #include "efirtlib.h"
     22 
     23 #ifndef __GNUC__
     24 #pragma RUNTIME_CODE(RtZeroMem)
     25 #endif
     26 VOID
     27 RUNTIMEFUNCTION
     28 RtZeroMem (
     29     IN VOID     *Buffer,
     30     IN UINTN     Size
     31     )
     32 {
     33     INT8        *pt;
     34 
     35     pt = Buffer;
     36     while (Size--) {
     37         *(pt++) = 0;
     38     }
     39 }
     40 
     41 #ifndef __GNUC__
     42 #pragma RUNTIME_CODE(RtSetMem)
     43 #endif
     44 VOID
     45 RUNTIMEFUNCTION
     46 RtSetMem (
     47     IN VOID     *Buffer,
     48     IN UINTN    Size,
     49     IN UINT8    Value
     50     )
     51 {
     52     INT8        *pt;
     53 
     54     pt = Buffer;
     55     while (Size--) {
     56         *(pt++) = Value;
     57     }
     58 }
     59 
     60 #ifndef __GNUC__
     61 #pragma RUNTIME_CODE(RtCopyMem)
     62 #endif
     63 VOID
     64 RUNTIMEFUNCTION
     65 RtCopyMem (
     66     IN VOID     *Dest,
     67     IN CONST VOID     *Src,
     68     IN UINTN    len
     69     )
     70 {
     71     CHAR8   *d;
     72     CONST CHAR8 *s = Src;
     73     d = Dest;
     74     while (len--) {
     75         *(d++) = *(s++);
     76     }
     77 }
     78 
     79 #ifndef __GNUC__
     80 #pragma RUNTIME_CODE(RtCompareMem)
     81 #endif
     82 INTN
     83 RUNTIMEFUNCTION
     84 RtCompareMem (
     85     IN CONST VOID     *Dest,
     86     IN CONST VOID     *Src,
     87     IN UINTN    len
     88     )
     89 {
     90     CONST CHAR8    *d = Dest, *s = Src;
     91     while (len--) {
     92         if (*d != *s) {
     93             return *d - *s;
     94         }
     95 
     96         d += 1;
     97         s += 1;
     98     }
     99 
    100     return 0;
    101 }
    102 
    103 #ifndef __GNUC__
    104 #pragma RUNTIME_CODE(RtCompareGuid)
    105 #endif
    106 INTN
    107 RUNTIMEFUNCTION
    108 RtCompareGuid (
    109     IN EFI_GUID     *Guid1,
    110     IN EFI_GUID     *Guid2
    111     )
    112 /*++
    113 
    114 Routine Description:
    115 
    116     Compares to GUIDs
    117 
    118 Arguments:
    119 
    120     Guid1       - guid to compare
    121     Guid2       - guid to compare
    122 
    123 Returns:
    124     = 0     if Guid1 == Guid2
    125 
    126 --*/
    127 {
    128     INT32       *g1, *g2, r;
    129 
    130     //
    131     // Compare 32 bits at a time
    132     //
    133 
    134     g1 = (INT32 *) Guid1;
    135     g2 = (INT32 *) Guid2;
    136 
    137     r  = g1[0] - g2[0];
    138     r |= g1[1] - g2[1];
    139     r |= g1[2] - g2[2];
    140     r |= g1[3] - g2[3];
    141 
    142     return r;
    143 }
    144 
    145 
    146