Fix the wrong return value of both InternalSyncIncrement() and InternalSyncDecrement(). The return value shouldn't be the address of input parameter. It should be the updated value of input parameter instead.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Haojian Zhuang haojian.zhuang@linaro.org --- MdePkg/Library/BaseSynchronizationLib/AArch64/Synchronization.S | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/MdePkg/Library/BaseSynchronizationLib/AArch64/Synchronization.S b/MdePkg/Library/BaseSynchronizationLib/AArch64/Synchronization.S index ecb87fc..830ea5b 100644 --- a/MdePkg/Library/BaseSynchronizationLib/AArch64/Synchronization.S +++ b/MdePkg/Library/BaseSynchronizationLib/AArch64/Synchronization.S @@ -171,6 +171,7 @@ TryInternalSyncIncrement: add w1, w1, #1 stxr w2, w1, [x0] cbnz w2, TryInternalSyncIncrement + mov x0, x1 dmb sy ret
@@ -199,5 +200,6 @@ TryInternalSyncDecrement: sub w1, w1, #1 stxr w2, w1, [x0] cbnz w2, TryInternalSyncDecrement + mov x0, x1 dmb sy ret