]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: add upper half and carry bit with zero
authorMichael Pratt <mpratt@google.com>
Tue, 9 Nov 2021 16:35:52 +0000 (11:35 -0500)
committerMichael Pratt <mpratt@google.com>
Tue, 9 Nov 2021 17:18:08 +0000 (17:18 +0000)
https://golang.org/cl/246763 accidentally changed this from upper + 0 +
carry to upper + old vdsoSP + carry.

The old value of vdsoPC is usually zero, so this typically works.
However, the reentrant case will have a non-zero value, resulting in a
bogus returned time.

Fixes #49481

Change-Id: I0110b84277bf911804cb0ff8097aebf1b7eb100a
Reviewed-on: https://go-review.googlesource.com/c/go/+/362674
Trust: Michael Pratt <mpratt@google.com>
Run-TryBot: Michael Pratt <mpratt@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
src/runtime/sys_linux_arm.s

index 65935de99f66f4c617d47c75323f23cfb4a045de..ca443b699fdcf3b2cf6b3866fadad8a008ff5c57 100644 (file)
@@ -456,7 +456,7 @@ finish:
        MOVW    $1000000000, R3
        MULLU   R0, R3, (R1, R0)
        ADD.S   R2, R0
-       ADC     R4, R1
+       ADC     $0, R1  // Add carry bit to upper half.
 
        MOVW    R0, ret_lo+0(FP)
        MOVW    R1, ret_hi+4(FP)