1
0
mirror of https://github.com/golang/go synced 2024-11-20 05:04:43 -07:00
go/src/cmd
Aram Hăvărneanu 26bbe7ac9b cmd/internal/obj, cmd/internal/obj/arm64: add support for GOARCH=arm64
ARM64 (ARMv8) has 32 general purpose, 64-bit integer registers
(R0-R31), 32 64-bit scalar floating point registers (F0-F31), and
32 128-bit vector registers (unused, V0-V31).

R31 is either the stack pointer (RSP), or the zero register (ZR),
depending on the instruction. Note the distinction between the
hardware stack pointer, RSP, and the virtual stack pointer SP.

The (hardware) stack pointer must be 16-byte aligned at all times;
the RSP register itself must be aligned, offset(RSP) only has to
have natural alignment.

Instructions are fixed-width, and are 32-bit wide. ARM64 supports
ARMv7 too (32-bit ARM), but not in the same process. In general,
there is not much in common between 32-bit ARM and ARM64, it's a
new architecture.

All implementations have floating point instructions.

This change adds a Prog.To3 field analogous to Prog.To. It is used
by exclusive load/store instructions such as STLXR which read from
one register, and write to both a register and a memory address.

	STLXRW	R1, (R0), R3

This will store the word contained in R1 to the memory address
pointed by R0. R3 will be updated with the status result of the
store. It is used to implement atomic operations.

No other changes are made to the portable Prog and Addr structures.

Change-Id: Ie839029aa5265bbad35769d9689eca11e1c48c47
Reviewed-on: https://go-review.googlesource.com/7046
Reviewed-by: Russ Cox <rsc@golang.org>
2015-03-16 18:44:57 +00:00
..
5g cmd/internal/gc, etc: remove canemitecode of Naddr 2015-03-13 22:56:42 +00:00
5l cmd/5l: make 5l work on openbsd 2015-03-13 02:51:12 +00:00
6g cmd/internal/gc, etc: remove canemitecode of Naddr 2015-03-13 22:56:42 +00:00
6l cmd/5l etc: restore comments lost during C -> Go conversion 2015-03-05 21:49:39 +00:00
7g cmd/7g: fix build breakage 2015-03-13 23:07:00 +00:00
7l cmd/7g, cmd/7l, cmd/go: copy 9g/9l to 7g/7l, and build as tools 2015-03-10 18:52:12 +00:00
8g cmd/internal/gc, etc: remove canemitecode of Naddr 2015-03-13 22:56:42 +00:00
8l all: remove dragonfly/386 port 2015-03-14 10:47:19 +00:00
9g cmd/internal/gc, etc: remove canemitecode of Naddr 2015-03-13 22:56:42 +00:00
9l cmd/5l etc: restore comments lost during C -> Go conversion 2015-03-05 21:49:39 +00:00
addr2line cmd/addr2line: exclude Go tool test on darwin/arm 2015-02-26 23:06:30 +00:00
api Revert "cmd/api: treat a hex-y VERSION as devel and permit API changes" 2015-02-08 20:44:22 +00:00
asm cmd/asm: add MRC and MCR to end-to-end test for arm 2015-03-12 18:03:04 +00:00
cgo cmd/cgo: detect misuse of generated _cgo_export.h 2015-02-06 05:37:02 +00:00
dist cmd/dist: use GOARM=5 for openbsd/arm 2015-03-15 09:11:56 +00:00
fix
go cmd/go: disable verifyAsm for arm64 2015-03-16 18:44:47 +00:00
gofmt gofmt/doc: gofmt -s output may not be backward compatible 2015-02-08 05:13:00 +00:00
internal cmd/internal/obj, cmd/internal/obj/arm64: add support for GOARCH=arm64 2015-03-16 18:44:57 +00:00
link debug/goobj: move to cmd/internal/goobj 2014-11-16 20:52:45 -05:00
nm cmd/nm: exclude Go tool test on darwin/arm 2015-02-26 23:07:27 +00:00
objdump cmd/objdump: skip fork test on darwin/arm 2015-02-27 19:38:23 +00:00
old5a all: mv 5a old5a and so on 2015-03-02 00:14:11 +00:00
old6a cmd/internal/obj/x86: accept TYPE_MEM in CMPPS 3rd argument 2015-03-05 04:59:35 +00:00
old8a cmd/8g, cmd/old8a: stop renaming x86 import to i386 2015-03-05 06:06:54 +00:00
old9a all: mv 5a old5a and so on 2015-03-02 00:14:11 +00:00
pack cmd/pack: skip fork test on darwin/arm 2015-03-01 01:27:06 +00:00
pprof cmd/pprof: add -runtime flag 2015-02-19 19:46:20 +00:00
trace cmd/trace: move goroutine analysis code to internal/trace 2015-03-11 12:53:24 +00:00
yacc cmd/yacc/testdata/expr: fix handling of negative numbers 2015-03-11 04:20:42 +00:00