From d184f8dc020ac635cea02c046ab1d0b87dfd624d Mon Sep 17 00:00:00 2001 From: Guoqi Chen Date: Thu, 5 Jun 2025 19:23:55 +0800 Subject: [PATCH] runtime: check for gsignal in racecall on loong64 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 Reviewed-by: Michael Knyszek Reviewed-by: sophie zhao LUCI-TryBot-Result: Go LUCI Reviewed-by: Carlos Amedee --- src/runtime/race_loong64.s | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/runtime/race_loong64.s b/src/runtime/race_loong64.s index 597e0cc6b9..d731871d44 100644 --- a/src/runtime/race_loong64.s +++ b/src/runtime/race_loong64.s @@ -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) -- 2.50.0