1 | ## @file
|
---|
2 | # Base Library implementation.
|
---|
3 | #
|
---|
4 | # Copyright (c) 2007 - 2019, Intel Corporation. All rights reserved.<BR>
|
---|
5 | # Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
|
---|
6 | # Portions copyright (c) 2011 - 2013, ARM Ltd. All rights reserved.<BR>
|
---|
7 | #
|
---|
8 | # SPDX-License-Identifier: BSD-2-Clause-Patent
|
---|
9 | #
|
---|
10 | #
|
---|
11 | ##
|
---|
12 |
|
---|
13 | [Defines]
|
---|
14 | INF_VERSION = 0x00010005
|
---|
15 | BASE_NAME = BaseLib
|
---|
16 | MODULE_UNI_FILE = BaseLib.uni
|
---|
17 | FILE_GUID = 27d67720-ea68-48ae-93da-a3a074c90e30
|
---|
18 | MODULE_TYPE = BASE
|
---|
19 | VERSION_STRING = 1.1
|
---|
20 | LIBRARY_CLASS = BaseLib
|
---|
21 |
|
---|
22 | #
|
---|
23 | # VALID_ARCHITECTURES = IA32 X64 EBC ARM AARCH64
|
---|
24 | #
|
---|
25 |
|
---|
26 | [Sources]
|
---|
27 | CheckSum.c
|
---|
28 | SwitchStack.c
|
---|
29 | SwapBytes64.c
|
---|
30 | SwapBytes32.c
|
---|
31 | SwapBytes16.c
|
---|
32 | LongJump.c
|
---|
33 | SetJump.c
|
---|
34 | RShiftU64.c
|
---|
35 | RRotU64.c
|
---|
36 | RRotU32.c
|
---|
37 | MultU64x64.c
|
---|
38 | MultU64x32.c
|
---|
39 | MultS64x64.c
|
---|
40 | ModU64x32.c
|
---|
41 | LShiftU64.c
|
---|
42 | LRotU64.c
|
---|
43 | LRotU32.c
|
---|
44 | LowBitSet64.c
|
---|
45 | LowBitSet32.c
|
---|
46 | HighBitSet64.c
|
---|
47 | HighBitSet32.c
|
---|
48 | GetPowerOfTwo64.c
|
---|
49 | GetPowerOfTwo32.c
|
---|
50 | DivU64x64Remainder.c
|
---|
51 | DivU64x32Remainder.c
|
---|
52 | DivU64x32.c
|
---|
53 | DivS64x64Remainder.c
|
---|
54 | ARShiftU64.c
|
---|
55 | BitField.c
|
---|
56 | CpuDeadLoop.c
|
---|
57 | Cpu.c
|
---|
58 | LinkedList.c
|
---|
59 | SafeString.c
|
---|
60 | String.c
|
---|
61 | FilePaths.c
|
---|
62 | BaseLibInternals.h
|
---|
63 |
|
---|
64 | [Sources.Ia32]
|
---|
65 | Ia32/WriteTr.nasm
|
---|
66 | Ia32/Lfence.nasm
|
---|
67 |
|
---|
68 | Ia32/Wbinvd.c | MSFT
|
---|
69 | Ia32/WriteMm7.c | MSFT
|
---|
70 | Ia32/WriteMm6.c | MSFT
|
---|
71 | Ia32/WriteMm5.c | MSFT
|
---|
72 | Ia32/WriteMm4.c | MSFT
|
---|
73 | Ia32/WriteMm3.c | MSFT
|
---|
74 | Ia32/WriteMm2.c | MSFT
|
---|
75 | Ia32/WriteMm1.c | MSFT
|
---|
76 | Ia32/WriteMm0.c | MSFT
|
---|
77 | Ia32/WriteLdtr.c | MSFT
|
---|
78 | Ia32/WriteIdtr.c | MSFT
|
---|
79 | Ia32/WriteGdtr.c | MSFT
|
---|
80 | Ia32/WriteDr7.c | MSFT
|
---|
81 | Ia32/WriteDr6.c | MSFT
|
---|
82 | Ia32/WriteDr5.c | MSFT
|
---|
83 | Ia32/WriteDr4.c | MSFT
|
---|
84 | Ia32/WriteDr3.c | MSFT
|
---|
85 | Ia32/WriteDr2.c | MSFT
|
---|
86 | Ia32/WriteDr1.c | MSFT
|
---|
87 | Ia32/WriteDr0.c | MSFT
|
---|
88 | Ia32/WriteCr4.c | MSFT
|
---|
89 | Ia32/WriteCr3.c | MSFT
|
---|
90 | Ia32/WriteCr2.c | MSFT
|
---|
91 | Ia32/WriteCr0.c | MSFT
|
---|
92 | Ia32/WriteMsr64.c | MSFT
|
---|
93 | Ia32/SwapBytes64.c | MSFT
|
---|
94 | Ia32/RRotU64.c | MSFT
|
---|
95 | Ia32/RShiftU64.c | MSFT
|
---|
96 | Ia32/ReadPmc.c | MSFT
|
---|
97 | Ia32/ReadTsc.c | MSFT
|
---|
98 | Ia32/ReadLdtr.c | MSFT
|
---|
99 | Ia32/ReadIdtr.c | MSFT
|
---|
100 | Ia32/ReadGdtr.c | MSFT
|
---|
101 | Ia32/ReadTr.c | MSFT
|
---|
102 | Ia32/ReadSs.c | MSFT
|
---|
103 | Ia32/ReadGs.c | MSFT
|
---|
104 | Ia32/ReadFs.c | MSFT
|
---|
105 | Ia32/ReadEs.c | MSFT
|
---|
106 | Ia32/ReadDs.c | MSFT
|
---|
107 | Ia32/ReadCs.c | MSFT
|
---|
108 | Ia32/ReadMsr64.c | MSFT
|
---|
109 | Ia32/ReadMm7.c | MSFT
|
---|
110 | Ia32/ReadMm6.c | MSFT
|
---|
111 | Ia32/ReadMm5.c | MSFT
|
---|
112 | Ia32/ReadMm4.c | MSFT
|
---|
113 | Ia32/ReadMm3.c | MSFT
|
---|
114 | Ia32/ReadMm2.c | MSFT
|
---|
115 | Ia32/ReadMm1.c | MSFT
|
---|
116 | Ia32/ReadMm0.c | MSFT
|
---|
117 | Ia32/ReadEflags.c | MSFT
|
---|
118 | Ia32/ReadDr7.c | MSFT
|
---|
119 | Ia32/ReadDr6.c | MSFT
|
---|
120 | Ia32/ReadDr5.c | MSFT
|
---|
121 | Ia32/ReadDr4.c | MSFT
|
---|
122 | Ia32/ReadDr3.c | MSFT
|
---|
123 | Ia32/ReadDr2.c | MSFT
|
---|
124 | Ia32/ReadDr1.c | MSFT
|
---|
125 | Ia32/ReadDr0.c | MSFT
|
---|
126 | Ia32/ReadCr4.c | MSFT
|
---|
127 | Ia32/ReadCr3.c | MSFT
|
---|
128 | Ia32/ReadCr2.c | MSFT
|
---|
129 | Ia32/ReadCr0.c | MSFT
|
---|
130 | Ia32/Mwait.c | MSFT
|
---|
131 | Ia32/Monitor.c | MSFT
|
---|
132 | Ia32/ModU64x32.c | MSFT
|
---|
133 | Ia32/MultU64x64.c | MSFT
|
---|
134 | Ia32/MultU64x32.c | MSFT
|
---|
135 | Ia32/LShiftU64.c | MSFT
|
---|
136 | Ia32/LRotU64.c | MSFT
|
---|
137 | Ia32/Invd.c | MSFT
|
---|
138 | Ia32/FxRestore.c | MSFT
|
---|
139 | Ia32/FxSave.c | MSFT
|
---|
140 | Ia32/FlushCacheLine.c | MSFT
|
---|
141 | Ia32/EnablePaging32.c | MSFT
|
---|
142 | Ia32/EnableInterrupts.c | MSFT
|
---|
143 | Ia32/EnableDisableInterrupts.c | MSFT
|
---|
144 | Ia32/DivU64x32Remainder.c | MSFT
|
---|
145 | Ia32/DivU64x32.c | MSFT
|
---|
146 | Ia32/DisablePaging32.c | MSFT
|
---|
147 | Ia32/DisableInterrupts.c | MSFT
|
---|
148 | Ia32/CpuPause.c | MSFT
|
---|
149 | Ia32/CpuIdEx.c | MSFT
|
---|
150 | Ia32/CpuId.c | MSFT
|
---|
151 | Ia32/CpuBreakpoint.c | MSFT
|
---|
152 | Ia32/ARShiftU64.c | MSFT
|
---|
153 | Ia32/EnableCache.c | MSFT
|
---|
154 | Ia32/DisableCache.c | MSFT
|
---|
155 |
|
---|
156 |
|
---|
157 | Ia32/GccInline.c | GCC
|
---|
158 | Ia32/Thunk16.nasm
|
---|
159 | Ia32/EnableDisableInterrupts.nasm| GCC
|
---|
160 | Ia32/EnablePaging64.nasm
|
---|
161 | Ia32/DisablePaging32.nasm| GCC
|
---|
162 | Ia32/EnablePaging32.nasm| GCC
|
---|
163 | Ia32/Mwait.nasm| GCC
|
---|
164 | Ia32/Monitor.nasm| GCC
|
---|
165 | Ia32/CpuIdEx.nasm| GCC
|
---|
166 | Ia32/CpuId.nasm| GCC
|
---|
167 | Ia32/LongJump.nasm
|
---|
168 | Ia32/SetJump.nasm
|
---|
169 | Ia32/SwapBytes64.nasm| GCC
|
---|
170 | Ia32/DivU64x64Remainder.nasm
|
---|
171 | Ia32/DivU64x32Remainder.nasm| GCC
|
---|
172 | Ia32/ModU64x32.nasm| GCC
|
---|
173 | Ia32/DivU64x32.nasm| GCC
|
---|
174 | Ia32/MultU64x64.nasm| GCC
|
---|
175 | Ia32/MultU64x32.nasm| GCC
|
---|
176 | Ia32/RRotU64.nasm| GCC
|
---|
177 | Ia32/LRotU64.nasm| GCC
|
---|
178 | Ia32/ARShiftU64.nasm| GCC
|
---|
179 | Ia32/RShiftU64.nasm| GCC
|
---|
180 | Ia32/LShiftU64.nasm| GCC
|
---|
181 | Ia32/EnableCache.nasm| GCC
|
---|
182 | Ia32/DisableCache.nasm| GCC
|
---|
183 | Ia32/RdRand.nasm
|
---|
184 |
|
---|
185 | Ia32/DivS64x64Remainder.c
|
---|
186 | Ia32/InternalSwitchStack.c | MSFT
|
---|
187 | Ia32/InternalSwitchStack.nasm | GCC
|
---|
188 | Ia32/Non-existing.c
|
---|
189 | Unaligned.c
|
---|
190 | X86WriteIdtr.c
|
---|
191 | X86WriteGdtr.c
|
---|
192 | X86Thunk.c
|
---|
193 | X86ReadIdtr.c
|
---|
194 | X86ReadGdtr.c
|
---|
195 | X86Msr.c
|
---|
196 | X86MemoryFence.c | MSFT
|
---|
197 | X86GetInterruptState.c
|
---|
198 | X86FxSave.c
|
---|
199 | X86FxRestore.c
|
---|
200 | X86EnablePaging64.c
|
---|
201 | X86EnablePaging32.c
|
---|
202 | X86DisablePaging64.c
|
---|
203 | X86DisablePaging32.c
|
---|
204 | X86RdRand.c
|
---|
205 | X86PatchInstruction.c
|
---|
206 | X86SpeculationBarrier.c
|
---|
207 |
|
---|
208 | # VBox - enable this for non-optimized IA32 builds.
|
---|
209 | # # Compiler helper (C RunTime) functions
|
---|
210 | # ../../../StdLib/LibC/CRT/Ia32/llmul.c | MSFT # __allmul
|
---|
211 | # ../../../StdLib/LibC/CRT/Ia32/llshl.c | MSFT # __allshl
|
---|
212 | # ../../../StdLib/LibC/CRT/Ia32/ulldiv.c | MSFT # __aulldiv
|
---|
213 | # ../../../StdLib/LibC/CRT/Ia32/ullrem.c | MSFT # __aullrem
|
---|
214 | # ../../../StdLib/LibC/CRT/Ia32/ullshr.c | MSFT # __aullshr
|
---|
215 | # ../../../StdLib/LibC/CRT/Ia32/lldiv.c | MSFT # __alldiv
|
---|
216 | # ../../../StdLib/LibC/CRT/Ia32/llrem.c | MSFT # __allrem
|
---|
217 | # ../../../StdLib/LibC/CRT/Ia32/lldvrm.c | MSFT # __alldvrm
|
---|
218 | # ../../../StdLib/LibC/CRT/Ia32/ulldvrm.c | MSFT # __aulldvrm
|
---|
219 | # VBox - end
|
---|
220 |
|
---|
221 | [Sources.X64]
|
---|
222 | X64/Thunk16.nasm
|
---|
223 | X64/CpuIdEx.nasm
|
---|
224 | X64/CpuId.nasm
|
---|
225 | X64/LongJump.nasm
|
---|
226 | X64/SetJump.nasm
|
---|
227 | X64/SwitchStack.nasm
|
---|
228 | X64/EnableCache.nasm
|
---|
229 | X64/DisableCache.nasm
|
---|
230 | X64/WriteTr.nasm
|
---|
231 | X64/Lfence.nasm
|
---|
232 |
|
---|
233 | X64/CpuBreakpoint.c | MSFT
|
---|
234 | X64/WriteMsr64.c | MSFT
|
---|
235 | X64/ReadMsr64.c | MSFT
|
---|
236 | X64/CpuPause.nasm| MSFT
|
---|
237 | X64/DisableInterrupts.nasm| MSFT
|
---|
238 | X64/EnableInterrupts.nasm| MSFT
|
---|
239 | X64/FlushCacheLine.nasm| MSFT
|
---|
240 | X64/Invd.nasm| MSFT
|
---|
241 | X64/Wbinvd.nasm| MSFT
|
---|
242 | X64/Mwait.nasm| MSFT
|
---|
243 | X64/Monitor.nasm| MSFT
|
---|
244 | X64/ReadPmc.nasm| MSFT
|
---|
245 | X64/ReadTsc.nasm| MSFT
|
---|
246 | X64/WriteMm7.nasm| MSFT
|
---|
247 | X64/WriteMm6.nasm| MSFT
|
---|
248 | X64/WriteMm5.nasm| MSFT
|
---|
249 | X64/WriteMm4.nasm| MSFT
|
---|
250 | X64/WriteMm3.nasm| MSFT
|
---|
251 | X64/WriteMm2.nasm| MSFT
|
---|
252 | X64/WriteMm1.nasm| MSFT
|
---|
253 | X64/WriteMm0.nasm| MSFT
|
---|
254 | X64/ReadMm7.nasm| MSFT
|
---|
255 | X64/ReadMm6.nasm| MSFT
|
---|
256 | X64/ReadMm5.nasm| MSFT
|
---|
257 | X64/ReadMm4.nasm| MSFT
|
---|
258 | X64/ReadMm3.nasm| MSFT
|
---|
259 | X64/ReadMm2.nasm| MSFT
|
---|
260 | X64/ReadMm1.nasm| MSFT
|
---|
261 | X64/ReadMm0.nasm| MSFT
|
---|
262 | X64/FxRestore.nasm| MSFT
|
---|
263 | X64/FxSave.nasm| MSFT
|
---|
264 | X64/WriteLdtr.nasm| MSFT
|
---|
265 | X64/ReadLdtr.nasm| MSFT
|
---|
266 | X64/WriteIdtr.nasm| MSFT
|
---|
267 | X64/ReadIdtr.nasm| MSFT
|
---|
268 | X64/WriteGdtr.nasm| MSFT
|
---|
269 | X64/ReadGdtr.nasm| MSFT
|
---|
270 | X64/ReadTr.nasm| MSFT
|
---|
271 | X64/ReadSs.nasm| MSFT
|
---|
272 | X64/ReadGs.nasm| MSFT
|
---|
273 | X64/ReadFs.nasm| MSFT
|
---|
274 | X64/ReadEs.nasm| MSFT
|
---|
275 | X64/ReadDs.nasm| MSFT
|
---|
276 | X64/ReadCs.nasm| MSFT
|
---|
277 | X64/WriteDr7.nasm| MSFT
|
---|
278 | X64/WriteDr6.nasm| MSFT
|
---|
279 | X64/WriteDr5.nasm| MSFT
|
---|
280 | X64/WriteDr4.nasm| MSFT
|
---|
281 | X64/WriteDr3.nasm| MSFT
|
---|
282 | X64/WriteDr2.nasm| MSFT
|
---|
283 | X64/WriteDr1.nasm| MSFT
|
---|
284 | X64/WriteDr0.nasm| MSFT
|
---|
285 | X64/ReadDr7.nasm| MSFT
|
---|
286 | X64/ReadDr6.nasm| MSFT
|
---|
287 | X64/ReadDr5.nasm| MSFT
|
---|
288 | X64/ReadDr4.nasm| MSFT
|
---|
289 | X64/ReadDr3.nasm| MSFT
|
---|
290 | X64/ReadDr2.nasm| MSFT
|
---|
291 | X64/ReadDr1.nasm| MSFT
|
---|
292 | X64/ReadDr0.nasm| MSFT
|
---|
293 | X64/WriteCr4.nasm| MSFT
|
---|
294 | X64/WriteCr3.nasm| MSFT
|
---|
295 | X64/WriteCr2.nasm| MSFT
|
---|
296 | X64/WriteCr0.nasm| MSFT
|
---|
297 | X64/ReadCr4.nasm| MSFT
|
---|
298 | X64/ReadCr3.nasm| MSFT
|
---|
299 | X64/ReadCr2.nasm| MSFT
|
---|
300 | X64/ReadCr0.nasm| MSFT
|
---|
301 | X64/ReadEflags.nasm| MSFT
|
---|
302 |
|
---|
303 |
|
---|
304 | X64/Non-existing.c
|
---|
305 | Math64.c
|
---|
306 | Unaligned.c
|
---|
307 | X86WriteIdtr.c
|
---|
308 | X86WriteGdtr.c
|
---|
309 | X86Thunk.c
|
---|
310 | X86ReadIdtr.c
|
---|
311 | X86ReadGdtr.c
|
---|
312 | X86Msr.c
|
---|
313 | X86MemoryFence.c | MSFT
|
---|
314 | X86GetInterruptState.c
|
---|
315 | X86FxSave.c
|
---|
316 | X86FxRestore.c
|
---|
317 | X86EnablePaging64.c
|
---|
318 | X86EnablePaging32.c
|
---|
319 | X86DisablePaging64.c
|
---|
320 | X86DisablePaging32.c
|
---|
321 | X86RdRand.c
|
---|
322 | X86PatchInstruction.c
|
---|
323 | X86SpeculationBarrier.c
|
---|
324 | X64/GccInline.c | GCC
|
---|
325 | X64/EnableDisableInterrupts.nasm
|
---|
326 | X64/DisablePaging64.nasm
|
---|
327 | X64/RdRand.nasm
|
---|
328 | ChkStkGcc.c | GCC
|
---|
329 |
|
---|
330 | [Sources.EBC]
|
---|
331 | Ebc/CpuBreakpoint.c
|
---|
332 | Ebc/SetJumpLongJump.c
|
---|
333 | Ebc/SwitchStack.c
|
---|
334 | Ebc/SpeculationBarrier.c
|
---|
335 | Unaligned.c
|
---|
336 | Math64.c
|
---|
337 |
|
---|
338 | [Sources.ARM]
|
---|
339 | Arm/InternalSwitchStack.c
|
---|
340 | Arm/Unaligned.c
|
---|
341 | Math64.c | RVCT
|
---|
342 | Math64.c | MSFT
|
---|
343 |
|
---|
344 | Arm/SwitchStack.asm | RVCT
|
---|
345 | Arm/SetJumpLongJump.asm | RVCT
|
---|
346 | Arm/DisableInterrupts.asm | RVCT
|
---|
347 | Arm/EnableInterrupts.asm | RVCT
|
---|
348 | Arm/GetInterruptsState.asm | RVCT
|
---|
349 | Arm/CpuPause.asm | RVCT
|
---|
350 | Arm/CpuBreakpoint.asm | RVCT
|
---|
351 | Arm/MemoryFence.asm | RVCT
|
---|
352 | Arm/SpeculationBarrier.S | RVCT
|
---|
353 |
|
---|
354 | Arm/SwitchStack.asm | MSFT
|
---|
355 | Arm/SetJumpLongJump.asm | MSFT
|
---|
356 | Arm/DisableInterrupts.asm | MSFT
|
---|
357 | Arm/EnableInterrupts.asm | MSFT
|
---|
358 | Arm/GetInterruptsState.asm | MSFT
|
---|
359 | Arm/CpuPause.asm | MSFT
|
---|
360 | Arm/CpuBreakpoint.asm | MSFT
|
---|
361 | Arm/MemoryFence.asm | MSFT
|
---|
362 | Arm/SpeculationBarrier.asm | MSFT
|
---|
363 |
|
---|
364 | Arm/Math64.S | GCC
|
---|
365 | Arm/SwitchStack.S | GCC
|
---|
366 | Arm/EnableInterrupts.S | GCC
|
---|
367 | Arm/DisableInterrupts.S | GCC
|
---|
368 | Arm/GetInterruptsState.S | GCC
|
---|
369 | Arm/SetJumpLongJump.S | GCC
|
---|
370 | Arm/CpuBreakpoint.S | GCC
|
---|
371 | Arm/MemoryFence.S | GCC
|
---|
372 | Arm/SpeculationBarrier.S | GCC
|
---|
373 |
|
---|
374 | [Sources.AARCH64]
|
---|
375 | Arm/InternalSwitchStack.c
|
---|
376 | Arm/Unaligned.c
|
---|
377 | Math64.c
|
---|
378 |
|
---|
379 | AArch64/MemoryFence.S | GCC
|
---|
380 | AArch64/SwitchStack.S | GCC
|
---|
381 | AArch64/EnableInterrupts.S | GCC
|
---|
382 | AArch64/DisableInterrupts.S | GCC
|
---|
383 | AArch64/GetInterruptsState.S | GCC
|
---|
384 | AArch64/SetJumpLongJump.S | GCC
|
---|
385 | AArch64/CpuBreakpoint.S | GCC
|
---|
386 | AArch64/SpeculationBarrier.S | GCC
|
---|
387 |
|
---|
388 | AArch64/MemoryFence.asm | MSFT
|
---|
389 | AArch64/SwitchStack.asm | MSFT
|
---|
390 | AArch64/EnableInterrupts.asm | MSFT
|
---|
391 | AArch64/DisableInterrupts.asm | MSFT
|
---|
392 | AArch64/GetInterruptsState.asm | MSFT
|
---|
393 | AArch64/SetJumpLongJump.asm | MSFT
|
---|
394 | AArch64/CpuBreakpoint.asm | MSFT
|
---|
395 | AArch64/SpeculationBarrier.asm | MSFT
|
---|
396 |
|
---|
397 | [Packages]
|
---|
398 | MdePkg/MdePkg.dec
|
---|
399 |
|
---|
400 | [LibraryClasses]
|
---|
401 | PcdLib
|
---|
402 | DebugLib
|
---|
403 | BaseMemoryLib
|
---|
404 |
|
---|
405 | [Pcd]
|
---|
406 | gEfiMdePkgTokenSpaceGuid.PcdMaximumLinkedListLength ## SOMETIMES_CONSUMES
|
---|
407 | gEfiMdePkgTokenSpaceGuid.PcdMaximumAsciiStringLength ## SOMETIMES_CONSUMES
|
---|
408 | gEfiMdePkgTokenSpaceGuid.PcdMaximumUnicodeStringLength ## SOMETIMES_CONSUMES
|
---|
409 | gEfiMdePkgTokenSpaceGuid.PcdControlFlowEnforcementPropertyMask ## SOMETIMES_CONSUMES
|
---|
410 | gEfiMdePkgTokenSpaceGuid.PcdSpeculationBarrierType ## SOMETIMES_CONSUMES
|
---|
411 |
|
---|
412 | [FeaturePcd]
|
---|
413 | gEfiMdePkgTokenSpaceGuid.PcdVerifyNodeInList ## CONSUMES
|
---|
414 |
|
---|
415 | # VBox - enable this for non-optimized IA32 builds.
|
---|
416 | #[BuildOptions]
|
---|
417 | # MSFT:*_*_*_CC_FLAGS = /GL-
|
---|
418 | # VBox - end
|
---|