Commit 90ad6a2d authored by Nigel Tao's avatar Nigel Tao

runtime: update comment for the "extern register" variables g and m.

R=rsc, minux.ma, ality
CC=dave, golang-dev
https://golang.org/cl/6620050
parent 5abf4bdc
...@@ -82,19 +82,18 @@ typedef struct ParFor ParFor; ...@@ -82,19 +82,18 @@ typedef struct ParFor ParFor;
typedef struct ParForThread ParForThread; typedef struct ParForThread ParForThread;
/* /*
* per-cpu declaration. * 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.
* *
* amd64: allocated downwards from R15 * "extern register" is a special storage class implemented by 6c, 8c, etc.
* x86: allocated upwards from 0(GS) * On the ARM, it is an actual register; elsewhere it is a slot in thread-
* arm: allocated downwards from R10 * 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 * Every C file linked into a Go program must include runtime.h so that the
* so that the C compiler knows to avoid other uses of these registers. * C compiler (6c, 8c, etc.) knows to avoid other uses of these dedicated
* the Go compilers know to avoid them. * registers. The Go compiler (6g, 8g, etc.) knows to avoid them.
*/ */
extern register G* g; extern register G* g;
extern register M* m; extern register M* m;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment