runtime: move m.thread to mOS

This field is only used on Windows.

Change-Id: I12d4df09261f8e7ad54c2abd7beda669af28c8e7
Reviewed-on: https://go-review.googlesource.com/c/go/+/207778
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
diff --git a/src/runtime/os_windows.go b/src/runtime/os_windows.go
index 58e13ac..b4df083 100644
--- a/src/runtime/os_windows.go
+++ b/src/runtime/os_windows.go
@@ -143,6 +143,8 @@
 func ctrlhandler()
 
 type mOS struct {
+	thread uintptr // thread handle; accessed atomically
+
 	waitsema   uintptr // semaphore for parking on locks
 	resumesema uintptr // semaphore to indicate suspend/resume
 }
diff --git a/src/runtime/runtime2.go b/src/runtime/runtime2.go
index fe1147e..3f9e51c 100644
--- a/src/runtime/runtime2.go
+++ b/src/runtime/runtime2.go
@@ -522,8 +522,7 @@
 	waittraceskip int
 	startingtrace bool
 	syscalltick   uint32
-	thread        uintptr // thread handle
-	freelink      *m      // on sched.freem
+	freelink      *m // on sched.freem
 
 	// these are here because they are too large to be on the stack
 	// of low-level NOSPLIT functions.