code: func load_g_cx(ctxt *liblink.Link, p *liblink.Prog) *liblink.Prog {
  	var next *liblink.Prog
  	p.As = AMOVL
  	p.From.Typ = D_INDIR + D_TLS
  	p.From.Offset = 0
  	p.To.Typ = D_CX
  	next = p.Link
  	progedit(ctxt, p)
  	for p.Link != next {
  		p = p.Link
  	}
  	if p.From.Index == D_TLS {
  		p.From.Scale = 2
  	}
  	return p
  }
docs: // Append code to p to load g into cx.
  // Overwrites p with the first instruction (no first appendp).
  // Overwriting p is unusual but it lets use this in both the
  // prologue (caller must call appendp first) and in the epilogue.
  // Returns last new instruction.