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