mirror of
https://github.com/golang/go
synced 2024-11-14 08:50:22 -07:00
decd810945
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
24 lines
572 B
ArmAsm
24 lines
572 B
ArmAsm
// Copyright 2010 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
#include "../../cmd/ld/textflag.h"
|
|
|
|
TEXT _rt0_386_plan9(SB),NOSPLIT,$12
|
|
MOVL AX, _tos(SB)
|
|
LEAL 8(SP), AX
|
|
MOVL AX, _privates(SB)
|
|
MOVL $1, _nprivates(SB)
|
|
CALL runtime·asminit(SB)
|
|
MOVL inargc-4(FP), AX
|
|
MOVL AX, 0(SP)
|
|
LEAL inargv+0(FP), AX
|
|
MOVL AX, 4(SP)
|
|
CALL _rt0_go(SB)
|
|
|
|
DATA runtime·isplan9(SB)/4, $1
|
|
GLOBL runtime·isplan9(SB), $4
|
|
GLOBL _tos(SB), $4
|
|
GLOBL _privates(SB), $4
|
|
GLOBL _nprivates(SB), $4
|