Home | History | Annotate | Line # | Download | only in runtime
efirtlib.c revision 1.1
      1 /*	$NetBSD: efirtlib.c,v 1.1 2014/04/01 16:16:07 jakllsch 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 VOID     *Src,
     70     IN UINTN    len
     71     )
     72 {
     73     CHAR8    *d, *s;
     74 
     75     d = Dest;
     76     s = Src;
     77     while (len--) {
     78         *(d++) = *(s++);
     79     }
     80 }
     81 
     82 #ifndef __GNUC__
     83 #pragma RUNTIME_CODE(RtCompareMem)
     84 #endif
     85 INTN
     86 RUNTIMEFUNCTION
     87 RtCompareMem (
     88     IN VOID     *Dest,
     89     IN VOID     *Src,
     90     IN UINTN    len
     91     )
     92 {
     93     CHAR8    *d, *s;
     94 
     95     d = Dest;
     96     s = Src;
     97     while (len--) {
     98         if (*d != *s) {
     99             return *d - *s;
    100         }
    101 
    102         d += 1;
    103         s += 1;
    104     }
    105 
    106     return 0;
    107 }
    108 
    109 #ifndef __GNUC__
    110 #pragma RUNTIME_CODE(RtCompareGuid)
    111 #endif
    112 INTN
    113 RUNTIMEFUNCTION
    114 RtCompareGuid (
    115     IN EFI_GUID     *Guid1,
    116     IN EFI_GUID     *Guid2
    117     )
    118 /*++
    119 
    120 Routine Description:
    121 
    122     Compares to GUIDs
    123 
    124 Arguments:
    125 
    126     Guid1       - guid to compare
    127     Guid2       - guid to compare
    128 
    129 Returns:
    130     = 0     if Guid1 == Guid2
    131 
    132 --*/
    133 {
    134     INT32       *g1, *g2, r;
    135 
    136     //
    137     // Compare 32 bits at a time
    138     //
    139 
    140     g1 = (INT32 *) Guid1;
    141     g2 = (INT32 *) Guid2;
    142 
    143     r  = g1[0] - g2[0];
    144     r |= g1[1] - g2[1];
    145     r |= g1[2] - g2[2];
    146     r |= g1[3] - g2[3];
    147 
    148     return r;
    149 }
    150 
    151 
    152