BaseSynchronizationLib: Fix LoongArch64 synchronization functions
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4432 There is a return value bug: The sc.w/sc.d instruction will destroy the reg_t0, use reg_t1 to avoid context reg_t0 being corrupted. Adjust Check that ptr align is UINT16. Optimize function SyncIncrement and SyncDecrement. Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Zhiguang Liu <zhiguang.liu@intel.com> Cc: Chao Li <lichao@loongson.cn> Signed-off-by: Dongyan Qian <qiandongyan@loongson.cn> Reviewed-by: Chao Li <lichao@loongson.cn>
This commit is contained in:
committed by
mergify[bot]
parent
757f502a3b
commit
b65c0eed6b
@@ -81,7 +81,7 @@ InternalSyncCompareExchange16 (
|
||||
volatile UINT32 *Ptr32;
|
||||
|
||||
/* Check that ptr is naturally aligned */
|
||||
ASSERT (!((UINT64)Value & (sizeof (Value) - 1)));
|
||||
ASSERT (!((UINT64)Value & (sizeof (UINT16) - 1)));
|
||||
|
||||
/* Mask inputs to the correct size. */
|
||||
Mask = (((~0UL) - (1UL << (0)) + 1) & (~0UL >> (64 - 1 - ((sizeof (UINT16) * 8) - 1))));
|
||||
|
Reference in New Issue
Block a user