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