diff --git a/src/runtime/sys_windows_arm64.s b/src/runtime/sys_windows_arm64.s index 87f8f0d2183a22..88ed3886b53e9f 100644 --- a/src/runtime/sys_windows_arm64.s +++ b/src/runtime/sys_windows_arm64.s @@ -170,9 +170,16 @@ TEXT sigtramp<>(SB),NOSPLIT|NOFRAME,$0 BL runtime·load_g(SB) // smashes R0, R27, R28 (g) CMP $0, g // is there a current g? - BNE 2(PC) - BL runtime·badsignal2(SB) + BNE g_not_nil + // in this case this is not a go thread, just return that we don't handle the exception + MOVD R7, LR + MOVD R16, R27 // restore R27 + MOVD R17, g // restore R28 + MOVD $0, R0 // return 0 (EXCEPTION_CONTINUE_SEARCH) + RET + +g_not_nil: // Do we need to switch to the g0 stack? MOVD g, R3 // R3 = oldg (for sigtramp_g0) MOVD g_m(g), R2 // R2 = m