From 03ef105daeff4fef1fd66dbffb8e17d1f779b9ea Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick <bradfitz@golang.org> Date: Thu, 10 Oct 2019 16:16:54 +0000 Subject: [PATCH] all: remove nacl (part 3, more amd64p32) Part 1: CL 199499 (GOOS nacl) Part 2: CL 200077 (amd64p32 files, toolchain) Part 3: stuff that arguably should've been part of Part 2, but I forgot one of my grep patterns when splitting the original CL up into two parts. This one might also have interesting stuff to resurrect for any future x32 ABI support. Updates #30439 Change-Id: I2b4143374a253a003666f3c69e776b7e456bdb9c Reviewed-on: https://go-review.googlesource.com/c/go/+/200318 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> --- src/cmd/asm/internal/arch/arch.go | 2 -- src/cmd/compile/internal/amd64/galign.go | 5 ---- src/cmd/compile/internal/ssa/config.go | 13 -------- src/cmd/compile/internal/ssa/rewrite.go | 4 +-- src/cmd/compile/main.go | 1 - src/cmd/dist/build.go | 2 +- src/cmd/go/internal/imports/build.go | 4 +-- src/cmd/go/internal/work/exec.go | 2 +- src/cmd/internal/obj/x86/obj6.go | 10 ------- src/cmd/internal/objfile/disasm.go | 30 +++++++++---------- src/cmd/internal/sys/arch.go | 13 +------- src/cmd/link/internal/amd64/obj.go | 3 -- src/cmd/link/main.go | 2 +- src/crypto/md5/md5block_decl.go | 2 +- src/crypto/md5/md5block_generic.go | 2 +- src/crypto/sha1/sha1block_decl.go | 2 +- src/crypto/sha1/sha1block_generic.go | 2 +- src/go/build/syslist.go | 3 ++ src/hash/crc32/crc32_otherarch.go | 2 +- src/internal/bytealg/compare_generic.go | 2 +- src/internal/bytealg/compare_native.go | 2 +- src/internal/bytealg/indexbyte_generic.go | 2 +- src/internal/bytealg/indexbyte_native.go | 2 +- src/internal/cpu/cpu_no_init.go | 1 - src/internal/cpu/cpu_x86.go | 6 ++-- src/internal/cpu/cpu_x86.s | 2 +- src/internal/cpu/cpu_x86_test.go | 2 +- src/math/exp_asm.go | 2 +- src/reflect/all_test.go | 3 -- src/reflect/type.go | 7 ----- src/reflect/value.go | 14 ++------- src/runtime/asm.s | 3 -- src/runtime/gcinfo_test.go | 8 ----- src/runtime/go_tls.h | 5 ---- src/runtime/hash64.go | 2 +- .../{atomic_amd64x.go => atomic_amd64.go} | 2 -- src/runtime/internal/atomic/atomic_test.go | 10 ++----- src/runtime/panic32.go | 2 +- src/runtime/runtime2.go | 2 +- .../{signal_amd64x.go => signal_amd64.go} | 2 +- src/runtime/stubs32.go | 2 +- .../{stubs_amd64x.go => stubs_amd64.go} | 2 -- src/runtime/sys_x86.go | 2 +- src/runtime/trace.go | 2 +- src/runtime/traceback.go | 4 +-- src/sync/atomic/atomic_test.go | 11 ++----- src/syscall/endian_little.go | 2 +- 47 files changed, 56 insertions(+), 154 deletions(-) rename src/runtime/internal/atomic/{atomic_amd64x.go => atomic_amd64.go} (98%) rename src/runtime/{signal_amd64x.go => signal_amd64.go} (98%) rename src/runtime/{stubs_amd64x.go => stubs_amd64.go} (93%) diff --git a/src/cmd/asm/internal/arch/arch.go b/src/cmd/asm/internal/arch/arch.go index 5d1f9a53266..f090d12bed4 100644 --- a/src/cmd/asm/internal/arch/arch.go +++ b/src/cmd/asm/internal/arch/arch.go @@ -56,8 +56,6 @@ func Set(GOARCH string) *Arch { return archX86(&x86.Link386) case "amd64": return archX86(&x86.Linkamd64) - case "amd64p32": - return archX86(&x86.Linkamd64p32) case "arm": return archArm() case "arm64": diff --git a/src/cmd/compile/internal/amd64/galign.go b/src/cmd/compile/internal/amd64/galign.go index f6bb961c29e..4e7e762d7d1 100644 --- a/src/cmd/compile/internal/amd64/galign.go +++ b/src/cmd/compile/internal/amd64/galign.go @@ -7,17 +7,12 @@ package amd64 import ( "cmd/compile/internal/gc" "cmd/internal/obj/x86" - "cmd/internal/objabi" ) var leaptr = x86.ALEAQ func Init(arch *gc.Arch) { arch.LinkArch = &x86.Linkamd64 - if objabi.GOARCH == "amd64p32" { - arch.LinkArch = &x86.Linkamd64p32 - leaptr = x86.ALEAL - } arch.REGSP = x86.REGSP arch.MAXWIDTH = 1 << 50 diff --git a/src/cmd/compile/internal/ssa/config.go b/src/cmd/compile/internal/ssa/config.go index 770f92cc8e8..4041a480b31 100644 --- a/src/cmd/compile/internal/ssa/config.go +++ b/src/cmd/compile/internal/ssa/config.go @@ -210,19 +210,6 @@ func NewConfig(arch string, types Types, ctxt *obj.Link, optimize bool) *Config c.FPReg = framepointerRegAMD64 c.LinkReg = linkRegAMD64 c.hasGReg = false - case "amd64p32": - c.PtrSize = 4 - c.RegSize = 8 - c.lowerBlock = rewriteBlockAMD64 - c.lowerValue = rewriteValueAMD64 - c.splitLoad = rewriteValueAMD64splitload - c.registers = registersAMD64[:] - c.gpRegMask = gpRegMaskAMD64 - c.fpRegMask = fpRegMaskAMD64 - c.FPReg = framepointerRegAMD64 - c.LinkReg = linkRegAMD64 - c.hasGReg = false - c.noDuffDevice = true case "386": c.PtrSize = 4 c.RegSize = 4 diff --git a/src/cmd/compile/internal/ssa/rewrite.go b/src/cmd/compile/internal/ssa/rewrite.go index 9e8cda978ea..539941001dd 100644 --- a/src/cmd/compile/internal/ssa/rewrite.go +++ b/src/cmd/compile/internal/ssa/rewrite.go @@ -1061,7 +1061,7 @@ func isInlinableMemmove(dst, src *Value, sz int64, c *Config) bool { // lowers them, so we only perform this optimization on platforms that we know to // have fast Move ops. switch c.arch { - case "amd64", "amd64p32": + case "amd64": return sz <= 16 || (sz < 1024 && disjoint(dst, sz, src, sz)) case "386", "ppc64", "ppc64le", "arm64": return sz <= 8 @@ -1077,7 +1077,7 @@ func isInlinableMemmove(dst, src *Value, sz int64, c *Config) bool { // for sizes < 32-bit. This is used to decide whether to promote some rotations. func hasSmallRotate(c *Config) bool { switch c.arch { - case "amd64", "amd64p32", "386": + case "amd64", "386": return true default: return false diff --git a/src/cmd/compile/main.go b/src/cmd/compile/main.go index bf4289e8f1c..e3ec3361f9e 100644 --- a/src/cmd/compile/main.go +++ b/src/cmd/compile/main.go @@ -24,7 +24,6 @@ import ( var archInits = map[string]func(*gc.Arch){ "386": x86.Init, "amd64": amd64.Init, - "amd64p32": amd64.Init, "arm": arm.Init, "arm64": arm64.Init, "mips": mips.Init, diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go index 8f2f57dc22f..ea290b10690 100644 --- a/src/cmd/dist/build.go +++ b/src/cmd/dist/build.go @@ -61,7 +61,6 @@ var ( var okgoarch = []string{ "386", "amd64", - "amd64p32", "arm", "arm64", "mips", @@ -86,6 +85,7 @@ var okgoos = []string{ "android", "solaris", "freebsd", + "nacl", // keep; "netbsd", "openbsd", "plan9", diff --git a/src/cmd/go/internal/imports/build.go b/src/cmd/go/internal/imports/build.go index 3e9fe357e07..eb070eef4c1 100644 --- a/src/cmd/go/internal/imports/build.go +++ b/src/cmd/go/internal/imports/build.go @@ -210,7 +210,7 @@ var KnownOS = map[string]bool{ "illumos": true, "js": true, "linux": true, - "nacl": true, + "nacl": true, // legacy; don't remove "netbsd": true, "openbsd": true, "plan9": true, @@ -222,7 +222,7 @@ var KnownOS = map[string]bool{ var KnownArch = map[string]bool{ "386": true, "amd64": true, - "amd64p32": true, + "amd64p32": true, // legacy; don't remove "arm": true, "armbe": true, "arm64": true, diff --git a/src/cmd/go/internal/work/exec.go b/src/cmd/go/internal/work/exec.go index 68ab85ae075..71eb5d9cd3f 100644 --- a/src/cmd/go/internal/work/exec.go +++ b/src/cmd/go/internal/work/exec.go @@ -2390,7 +2390,7 @@ func (b *Builder) gccArchArgs() []string { switch cfg.Goarch { case "386": return []string{"-m32"} - case "amd64", "amd64p32": + case "amd64": return []string{"-m64"} case "arm": return []string{"-marm"} // not thumb diff --git a/src/cmd/internal/obj/x86/obj6.go b/src/cmd/internal/obj/x86/obj6.go index 6716372460d..4554d4a525f 100644 --- a/src/cmd/internal/obj/x86/obj6.go +++ b/src/cmd/internal/obj/x86/obj6.go @@ -1226,16 +1226,6 @@ var Linkamd64 = obj.LinkArch{ DWARFRegisters: AMD64DWARFRegisters, } -var Linkamd64p32 = obj.LinkArch{ - Arch: sys.ArchAMD64P32, - Init: instinit, - Preprocess: preprocess, - Assemble: span6, - Progedit: progedit, - UnaryDst: unaryDst, - DWARFRegisters: AMD64DWARFRegisters, -} - var Link386 = obj.LinkArch{ Arch: sys.Arch386, Init: instinit, diff --git a/src/cmd/internal/objfile/disasm.go b/src/cmd/internal/objfile/disasm.go index 50fc51be877..b979a7f8aa0 100644 --- a/src/cmd/internal/objfile/disasm.go +++ b/src/cmd/internal/objfile/disasm.go @@ -241,7 +241,7 @@ func (d *Disasm) Print(w io.Writer, filter *regexp.Regexp, start, end uint64, pr fmt.Fprintf(tw, " %s:%d\t%#x\t", base(file), line, pc) } - if size%4 != 0 || d.goarch == "386" || d.goarch == "amd64" || d.goarch == "amd64p32" { + if size%4 != 0 || d.goarch == "386" || d.goarch == "amd64" { // Print instruction as bytes. fmt.Fprintf(tw, "%x", code[i:i+size]) } else { @@ -367,24 +367,22 @@ func disasm_ppc64(code []byte, pc uint64, lookup lookupFunc, byteOrder binary.By } var disasms = map[string]disasmFunc{ - "386": disasm_386, - "amd64": disasm_amd64, - "amd64p32": disasm_amd64, - "arm": disasm_arm, - "arm64": disasm_arm64, - "ppc64": disasm_ppc64, - "ppc64le": disasm_ppc64, + "386": disasm_386, + "amd64": disasm_amd64, + "arm": disasm_arm, + "arm64": disasm_arm64, + "ppc64": disasm_ppc64, + "ppc64le": disasm_ppc64, } var byteOrders = map[string]binary.ByteOrder{ - "386": binary.LittleEndian, - "amd64": binary.LittleEndian, - "amd64p32": binary.LittleEndian, - "arm": binary.LittleEndian, - "arm64": binary.LittleEndian, - "ppc64": binary.BigEndian, - "ppc64le": binary.LittleEndian, - "s390x": binary.BigEndian, + "386": binary.LittleEndian, + "amd64": binary.LittleEndian, + "arm": binary.LittleEndian, + "arm64": binary.LittleEndian, + "ppc64": binary.BigEndian, + "ppc64le": binary.LittleEndian, + "s390x": binary.BigEndian, } type Liner interface { diff --git a/src/cmd/internal/sys/arch.go b/src/cmd/internal/sys/arch.go index 2e07482c1a6..e8687363def 100644 --- a/src/cmd/internal/sys/arch.go +++ b/src/cmd/internal/sys/arch.go @@ -7,8 +7,7 @@ package sys import "encoding/binary" // ArchFamily represents a family of one or more related architectures. -// For example, amd64 and amd64p32 are both members of the AMD64 family, -// and ppc64 and ppc64le are both members of the PPC64 family. +// For example, ppc64 and ppc64le are both members of the PPC64 family. type ArchFamily byte const ( @@ -72,15 +71,6 @@ var ArchAMD64 = &Arch{ MinLC: 1, } -var ArchAMD64P32 = &Arch{ - Name: "amd64p32", - Family: AMD64, - ByteOrder: binary.LittleEndian, - PtrSize: 4, - RegSize: 8, - MinLC: 1, -} - var ArchARM = &Arch{ Name: "arm", Family: ARM, @@ -183,7 +173,6 @@ var ArchWasm = &Arch{ var Archs = [...]*Arch{ Arch386, ArchAMD64, - ArchAMD64P32, ArchARM, ArchARM64, ArchMIPS, diff --git a/src/cmd/link/internal/amd64/obj.go b/src/cmd/link/internal/amd64/obj.go index 537a241baa0..029a24d7c1b 100644 --- a/src/cmd/link/internal/amd64/obj.go +++ b/src/cmd/link/internal/amd64/obj.go @@ -38,9 +38,6 @@ import ( func Init() (*sys.Arch, ld.Arch) { arch := sys.ArchAMD64 - if objabi.GOARCH == "amd64p32" { - arch = sys.ArchAMD64P32 - } theArch := ld.Arch{ Funcalign: funcAlign, diff --git a/src/cmd/link/main.go b/src/cmd/link/main.go index 4b8df11451f..99550b0584d 100644 --- a/src/cmd/link/main.go +++ b/src/cmd/link/main.go @@ -45,7 +45,7 @@ func main() { os.Exit(2) case "386": arch, theArch = x86.Init() - case "amd64", "amd64p32": + case "amd64": arch, theArch = amd64.Init() case "arm": arch, theArch = arm.Init() diff --git a/src/crypto/md5/md5block_decl.go b/src/crypto/md5/md5block_decl.go index 1ac82cf08ca..f251e03d7ff 100644 --- a/src/crypto/md5/md5block_decl.go +++ b/src/crypto/md5/md5block_decl.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build amd64 amd64p32 386 arm ppc64le ppc64 s390x arm64 +// +build amd64 386 arm ppc64le ppc64 s390x arm64 package md5 diff --git a/src/crypto/md5/md5block_generic.go b/src/crypto/md5/md5block_generic.go index 86e3b64e9fb..0b46e70b604 100644 --- a/src/crypto/md5/md5block_generic.go +++ b/src/crypto/md5/md5block_generic.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build !amd64,!amd64p32,!386,!arm,!ppc64le,!ppc64,!s390x,!arm64 +// +build !amd64,!386,!arm,!ppc64le,!ppc64,!s390x,!arm64 package md5 diff --git a/src/crypto/sha1/sha1block_decl.go b/src/crypto/sha1/sha1block_decl.go index 6d2d073d137..9c7df4e40a7 100644 --- a/src/crypto/sha1/sha1block_decl.go +++ b/src/crypto/sha1/sha1block_decl.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build amd64p32 arm 386 s390x +// +build arm 386 s390x package sha1 diff --git a/src/crypto/sha1/sha1block_generic.go b/src/crypto/sha1/sha1block_generic.go index 5823e089410..f95ea0eee4d 100644 --- a/src/crypto/sha1/sha1block_generic.go +++ b/src/crypto/sha1/sha1block_generic.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build !amd64,!amd64p32,!386,!arm,!s390x,!arm64 +// +build !amd64,!386,!arm,!s390x,!arm64 package sha1 diff --git a/src/go/build/syslist.go b/src/go/build/syslist.go index 197c646d5c0..fbfe4c46779 100644 --- a/src/go/build/syslist.go +++ b/src/go/build/syslist.go @@ -4,5 +4,8 @@ package build +// List of past, present, and future known GOOS and GOARCH values. +// Do not remove from this list, as these are used for go/build filename matching. + const goosList = "aix android darwin dragonfly freebsd hurd illumos js linux nacl netbsd openbsd plan9 solaris windows zos " const goarchList = "386 amd64 amd64p32 arm armbe arm64 arm64be ppc64 ppc64le mips mipsle mips64 mips64le mips64p32 mips64p32le ppc riscv riscv64 s390 s390x sparc sparc64 wasm " diff --git a/src/hash/crc32/crc32_otherarch.go b/src/hash/crc32/crc32_otherarch.go index 6f3510a279b..1a5e542ab6d 100644 --- a/src/hash/crc32/crc32_otherarch.go +++ b/src/hash/crc32/crc32_otherarch.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build !amd64,!amd64p32,!s390x,!ppc64le,!arm64 +// +build !amd64,!s390x,!ppc64le,!arm64 package crc32 diff --git a/src/internal/bytealg/compare_generic.go b/src/internal/bytealg/compare_generic.go index 4839df9528f..bd4489a6b9c 100644 --- a/src/internal/bytealg/compare_generic.go +++ b/src/internal/bytealg/compare_generic.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build !386,!amd64,!amd64p32,!s390x,!arm,!arm64,!ppc64,!ppc64le,!mips,!mipsle,!wasm,!mips64,!mips64le +// +build !386,!amd64,!s390x,!arm,!arm64,!ppc64,!ppc64le,!mips,!mipsle,!wasm,!mips64,!mips64le package bytealg diff --git a/src/internal/bytealg/compare_native.go b/src/internal/bytealg/compare_native.go index 95486e85429..b53ba97463f 100644 --- a/src/internal/bytealg/compare_native.go +++ b/src/internal/bytealg/compare_native.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build 386 amd64 amd64p32 s390x arm arm64 ppc64 ppc64le mips mipsle wasm mips64 mips64le +// +build 386 amd64 s390x arm arm64 ppc64 ppc64le mips mipsle wasm mips64 mips64le package bytealg diff --git a/src/internal/bytealg/indexbyte_generic.go b/src/internal/bytealg/indexbyte_generic.go index 6bff31ceee4..fce1b0fc542 100644 --- a/src/internal/bytealg/indexbyte_generic.go +++ b/src/internal/bytealg/indexbyte_generic.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build !386,!amd64,!amd64p32,!s390x,!arm,!arm64,!ppc64,!ppc64le,!mips,!mipsle,!mips64,!mips64le,!wasm +// +build !386,!amd64,!s390x,!arm,!arm64,!ppc64,!ppc64le,!mips,!mipsle,!mips64,!mips64le,!wasm package bytealg diff --git a/src/internal/bytealg/indexbyte_native.go b/src/internal/bytealg/indexbyte_native.go index b4ddc86ea90..157caa34c4a 100644 --- a/src/internal/bytealg/indexbyte_native.go +++ b/src/internal/bytealg/indexbyte_native.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build 386 amd64 amd64p32 s390x arm arm64 ppc64 ppc64le mips mipsle mips64 mips64le wasm +// +build 386 amd64 s390x arm arm64 ppc64 ppc64le mips mipsle mips64 mips64le wasm package bytealg diff --git a/src/internal/cpu/cpu_no_init.go b/src/internal/cpu/cpu_no_init.go index 777ea9de8bd..d4b2be8cf4f 100644 --- a/src/internal/cpu/cpu_no_init.go +++ b/src/internal/cpu/cpu_no_init.go @@ -4,7 +4,6 @@ // +build !386 // +build !amd64 -// +build !amd64p32 // +build !arm // +build !arm64 // +build !ppc64 diff --git a/src/internal/cpu/cpu_x86.go b/src/internal/cpu/cpu_x86.go index 5d357be62b2..da6cf672581 100644 --- a/src/internal/cpu/cpu_x86.go +++ b/src/internal/cpu/cpu_x86.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build 386 amd64 amd64p32 +// +build 386 amd64 package cpu @@ -55,8 +55,8 @@ func doinit() { {Name: "sse42", Feature: &X86.HasSSE42}, {Name: "ssse3", Feature: &X86.HasSSSE3}, - // These capabilities should always be enabled on amd64(p32): - {Name: "sse2", Feature: &X86.HasSSE2, Required: GOARCH == "amd64" || GOARCH == "amd64p32"}, + // These capabilities should always be enabled on amd64: + {Name: "sse2", Feature: &X86.HasSSE2, Required: GOARCH == "amd64"}, } maxID, _, _, _ := cpuid(0, 0) diff --git a/src/internal/cpu/cpu_x86.s b/src/internal/cpu/cpu_x86.s index 564e1133ed5..93c712d784c 100644 --- a/src/internal/cpu/cpu_x86.s +++ b/src/internal/cpu/cpu_x86.s @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build 386 amd64 amd64p32 +// +build 386 amd64 #include "textflag.h" diff --git a/src/internal/cpu/cpu_x86_test.go b/src/internal/cpu/cpu_x86_test.go index 9e93d1af5d7..61db93bd517 100644 --- a/src/internal/cpu/cpu_x86_test.go +++ b/src/internal/cpu/cpu_x86_test.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build 386 amd64 amd64p32 +// +build 386 amd64 package cpu_test diff --git a/src/math/exp_asm.go b/src/math/exp_asm.go index 421618eea91..8dad3c810b6 100644 --- a/src/math/exp_asm.go +++ b/src/math/exp_asm.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build amd64 amd64p32 +// +build amd64 package math diff --git a/src/reflect/all_test.go b/src/reflect/all_test.go index 1fbc8dd61cf..b6010f92654 100644 --- a/src/reflect/all_test.go +++ b/src/reflect/all_test.go @@ -6104,9 +6104,6 @@ var funcLayoutTests []funcLayoutTest func init() { var argAlign uintptr = PtrSize - if runtime.GOARCH == "amd64p32" { - argAlign = 2 * PtrSize - } roundup := func(x uintptr, a uintptr) uintptr { return (x + a - 1) / a * a } diff --git a/src/reflect/type.go b/src/reflect/type.go index 495679b52eb..231b38b898a 100644 --- a/src/reflect/type.go +++ b/src/reflect/type.go @@ -16,7 +16,6 @@ package reflect import ( - "runtime" "strconv" "sync" "unicode" @@ -3015,9 +3014,6 @@ func funcLayout(t *funcType, rcvr *rtype) (frametype *rtype, argSize, retOffset offset += arg.size } argSize = offset - if runtime.GOARCH == "amd64p32" { - offset += -offset & (8 - 1) - } offset += -offset & (ptrSize - 1) retOffset = offset for _, res := range t.out() { @@ -3033,9 +3029,6 @@ func funcLayout(t *funcType, rcvr *rtype) (frametype *rtype, argSize, retOffset size: offset, ptrdata: uintptr(ptrmap.n) * ptrSize, } - if runtime.GOARCH == "amd64p32" { - x.align = 8 - } if ptrmap.n > 0 { x.gcdata = &ptrmap.data[0] } diff --git a/src/reflect/value.go b/src/reflect/value.go index 7fec09962ce..ffcb204cda5 100644 --- a/src/reflect/value.go +++ b/src/reflect/value.go @@ -555,9 +555,6 @@ func callReflect(ctxt *makeFuncImpl, frame unsafe.Pointer, retValid *bool) { // Copy results back into argument frame. if numOut > 0 { off += -off & (ptrSize - 1) - if runtime.GOARCH == "amd64p32" { - off = align(off, 8) - } for i, typ := range ftyp.out() { v := out[i] if v.typ == nil { @@ -697,8 +694,7 @@ func callMethod(ctxt *methodValue, frame unsafe.Pointer, retValid *bool) { // Copy in receiver and rest of args. storeRcvr(rcvr, scratch) - // Align the first arg. Only on amd64p32 the alignment can be - // larger than ptrSize. + // Align the first arg. The alignment can't be larger than ptrSize. argOffset := uintptr(ptrSize) if len(t.in()) > 0 { argOffset = align(argOffset, uintptr(t.in()[0].align)) @@ -713,17 +709,11 @@ func callMethod(ctxt *methodValue, frame unsafe.Pointer, retValid *bool) { // and then copies the results back into scratch. call(frametype, fn, scratch, uint32(frametype.size), uint32(retOffset)) - // Copy return values. On amd64p32, the beginning of return values - // is 64-bit aligned, so the caller's frame layout (which doesn't have - // a receiver) is different from the layout of the fn call, which has - // a receiver. + // Copy return values. // Ignore any changes to args and just copy return values. // Avoid constructing out-of-bounds pointers if there are no return values. if frametype.size-retOffset > 0 { callerRetOffset := retOffset - argOffset - if runtime.GOARCH == "amd64p32" { - callerRetOffset = align(argSize-argOffset, 8) - } // This copies to the stack. Write barriers are not needed. memmove(add(frame, callerRetOffset, "frametype.size > retOffset"), add(scratch, retOffset, "frametype.size > retOffset"), diff --git a/src/runtime/asm.s b/src/runtime/asm.s index c886d4e7222..95a3424de26 100644 --- a/src/runtime/asm.s +++ b/src/runtime/asm.s @@ -19,9 +19,6 @@ GLOBL runtime·no_pointers_stackmap(SB),RODATA, $8 #ifdef GOARCH_386 #define SKIP4 BYTE $0x90; BYTE $0x90; BYTE $0x90; BYTE $0x90 #endif -#ifdef GOARCH_amd64p32 -#define SKIP4 BYTE $0x90; BYTE $0x90; BYTE $0x90; BYTE $0x90 -#endif #ifdef GOARCH_wasm #define SKIP4 UNDEF; UNDEF; UNDEF; UNDEF #endif diff --git a/src/runtime/gcinfo_test.go b/src/runtime/gcinfo_test.go index 0741f6361cf..c228c779e48 100644 --- a/src/runtime/gcinfo_test.go +++ b/src/runtime/gcinfo_test.go @@ -187,14 +187,6 @@ func infoBigStruct() []byte { typeScalar, typeScalar, typeScalar, // t int; y uint16; u uint64 typePointer, typeScalar, // i string } - case "amd64p32": - return []byte{ - typePointer, // q *int - typeScalar, typeScalar, typeScalar, typeScalar, typeScalar, // w byte; e [17]byte - typePointer, typeScalar, typeScalar, // r []byte - typeScalar, typeScalar, typeScalar, typeScalar, typeScalar, // t int; y uint16; u uint64 - typePointer, typeScalar, // i string - } default: panic("unknown arch") } diff --git a/src/runtime/go_tls.h b/src/runtime/go_tls.h index 61f7dbef3c4..a47e798d9d5 100644 --- a/src/runtime/go_tls.h +++ b/src/runtime/go_tls.h @@ -11,11 +11,6 @@ #define g(r) 0(r)(TLS*1) #endif -#ifdef GOARCH_amd64p32 -#define get_tls(r) MOVL TLS, r -#define g(r) 0(r)(TLS*1) -#endif - #ifdef GOARCH_386 #define get_tls(r) MOVL TLS, r #define g(r) 0(r)(TLS*1) diff --git a/src/runtime/hash64.go b/src/runtime/hash64.go index e7908d7800c..798d6dcd9e8 100644 --- a/src/runtime/hash64.go +++ b/src/runtime/hash64.go @@ -6,7 +6,7 @@ // xxhash: https://code.google.com/p/xxhash/ // cityhash: https://code.google.com/p/cityhash/ -// +build amd64 amd64p32 arm64 mips64 mips64le ppc64 ppc64le s390x wasm +// +build amd64 arm64 mips64 mips64le ppc64 ppc64le s390x wasm package runtime diff --git a/src/runtime/internal/atomic/atomic_amd64x.go b/src/runtime/internal/atomic/atomic_amd64.go similarity index 98% rename from src/runtime/internal/atomic/atomic_amd64x.go rename to src/runtime/internal/atomic/atomic_amd64.go index 31c1636b2ef..fc865e892d0 100644 --- a/src/runtime/internal/atomic/atomic_amd64x.go +++ b/src/runtime/internal/atomic/atomic_amd64.go @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build amd64 amd64p32 - package atomic import "unsafe" diff --git a/src/runtime/internal/atomic/atomic_test.go b/src/runtime/internal/atomic/atomic_test.go index 0ba75447e8c..9e4461ce38a 100644 --- a/src/runtime/internal/atomic/atomic_test.go +++ b/src/runtime/internal/atomic/atomic_test.go @@ -86,14 +86,8 @@ func TestUnaligned64(t *testing.T) { // a continual source of pain. Test that on 32-bit systems they crash // instead of failing silently. - switch runtime.GOARCH { - default: - if unsafe.Sizeof(int(0)) != 4 { - t.Skip("test only runs on 32-bit systems") - } - case "amd64p32": - // amd64p32 can handle unaligned atomics. - t.Skipf("test not needed on %v", runtime.GOARCH) + if unsafe.Sizeof(int(0)) != 4 { + t.Skip("test only runs on 32-bit systems") } x := make([]uint32, 4) diff --git a/src/runtime/panic32.go b/src/runtime/panic32.go index b89ce9d5636..aea8401a37b 100644 --- a/src/runtime/panic32.go +++ b/src/runtime/panic32.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build 386 amd64p32 arm mips mipsle +// +build 386 arm mips mipsle package runtime diff --git a/src/runtime/runtime2.go b/src/runtime/runtime2.go index 2d68721701a..dd399e00a69 100644 --- a/src/runtime/runtime2.go +++ b/src/runtime/runtime2.go @@ -922,7 +922,7 @@ var ( // Information about what cpu features are available. // Packages outside the runtime should not use these // as they are not an external api. - // Set on startup in asm_{386,amd64,amd64p32}.s + // Set on startup in asm_{386,amd64}.s processorVersionInfo uint32 isIntel bool lfenceBeforeRdtsc bool diff --git a/src/runtime/signal_amd64x.go b/src/runtime/signal_amd64.go similarity index 98% rename from src/runtime/signal_amd64x.go rename to src/runtime/signal_amd64.go index 459499e9737..9e9bb9ca335 100644 --- a/src/runtime/signal_amd64x.go +++ b/src/runtime/signal_amd64.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build amd64 amd64p32 +// +build amd64 // +build darwin dragonfly freebsd linux netbsd openbsd solaris package runtime diff --git a/src/runtime/stubs32.go b/src/runtime/stubs32.go index 149560fd931..a7f52f6b9e2 100644 --- a/src/runtime/stubs32.go +++ b/src/runtime/stubs32.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build 386 arm amd64p32 mips mipsle +// +build 386 arm mips mipsle package runtime diff --git a/src/runtime/stubs_amd64x.go b/src/runtime/stubs_amd64.go similarity index 93% rename from src/runtime/stubs_amd64x.go rename to src/runtime/stubs_amd64.go index e7a1be81359..b4c0df11532 100644 --- a/src/runtime/stubs_amd64x.go +++ b/src/runtime/stubs_amd64.go @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build amd64 amd64p32 - package runtime // stackcheck checks that SP is in range [g->stack.lo, g->stack.hi). diff --git a/src/runtime/sys_x86.go b/src/runtime/sys_x86.go index 2b4ed8bdf56..f917cb8bd7a 100644 --- a/src/runtime/sys_x86.go +++ b/src/runtime/sys_x86.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build amd64 amd64p32 386 +// +build amd64 386 package runtime diff --git a/src/runtime/trace.go b/src/runtime/trace.go index d074783550e..f919362be86 100644 --- a/src/runtime/trace.go +++ b/src/runtime/trace.go @@ -84,7 +84,7 @@ const ( // and ppc64le. // Tracing won't work reliably for architectures where cputicks is emulated // by nanotime, so the value doesn't matter for those architectures. - traceTickDiv = 16 + 48*(sys.Goarch386|sys.GoarchAmd64|sys.GoarchAmd64p32) + traceTickDiv = 16 + 48*(sys.Goarch386|sys.GoarchAmd64) // Maximum number of PCs in a single stack trace. // Since events contain only stack id rather than whole stack trace, // we can allow quite large values here. diff --git a/src/runtime/traceback.go b/src/runtime/traceback.go index 5153390f1db..96fb33c04b2 100644 --- a/src/runtime/traceback.go +++ b/src/runtime/traceback.go @@ -26,8 +26,8 @@ import ( // takes up only 4 bytes on the stack, while on 64-bit systems it takes up 8 bytes. // Typically this is ptrSize. // -// As an exception, amd64p32 has ptrSize == 4 but the CALL instruction still -// stores an 8-byte return PC onto the stack. To accommodate this, we use regSize +// As an exception, amd64p32 had ptrSize == 4 but the CALL instruction still +// stored an 8-byte return PC onto the stack. To accommodate this, we used regSize // as the size of the architecture-pushed return PC. // // usesLR is defined below in terms of minFrameSize, which is defined in diff --git a/src/sync/atomic/atomic_test.go b/src/sync/atomic/atomic_test.go index 39c40c6aaf5..135f02a726a 100644 --- a/src/sync/atomic/atomic_test.go +++ b/src/sync/atomic/atomic_test.go @@ -1391,15 +1391,8 @@ func TestUnaligned64(t *testing.T) { // Unaligned 64-bit atomics on 32-bit systems are // a continual source of pain. Test that on 32-bit systems they crash // instead of failing silently. - - switch runtime.GOARCH { - default: - if !arch32 { - t.Skip("test only runs on 32-bit systems") - } - case "amd64p32": - // amd64p32 can handle unaligned atomics. - t.Skipf("test not needed on %v", runtime.GOARCH) + if !arch32 { + t.Skip("test only runs on 32-bit systems") } x := make([]uint32, 4) diff --git a/src/syscall/endian_little.go b/src/syscall/endian_little.go index 013d878b8df..b633490b717 100644 --- a/src/syscall/endian_little.go +++ b/src/syscall/endian_little.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // -// +build 386 amd64 amd64p32 arm arm64 ppc64le mips64le mipsle wasm +// +build 386 amd64 arm arm64 ppc64le mips64le mipsle wasm package syscall -- GitLab