liblink, runtime: preliminary support for plan9/amd64

A TLS slot is reserved by _rt0_.*_plan9 as an automatic and
its address (which is static on Plan 9) is saved in the
global _privates symbol. The startup linkage now is exactly
like that from Plan 9 libc, and the way we access g is
exactly as if we'd have used privalloc(2).

Aside from making the code more standard, this change
drastically simplifies it, both for 386 and for amd64, and
makes the Plan 9 code in liblink common for both 386 and
amd64.

The amd64 runtime code was cleared of nxm assumptions, and
now runs on the standard Plan 9 kernel.

Note handling fixes will follow in a separate CL.

LGTM=rsc
R=golang-codereviews, rsc, bradfitz, dave
CC=0intro, ality, golang-codereviews, jas, minux.ma, mischief
https://golang.org/cl/101510049
This commit is contained in:
Aram Hăvărneanu 2014-07-02 21:04:10 +10:00 committed by Dave Cheney
parent d7b678b2ca
commit decd810945
15 changed files with 94 additions and 142 deletions

View file

@ -391,7 +391,7 @@ struct Link
LSym* sym_modu;
LSym* symmorestack[20];
LSym* tlsg;
LSym* plan9tos;
LSym* plan9privates;
Prog* curp;
Prog* printp;
Prog* blitrl;