aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/dist
diff options
context:
space:
mode:
authorMark Ryan <markdryan@rivosinc.com>2023-11-07 10:09:49 +0100
committerJoel Sing <joel@sing.id.au>2024-01-24 07:25:25 +0000
commitb4e7d630bc6fbf654a20a4bebda94a8150811bea (patch)
tree496a37c6588cbe32311b8534619138e7cf0ef345 /src/cmd/dist
parentb3acaa8230e95c232a6f5c30eb7619a0c859ab16 (diff)
downloadgo-b4e7d630bc6fbf654a20a4bebda94a8150811bea.tar.xz
cmd/go: add GORISCV64 environment variable
The variable represents the RISC-V user-mode application profile for which to compile. Valid values are rva20u64 (the default) and rva22u64. Setting GORISCV64=rva20u64 defines the riscv64.rva20u64 build tag, sets the internal variable buildcfg.GORISCV64 to 20 and defines the macro GORISCV64_rva20u64 for use in assembly language code. Setting GORISCV64=rva22u64 defines the riscv64.rva20u64 and riscv64.rva22u64 build tags, sets the internal variable buildcfg.GORISCV64 to 22 and defines the macro GORISCV64_rva22u64 for use in assembly language code. This patch only provides a mechanism for the compiler and hand-coded assembly language functions to take advantage of the RISC-V extensions mandated by the application profiles. Further patches will be required to get the compiler/assembler and assembly language functions to actually generate and use these extensions. Fixes #61476 Change-Id: I9195ae6ee71703cd2112160e89157ab63b8391af Reviewed-on: https://go-review.googlesource.com/c/go/+/541135 Reviewed-by: M Zhuo <mengzhuo1203@gmail.com> Reviewed-by: Joel Sing <joel@sing.id.au> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Wang Yaduo <wangyaduo@linux.alibaba.com> Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Bryan Mills <bcmills@google.com> Run-TryBot: M Zhuo <mengzhuo1203@gmail.com> TryBot-Result: Gopher Robot <gobot@golang.org>
Diffstat (limited to 'src/cmd/dist')
-rw-r--r--src/cmd/dist/build.go15
-rw-r--r--src/cmd/dist/buildruntime.go1
2 files changed, 16 insertions, 0 deletions
diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go
index 32e59b446a..96199bcbfa 100644
--- a/src/cmd/dist/build.go
+++ b/src/cmd/dist/build.go
@@ -38,6 +38,7 @@ var (
gomips string
gomips64 string
goppc64 string
+ goriscv64 string
goroot string
goroot_final string
goextlinkenabled string
@@ -177,6 +178,12 @@ func xinit() {
}
goppc64 = b
+ b = os.Getenv("GORISCV64")
+ if b == "" {
+ b = "rva20u64"
+ }
+ goriscv64 = b
+
if p := pathf("%s/src/all.bash", goroot); !isfile(p) {
fatalf("$GOROOT is not set correctly or not exported\n"+
"\tGOROOT=%s\n"+
@@ -236,6 +243,7 @@ func xinit() {
os.Setenv("GOMIPS", gomips)
os.Setenv("GOMIPS64", gomips64)
os.Setenv("GOPPC64", goppc64)
+ os.Setenv("GORISCV64", goriscv64)
os.Setenv("GOROOT", goroot)
os.Setenv("GOROOT_FINAL", goroot_final)
@@ -891,6 +899,10 @@ func runInstall(pkg string, ch chan struct{}) {
asmArgs = append(asmArgs, "-D", "GOPPC64_power8")
}
}
+ if goarch == "riscv64" {
+ // Define GORISCV64_value from goriscv64
+ asmArgs = append(asmArgs, "-D", "GORISCV64_"+goriscv64)
+ }
goasmh := pathf("%s/go_asm.h", workdir)
// Collect symabis from assembly code.
@@ -1236,6 +1248,9 @@ func cmdenv() {
if goarch == "ppc64" || goarch == "ppc64le" {
xprintf(format, "GOPPC64", goppc64)
}
+ if goarch == "riscv64" {
+ xprintf(format, "GORISCV64", goriscv64)
+ }
xprintf(format, "GOWORK", "off")
if *path {
diff --git a/src/cmd/dist/buildruntime.go b/src/cmd/dist/buildruntime.go
index 1de78f0fdb..b041183bdf 100644
--- a/src/cmd/dist/buildruntime.go
+++ b/src/cmd/dist/buildruntime.go
@@ -57,6 +57,7 @@ func mkbuildcfg(file string) {
fmt.Fprintf(&buf, "const defaultGOMIPS = `%s`\n", gomips)
fmt.Fprintf(&buf, "const defaultGOMIPS64 = `%s`\n", gomips64)
fmt.Fprintf(&buf, "const defaultGOPPC64 = `%s`\n", goppc64)
+ fmt.Fprintf(&buf, "const defaultGORISCV64 = `%s`\n", goriscv64)
fmt.Fprintf(&buf, "const defaultGOEXPERIMENT = `%s`\n", goexperiment)
fmt.Fprintf(&buf, "const defaultGO_EXTLINK_ENABLED = `%s`\n", goextlinkenabled)
fmt.Fprintf(&buf, "const defaultGO_LDSO = `%s`\n", defaultldso)