According to official documentation, get_tls is a marco defined in go_asm.h. But it is actually in go_tls.h which is in the go source.

#include "go_asm.h" // this should be #include "go_tls.h"
get_tls(CX)
MOVL	g(CX), AX     // Move g into AX.
MOVL	g_m(AX), BX   // Move g.m into BX.

I made these two PRs[1][2] in golang, but I recieve a feedback which think this is not helpful. It’s really depressing.