1## @file
2#  Base Library implementation.
3#
4#  Copyright (c) 2007 - 2015, 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#  This program and the accompanying materials
9#  are licensed and made available under the terms and conditions of the BSD License
10#  which accompanies this distribution. The full text of the license may be found at
11#  http://opensource.org/licenses/bsd-license.php.
12#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14#
15#
16##
17
18[Defines]
19  INF_VERSION                    = 0x00010005
20  BASE_NAME                      = BaseLib
21  MODULE_UNI_FILE                = BaseLib.uni
22  FILE_GUID                      = 27d67720-ea68-48ae-93da-a3a074c90e30
23  MODULE_TYPE                    = BASE
24  VERSION_STRING                 = 1.1
25  LIBRARY_CLASS                  = BaseLib
26
27#
28#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC ARM AARCH64
29#
30
31[Sources]
32  CheckSum.c
33  SwitchStack.c
34  SwapBytes64.c
35  SwapBytes32.c
36  SwapBytes16.c
37  LongJump.c
38  SetJump.c
39  RShiftU64.c
40  RRotU64.c
41  RRotU32.c
42  MultU64x64.c
43  MultU64x32.c
44  MultS64x64.c
45  ModU64x32.c
46  LShiftU64.c
47  LRotU64.c
48  LRotU32.c
49  LowBitSet64.c
50  LowBitSet32.c
51  HighBitSet64.c
52  HighBitSet32.c
53  GetPowerOfTwo64.c
54  GetPowerOfTwo32.c
55  DivU64x64Remainder.c
56  DivU64x32Remainder.c
57  DivU64x32.c
58  DivS64x64Remainder.c
59  ARShiftU64.c
60  BitField.c
61  CpuDeadLoop.c
62  Cpu.c
63  LinkedList.c
64  SafeString.c
65  String.c
66  FilePaths.c
67  BaseLibInternals.h
68
69[Sources.Ia32]
70  Ia32/Wbinvd.c | MSFT
71  Ia32/WriteMm7.c | MSFT
72  Ia32/WriteMm6.c | MSFT
73  Ia32/WriteMm5.c | MSFT
74  Ia32/WriteMm4.c | MSFT
75  Ia32/WriteMm3.c | MSFT
76  Ia32/WriteMm2.c | MSFT
77  Ia32/WriteMm1.c | MSFT
78  Ia32/WriteMm0.c | MSFT
79  Ia32/WriteLdtr.c | MSFT
80  Ia32/WriteIdtr.c | MSFT
81  Ia32/WriteGdtr.c | MSFT
82  Ia32/WriteDr7.c | MSFT
83  Ia32/WriteDr6.c | MSFT
84  Ia32/WriteDr5.c | MSFT
85  Ia32/WriteDr4.c | MSFT
86  Ia32/WriteDr3.c | MSFT
87  Ia32/WriteDr2.c | MSFT
88  Ia32/WriteDr1.c | MSFT
89  Ia32/WriteDr0.c | MSFT
90  Ia32/WriteCr4.c | MSFT
91  Ia32/WriteCr3.c | MSFT
92  Ia32/WriteCr2.c | MSFT
93  Ia32/WriteCr0.c | MSFT
94  Ia32/WriteMsr64.c | MSFT
95  Ia32/SwapBytes64.c | MSFT
96  Ia32/SetJump.c | MSFT
97  Ia32/RRotU64.c | MSFT
98  Ia32/RShiftU64.c | MSFT
99  Ia32/ReadPmc.c | MSFT
100  Ia32/ReadTsc.c | MSFT
101  Ia32/ReadLdtr.c | MSFT
102  Ia32/ReadIdtr.c | MSFT
103  Ia32/ReadGdtr.c | MSFT
104  Ia32/ReadTr.c | MSFT
105  Ia32/ReadSs.c | MSFT
106  Ia32/ReadGs.c | MSFT
107  Ia32/ReadFs.c | MSFT
108  Ia32/ReadEs.c | MSFT
109  Ia32/ReadDs.c | MSFT
110  Ia32/ReadCs.c | MSFT
111  Ia32/ReadMsr64.c | MSFT
112  Ia32/ReadMm7.c | MSFT
113  Ia32/ReadMm6.c | MSFT
114  Ia32/ReadMm5.c | MSFT
115  Ia32/ReadMm4.c | MSFT
116  Ia32/ReadMm3.c | MSFT
117  Ia32/ReadMm2.c | MSFT
118  Ia32/ReadMm1.c | MSFT
119  Ia32/ReadMm0.c | MSFT
120  Ia32/ReadEflags.c | MSFT
121  Ia32/ReadDr7.c | MSFT
122  Ia32/ReadDr6.c | MSFT
123  Ia32/ReadDr5.c | MSFT
124  Ia32/ReadDr4.c | MSFT
125  Ia32/ReadDr3.c | MSFT
126  Ia32/ReadDr2.c | MSFT
127  Ia32/ReadDr1.c | MSFT
128  Ia32/ReadDr0.c | MSFT
129  Ia32/ReadCr4.c | MSFT
130  Ia32/ReadCr3.c | MSFT
131  Ia32/ReadCr2.c | MSFT
132  Ia32/ReadCr0.c | MSFT
133  Ia32/Mwait.c | MSFT
134  Ia32/Monitor.c | MSFT
135  Ia32/ModU64x32.c | MSFT
136  Ia32/MultU64x64.c | MSFT
137  Ia32/MultU64x32.c | MSFT
138  Ia32/LShiftU64.c | MSFT
139  Ia32/LRotU64.c | MSFT
140  Ia32/LongJump.c | MSFT
141  Ia32/Invd.c | MSFT
142  Ia32/FxRestore.c | MSFT
143  Ia32/FxSave.c | MSFT
144  Ia32/FlushCacheLine.c | MSFT
145  Ia32/EnablePaging32.c | MSFT
146  Ia32/EnableInterrupts.c | MSFT
147  Ia32/EnableDisableInterrupts.c | MSFT
148  Ia32/DivU64x64Remainder.asm | MSFT
149  Ia32/DivU64x32Remainder.c | MSFT
150  Ia32/DivU64x32.c | MSFT
151  Ia32/DisablePaging32.c | MSFT
152  Ia32/DisableInterrupts.c | MSFT
153  Ia32/CpuPause.c | MSFT
154  Ia32/CpuIdEx.c | MSFT
155  Ia32/CpuId.c | MSFT
156  Ia32/CpuBreakpoint.c | MSFT
157  Ia32/ARShiftU64.c | MSFT
158  Ia32/Thunk16.asm | MSFT
159  Ia32/EnablePaging64.asm | MSFT
160  Ia32/EnableCache.c | MSFT
161  Ia32/DisableCache.c | MSFT
162  Ia32/RdRand.asm | MSFT
163
164  Ia32/Wbinvd.asm | INTEL
165  Ia32/WriteMm7.asm | INTEL
166  Ia32/WriteMm6.asm | INTEL
167  Ia32/WriteMm5.asm | INTEL
168  Ia32/WriteMm4.asm | INTEL
169  Ia32/WriteMm3.asm | INTEL
170  Ia32/WriteMm2.asm | INTEL
171  Ia32/WriteMm1.asm | INTEL
172  Ia32/WriteMm0.asm | INTEL
173  Ia32/WriteLdtr.asm | INTEL
174  Ia32/WriteIdtr.asm | INTEL
175  Ia32/WriteGdtr.asm | INTEL
176  Ia32/WriteDr7.asm | INTEL
177  Ia32/WriteDr6.asm | INTEL
178  Ia32/WriteDr5.asm | INTEL
179  Ia32/WriteDr4.asm | INTEL
180  Ia32/WriteDr3.asm | INTEL
181  Ia32/WriteDr2.asm | INTEL
182  Ia32/WriteDr1.asm | INTEL
183  Ia32/WriteDr0.asm | INTEL
184  Ia32/WriteCr4.asm | INTEL
185  Ia32/WriteCr3.asm | INTEL
186  Ia32/WriteCr2.asm | INTEL
187  Ia32/WriteCr0.asm | INTEL
188  Ia32/WriteMsr64.asm | INTEL
189  Ia32/SwapBytes64.asm | INTEL
190  Ia32/SetJump.asm | INTEL
191  Ia32/RRotU64.asm | INTEL
192  Ia32/RShiftU64.asm | INTEL
193  Ia32/ReadPmc.asm | INTEL
194  Ia32/ReadTsc.asm | INTEL
195  Ia32/ReadLdtr.asm | INTEL
196  Ia32/ReadIdtr.asm | INTEL
197  Ia32/ReadGdtr.asm | INTEL
198  Ia32/ReadTr.asm | INTEL
199  Ia32/ReadSs.asm | INTEL
200  Ia32/ReadGs.asm | INTEL
201  Ia32/ReadFs.asm | INTEL
202  Ia32/ReadEs.asm | INTEL
203  Ia32/ReadDs.asm | INTEL
204  Ia32/ReadCs.asm | INTEL
205  Ia32/ReadMsr64.asm | INTEL
206  Ia32/ReadMm7.asm | INTEL
207  Ia32/ReadMm6.asm | INTEL
208  Ia32/ReadMm5.asm | INTEL
209  Ia32/ReadMm4.asm | INTEL
210  Ia32/ReadMm3.asm | INTEL
211  Ia32/ReadMm2.asm | INTEL
212  Ia32/ReadMm1.asm | INTEL
213  Ia32/ReadMm0.asm | INTEL
214  Ia32/ReadEflags.asm | INTEL
215  Ia32/ReadDr7.asm | INTEL
216  Ia32/ReadDr6.asm | INTEL
217  Ia32/ReadDr5.asm | INTEL
218  Ia32/ReadDr4.asm | INTEL
219  Ia32/ReadDr3.asm | INTEL
220  Ia32/ReadDr2.asm | INTEL
221  Ia32/ReadDr1.asm | INTEL
222  Ia32/ReadDr0.asm | INTEL
223  Ia32/ReadCr4.asm | INTEL
224  Ia32/ReadCr3.asm | INTEL
225  Ia32/ReadCr2.asm | INTEL
226  Ia32/ReadCr0.asm | INTEL
227  Ia32/Mwait.asm | INTEL
228  Ia32/Monitor.asm | INTEL
229  Ia32/ModU64x32.asm | INTEL
230  Ia32/MultU64x64.asm | INTEL
231  Ia32/MultU64x32.asm | INTEL
232  Ia32/LShiftU64.asm | INTEL
233  Ia32/LRotU64.asm | INTEL
234  Ia32/LongJump.asm | INTEL
235  Ia32/Invd.asm | INTEL
236  Ia32/FxRestore.asm | INTEL
237  Ia32/FxSave.asm | INTEL
238  Ia32/FlushCacheLine.asm | INTEL
239  Ia32/EnablePaging32.asm | INTEL
240  Ia32/EnableInterrupts.asm | INTEL
241  Ia32/EnableDisableInterrupts.asm | INTEL
242  Ia32/DivU64x64Remainder.asm | INTEL
243  Ia32/DivU64x32Remainder.asm | INTEL
244  Ia32/DivU64x32.asm | INTEL
245  Ia32/DisablePaging32.asm | INTEL
246  Ia32/DisableInterrupts.asm | INTEL
247  Ia32/CpuPause.asm | INTEL
248  Ia32/CpuIdEx.asm | INTEL
249  Ia32/CpuId.asm | INTEL
250  Ia32/CpuBreakpoint.asm | INTEL
251  Ia32/ARShiftU64.asm | INTEL
252  Ia32/Thunk16.asm | INTEL
253  Ia32/EnablePaging64.asm | INTEL
254  Ia32/EnableCache.asm | INTEL
255  Ia32/DisableCache.asm | INTEL
256  Ia32/RdRand.asm | INTEL
257
258  Ia32/GccInline.c | GCC
259  Ia32/Thunk16.nasm | GCC
260  Ia32/Thunk16.S | XCODE
261  Ia32/EnableDisableInterrupts.S | GCC
262  Ia32/EnablePaging64.S | GCC
263  Ia32/DisablePaging32.S | GCC
264  Ia32/EnablePaging32.S | GCC
265  Ia32/Mwait.S | GCC
266  Ia32/Monitor.S | GCC
267  Ia32/CpuIdEx.S | GCC
268  Ia32/CpuId.S | GCC
269  Ia32/LongJump.S | GCC
270  Ia32/SetJump.S | GCC
271  Ia32/SwapBytes64.S | GCC
272  Ia32/DivU64x64Remainder.S | GCC
273  Ia32/DivU64x32Remainder.S | GCC
274  Ia32/ModU64x32.S | GCC
275  Ia32/DivU64x32.S | GCC
276  Ia32/MultU64x64.S | GCC
277  Ia32/MultU64x32.S | GCC
278  Ia32/RRotU64.S | GCC
279  Ia32/LRotU64.S | GCC
280  Ia32/ARShiftU64.S | GCC
281  Ia32/RShiftU64.S | GCC
282  Ia32/LShiftU64.S | GCC
283  Ia32/EnableCache.S | GCC
284  Ia32/DisableCache.S | GCC
285  Ia32/RdRand.S | GCC
286
287  Ia32/DivS64x64Remainder.c
288  Ia32/InternalSwitchStack.c | MSFT
289  Ia32/InternalSwitchStack.c | INTEL
290  Ia32/InternalSwitchStack.S | GCC
291  Ia32/Non-existing.c
292  Unaligned.c
293  X86WriteIdtr.c
294  X86WriteGdtr.c
295  X86Thunk.c
296  X86ReadIdtr.c
297  X86ReadGdtr.c
298  X86Msr.c
299  X86MemoryFence.c | MSFT
300  X86MemoryFence.c | INTEL
301  X86GetInterruptState.c
302  X86FxSave.c
303  X86FxRestore.c
304  X86EnablePaging64.c
305  X86EnablePaging32.c
306  X86DisablePaging64.c
307  X86DisablePaging32.c
308
309[Sources.X64]
310  X64/Thunk16.asm
311  X64/CpuPause.asm
312  X64/EnableDisableInterrupts.asm
313  X64/DisableInterrupts.asm
314  X64/EnableInterrupts.asm
315  X64/FlushCacheLine.asm
316  X64/Invd.asm
317  X64/Wbinvd.asm
318  X64/DisablePaging64.asm
319  X64/Mwait.asm
320  X64/Monitor.asm
321  X64/ReadPmc.asm
322  X64/ReadTsc.asm
323  X64/WriteMm7.asm
324  X64/WriteMm6.asm
325  X64/WriteMm5.asm
326  X64/WriteMm4.asm
327  X64/WriteMm3.asm
328  X64/WriteMm2.asm
329  X64/WriteMm1.asm
330  X64/WriteMm0.asm
331  X64/ReadMm7.asm
332  X64/ReadMm6.asm
333  X64/ReadMm5.asm
334  X64/ReadMm4.asm
335  X64/ReadMm3.asm
336  X64/ReadMm2.asm
337  X64/ReadMm1.asm
338  X64/ReadMm0.asm
339  X64/FxRestore.asm
340  X64/FxSave.asm
341  X64/WriteLdtr.asm
342  X64/ReadLdtr.asm
343  X64/WriteIdtr.asm
344  X64/ReadIdtr.asm
345  X64/WriteGdtr.asm
346  X64/ReadGdtr.asm
347  X64/ReadTr.asm
348  X64/ReadSs.asm
349  X64/ReadGs.asm
350  X64/ReadFs.asm
351  X64/ReadEs.asm
352  X64/ReadDs.asm
353  X64/ReadCs.asm
354  X64/WriteDr7.asm
355  X64/WriteDr6.asm
356  X64/WriteDr5.asm
357  X64/WriteDr4.asm
358  X64/WriteDr3.asm
359  X64/WriteDr2.asm
360  X64/WriteDr1.asm
361  X64/WriteDr0.asm
362  X64/ReadDr7.asm
363  X64/ReadDr6.asm
364  X64/ReadDr5.asm
365  X64/ReadDr4.asm
366  X64/ReadDr3.asm
367  X64/ReadDr2.asm
368  X64/ReadDr1.asm
369  X64/ReadDr0.asm
370  X64/WriteCr4.asm
371  X64/WriteCr3.asm
372  X64/WriteCr2.asm
373  X64/WriteCr0.asm
374  X64/ReadCr4.asm
375  X64/ReadCr3.asm
376  X64/ReadCr2.asm
377  X64/ReadCr0.asm
378  X64/ReadEflags.asm
379  X64/CpuIdEx.asm
380  X64/CpuId.asm
381  X64/LongJump.asm
382  X64/SetJump.asm
383  X64/SwitchStack.asm
384  X64/EnableCache.asm
385  X64/DisableCache.asm
386
387  X64/CpuBreakpoint.c | MSFT
388  X64/WriteMsr64.c | MSFT
389  X64/ReadMsr64.c | MSFT
390  X64/RdRand.asm | MSFT
391
392  X64/CpuBreakpoint.asm | INTEL
393  X64/WriteMsr64.asm | INTEL
394  X64/ReadMsr64.asm | INTEL
395  X64/RdRand.asm | INTEL
396
397  X64/Non-existing.c
398  Math64.c
399  Unaligned.c
400  X86WriteIdtr.c
401  X86WriteGdtr.c
402  X86Thunk.c
403  X86ReadIdtr.c
404  X86ReadGdtr.c
405  X86Msr.c
406  X86MemoryFence.c | MSFT
407  X86MemoryFence.c | INTEL
408  X86GetInterruptState.c
409  X86FxSave.c
410  X86FxRestore.c
411  X86EnablePaging64.c
412  X86EnablePaging32.c
413  X86DisablePaging64.c
414  X86DisablePaging32.c
415  X64/GccInline.c | GCC
416  X64/Thunk16.nasm | GCC
417  X64/Thunk16.S | XCODE
418  X64/SwitchStack.S | GCC
419  X64/SetJump.S | GCC
420  X64/LongJump.S | GCC
421  X64/EnableDisableInterrupts.S | GCC
422  X64/DisablePaging64.S | GCC
423  X64/CpuId.S | GCC
424  X64/CpuIdEx.S | GCC
425  X64/EnableCache.S | GCC
426  X64/DisableCache.S | GCC
427  X64/RdRand.S | GCC
428  ChkStkGcc.c  | GCC
429
430[Sources.IPF]
431  Ipf/AccessGp.s
432  Ipf/ReadCpuid.s
433  Ipf/ExecFc.s
434  Ipf/AsmPalCall.s
435  Ipf/AccessPsr.s
436  Ipf/AccessPmr.s
437  Ipf/AccessKr.s
438  Ipf/AccessKr7.s
439  Ipf/AccessGcr.s
440  Ipf/AccessEicr.s
441  Ipf/AccessDbr.s
442  Ipf/AccessMsr.s        | INTEL
443  Ipf/AccessMsr.s        | GCC
444  Ipf/AccessMsrDb.s      | MSFT
445  Ipf/InternalFlushCacheRange.s
446  Ipf/FlushCacheRange.c
447  Ipf/InternalSwitchStack.c
448  Ipf/GetInterruptState.s
449  Ipf/CpuPause.s
450  Ipf/CpuBreakpoint.c    | INTEL
451  Ipf/CpuBreakpointMsc.c | MSFT
452  Ipf/AsmCpuMisc.s       | GCC
453  Ipf/Unaligned.c
454  Ipf/SwitchStack.s
455  Ipf/LongJmp.s
456  Ipf/SetJmp.s
457  Ipf/ReadCr.s
458  Ipf/ReadAr.s
459  Ipf/Ia64gen.h
460  Ipf/Asm.h
461  Math64.c
462
463[Sources.EBC]
464  Ebc/CpuBreakpoint.c
465  Ebc/SetJumpLongJump.c
466  Ebc/SwitchStack.c
467  Unaligned.c
468  Math64.c
469
470[Sources.ARM]
471  Arm/InternalSwitchStack.c
472  Arm/Unaligned.c
473  Math64.c                   | RVCT
474
475  Arm/SwitchStack.asm        | RVCT
476  Arm/SetJumpLongJump.asm    | RVCT
477  Arm/DisableInterrupts.asm  | RVCT
478  Arm/EnableInterrupts.asm   | RVCT
479  Arm/GetInterruptsState.asm | RVCT
480  Arm/CpuPause.asm           | RVCT
481  Arm/CpuBreakpoint.asm      | RVCT
482  Arm/MemoryFence.asm        | RVCT
483
484  Arm/Math64.S                  | GCC
485  Arm/SwitchStack.S             | GCC
486  Arm/EnableInterrupts.S        | GCC
487  Arm/DisableInterrupts.S       | GCC
488  Arm/GetInterruptsState.S      | GCC
489  Arm/SetJumpLongJump.S         | GCC
490  Arm/CpuBreakpoint.S           | GCC
491  Arm/MemoryFence.S             | GCC
492
493[Sources.AARCH64]
494  Arm/InternalSwitchStack.c
495  Arm/Unaligned.c
496  Math64.c
497
498  AArch64/MemoryFence.S             | GCC
499  AArch64/SwitchStack.S             | GCC
500  AArch64/EnableInterrupts.S        | GCC
501  AArch64/DisableInterrupts.S       | GCC
502  AArch64/GetInterruptsState.S      | GCC
503  AArch64/SetJumpLongJump.S         | GCC
504  AArch64/CpuBreakpoint.S           | GCC
505
506[Packages]
507  MdePkg/MdePkg.dec
508
509[LibraryClasses]
510  PcdLib
511  DebugLib
512  BaseMemoryLib
513
514[Pcd]
515  gEfiMdePkgTokenSpaceGuid.PcdMaximumLinkedListLength      ## SOMETIMES_CONSUMES
516  gEfiMdePkgTokenSpaceGuid.PcdMaximumAsciiStringLength     ## SOMETIMES_CONSUMES
517  gEfiMdePkgTokenSpaceGuid.PcdMaximumUnicodeStringLength   ## SOMETIMES_CONSUMES
518  gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask            ## SOMETIMES_CONSUMES
519
520[FeaturePcd]
521  gEfiMdePkgTokenSpaceGuid.PcdVerifyNodeInList  ## CONSUMES
522