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