]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: update comment for the "extern register" variables g and m.
authorNigel Tao <nigeltao@golang.org>
Fri, 19 Oct 2012 00:02:32 +0000 (11:02 +1100)
committerNigel Tao <nigeltao@golang.org>
Fri, 19 Oct 2012 00:02:32 +0000 (11:02 +1100)
R=rsc, minux.ma, ality
CC=dave, golang-dev
https://golang.org/cl/6620050

src/pkg/runtime/runtime.h

index 0b0931fe936e618444d5d33ac889879eb81892f4..4394f380572fbcc84f0c0b196c7507400113219c 100644 (file)
@@ -82,19 +82,18 @@ typedef struct      ParFor          ParFor;
 typedef struct ParForThread    ParForThread;
 
 /*
- * per-cpu declaration.
- * "extern register" is a special storage class implemented by 6c, 8c, etc.
- * on machines with lots of registers, it allocates a register that will not be
- * used in generated code.  on the x86, it allocates a slot indexed by a
- * segment register.
+ * Per-CPU declaration.
  *
- * amd64: allocated downwards from R15
- * x86: allocated upwards from 0(GS)
- * arm: allocated downwards from R10
+ * "extern register" is a special storage class implemented by 6c, 8c, etc.
+ * On the ARM, it is an actual register; elsewhere it is a slot in thread-
+ * local storage indexed by a segment register. See zasmhdr in
+ * src/cmd/dist/buildruntime.c for details, and be aware that the linker may
+ * make further OS-specific changes to the compiler's output. For example,
+ * 6l/linux rewrites 0(GS) as -16(FS).
  *
- * every C file linked into a Go program must include runtime.h
- * so that the C compiler knows to avoid other uses of these registers.
- * the Go compilers know to avoid them.
+ * Every C file linked into a Go program must include runtime.h so that the
+ * C compiler (6c, 8c, etc.) knows to avoid other uses of these dedicated
+ * registers. The Go compiler (6g, 8g, etc.) knows to avoid them.
  */
 extern register        G*      g;
 extern register        M*      m;