]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: check for gsignal in racecall on loong64
authorGuoqi Chen <chenguoqi@loongson.cn>
Thu, 5 Jun 2025 11:23:55 +0000 (19:23 +0800)
committerabner chenc <chenguoqi@loongson.cn>
Sat, 7 Jun 2025 07:48:37 +0000 (00:48 -0700)
This issue has been fixed for amd64, arm64 and other platforms
in CL 643875, but it was missed when the race support was
submitted for loong64.

Fixes #71395.

Change-Id: I678f381e868214f1b3399be43187db49e1660933
Reviewed-on: https://go-review.googlesource.com/c/go/+/679055
Reviewed-by: Meidan Li <limeidan@loongson.cn>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Reviewed-by: sophie zhao <zhaoxiaolin@loongson.cn>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
src/runtime/race_loong64.s

index 597e0cc6b90ed35d5ce3a9ebc6a2a526711bd7d3..d731871d4494fe85c093cebae0159e7a10e61bd3 100644 (file)
@@ -461,8 +461,13 @@ TEXT       racecall<>(SB), NOSPLIT|NOFRAME, $0-0
        // Switch to g0 stack.
        MOVV    R3, R23 // callee-saved, preserved across the CALL
        MOVV    R1, R24 // callee-saved, preserved across the CALL
+
+       // Switch to g0 stack if we aren't already on g0 or gsignal.
+       MOVV    m_gsignal(R12), R13
+       BEQ     R13, g, call
+
        MOVV    m_g0(R12), R13
-       BEQ     R13, g, call    // already on g0
+       BEQ     R13, g, call
        MOVV    (g_sched+gobuf_sp)(R13), R3
 call:
        JAL     (RCALL)