Home | History | Annotate | Download | only in BaseLib
      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