1/*++ 2 3Copyright (c) 1999 Intel Corporation 4 5Module Name: 6 7 EfiRtLib.h 8 9Abstract: 10 11 EFI Runtime library functions 12 13 14 15Revision 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 26VOID 27RUNTIMEFUNCTION 28RtZeroMem ( 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 44VOID 45RUNTIMEFUNCTION 46RtSetMem ( 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 63VOID 64RUNTIMEFUNCTION 65RtCopyMem ( 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 82INTN 83RUNTIMEFUNCTION 84RtCompareMem ( 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 106INTN 107RUNTIMEFUNCTION 108RtCompareGuid ( 109 IN EFI_GUID *Guid1, 110 IN EFI_GUID *Guid2 111 ) 112/*++ 113 114Routine Description: 115 116 Compares to GUIDs 117 118Arguments: 119 120 Guid1 - guid to compare 121 Guid2 - guid to compare 122 123Returns: 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