audk/MdePkg/Library
Ruiyu Ni 17634d026f MdePkg/SynchronizationLib: fix Interlocked[De|In]crement return value
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1197

Today's InterlockedIncrement()/InterlockedDecrement() guarantees to
perform atomic increment/decrement but doesn't guarantee the return
value equals to the new value.

The patch fixes the behavior to use "XADD" instruction to guarantee
the return value equals to the new value.

The patch calls intrinsic functions for MSVC tool chain, calls the
NASM implementation for INTEL tool chain and calls GCC inline
assembly implementation (GccInline.c) for GCC tool chain.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
2018-09-25 10:02:53 +08:00
..
BaseCacheMaintenanceLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseCpuLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseDebugLibNull MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseDebugLibSerialPort MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseDebugPrintErrorLevelLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseExtractGuidedSectionLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseIoLibIntrinsic MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseLib MdePkg/BaseLib: Add an additional check within AsciiStriCmp 2018-08-06 10:12:13 +08:00
BaseMemoryLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseMemoryLibMmx MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseMemoryLibOptDxe MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseMemoryLibOptPei MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseMemoryLibRepStr MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseMemoryLibSse2 MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseOrderedCollectionRedBlackTreeLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BasePalLibNull MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BasePcdLibNull MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BasePciCf8Lib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BasePciExpressLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BasePciLibCf8 MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BasePciLibPciExpress MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BasePciSegmentInfoLibNull MdePkg/PciSegmentInfoLib: Add PciSegmentInfoLib class and instance. 2017-08-28 16:47:04 +08:00
BasePciSegmentLibPci MdePkg/PciSegmentLib: Fix typo in function header comments 2017-08-28 16:47:03 +08:00
BasePeCoffExtraActionLibNull MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BasePeCoffGetEntryPointLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BasePeCoffLib MdePkg/BasePeCoffLib: remove PE/COFF header workaround for ELILO on IPF 2018-09-24 16:56:44 +02:00
BasePerformanceLibNull MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BasePostCodeLibDebug MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BasePostCodeLibPort80 MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BasePrintLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseReportStatusCodeLibNull MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseRngLib MdePkg: Convert all .uni files to utf-8 2015-12-15 04:53:50 +00:00
BaseS3BootScriptLibNull MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseS3IoLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseS3PciLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseS3PciSegmentLib MdePkg: Correct BaseS3PciSegmentLib module name to match its uni file 2017-10-10 18:10:17 +08:00
BaseS3SmbusLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseS3StallLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseSafeIntLib MdePkg/BaseSafeIntLib: Fix VS2015 IA32 NOOPT build failure 2018-02-28 11:44:14 +08:00
BaseSerialPortLibNull MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseSmbusLibNull MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseStackCheckLib MdePkg BaseStackCheckLib: Correct style of file header 2018-03-20 10:25:06 +08:00
BaseSynchronizationLib MdePkg/SynchronizationLib: fix Interlocked[De|In]crement return value 2018-09-25 10:02:53 +08:00
BaseTimerLibNullTemplate MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
BaseUefiDecompressLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
DxeCoreEntryPoint MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
DxeCoreHobLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
DxeExtendedSalLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
DxeExtractGuidedSectionLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
DxeHobLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
DxeHstiLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
DxeIoLibCpuIo2 MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
DxeIoLibEsal MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
DxePalLibEsal MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
DxePcdLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
DxePciLibEsal MdePkg: Fix typos in comments 2016-10-21 16:40:51 +08:00
DxePciSegmentLibEsal MdePkg: Fix typos in comments 2016-10-21 16:40:51 +08:00
DxeRuntimeDebugLibSerialPort MdePkg: introduce DxeRuntimeDebugLibSerialPort 2018-02-24 13:58:53 +00:00
DxeRuntimeExtendedSalLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
DxeRuntimePciExpressLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
DxeSalLibEsal MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
DxeServicesLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
DxeServicesTableLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
DxeSmbusLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
DxeTimerLibEsal MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
PciSegmentLibSegmentInfo MdePkg/PciSegmentLibSegmentInfo: fix typo in PciSegmentBitFieldAnd*() 2017-09-06 10:43:53 +08:00
PeiCoreEntryPoint MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
PeiDxePostCodeLibReportStatusCode MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
PeiExtractGuidedSectionLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
PeiHobLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
PeiIoLibCpuIo MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
PeiMemoryAllocationLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
PeiMemoryLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
PeiPalLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
PeiPcdLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
PeiPciLibPciCfg2 MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
PeiPciSegmentLibPciCfg2 MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
PeiResourcePublicationLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
PeiServicesLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
PeiServicesTablePointerLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
PeiServicesTablePointerLibIdt MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
PeiServicesTablePointerLibKr7 MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
PeiSmbusLibSmbus2Ppi MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
PeimEntryPoint MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
SecPeiDxeTimerLibCpu MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
SmiHandlerProfileLibNull MdePkg/SmiHandlerProfile: Add Context support in Unregister 2017-03-13 16:04:11 +08:00
SmmIoLib MdePkg SmmIoLib: Use NULL pointer check instead of useless Status check 2017-06-06 09:07:10 +08:00
SmmIoLibSmmCpuIo2 MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
SmmLibNull MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
SmmMemLib MdePkg/SmmMemLib: Avoid possible NULL ptr dereference 2018-07-31 13:07:44 +08:00
SmmMemoryAllocationLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
SmmPciExpressLib MdePkg: Add SMM PciExpressLib Instance 2016-09-27 11:01:23 +08:00
SmmPciLibPciRootBridgeIo MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
SmmPeriodicSmiLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
SmmServicesTableLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
UefiApplicationEntryPoint MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
UefiBootServicesTableLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
UefiDebugLibConOut MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
UefiDebugLibDebugPortProtocol MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
UefiDebugLibStdErr MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
UefiDevicePathLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
UefiDevicePathLibDevicePathProtocol MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
UefiDriverEntryPoint MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
UefiFileHandleLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
UefiLib MdePkg/UefiLib: don't special-case EFI_FILE_MODE_CREATE in OpenMode 2018-08-22 10:31:47 +02:00
UefiMemoryAllocationLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
UefiMemoryLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
UefiPalLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
UefiPciLibPciRootBridgeIo MdePkg UefiPciLibPciRootBridgeIo: Remove redundant dependency 2018-09-25 09:49:18 +08:00
UefiPciSegmentLibPciRootBridgeIo MdePkg UefiPciSegmentLibPciRootBridgeIo: Remove redundant dependency 2018-09-25 09:49:14 +08:00
UefiRuntimeLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
UefiRuntimeServicesTableLib MdePkg: Convert all .uni files to utf-8 2015-12-15 04:53:50 +00:00
UefiSalLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
UefiScsiLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
UefiUsbLib MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00