mirror of
https://github.com/golang/go
synced 2024-11-02 09:28:34 +00:00
cmd/dist: add -check-armv6k command to check for ARMv6K
so that our release note can reference a simple command to check if the processor implements ARMv6K or not. Updates #17082. Change-Id: I9ca52051e5517394a7cd6b778fb822c3ee435f84 Reviewed-on: https://go-review.googlesource.com/33686 Run-TryBot: Minux Ma <minux@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
9ea306a10c
commit
3a369a0f59
5 changed files with 27 additions and 0 deletions
8
src/cmd/dist/util.go
vendored
8
src/cmd/dist/util.go
vendored
|
@ -393,6 +393,14 @@ func errprintf(format string, args ...interface{}) {
|
|||
func main() {
|
||||
os.Setenv("TERM", "dumb") // disable escape codes in clang errors
|
||||
|
||||
// provide -check-armv6k first, before checking for $GOROOT so that
|
||||
// it is possible to run this check without having $GOROOT available.
|
||||
if len(os.Args) > 1 && os.Args[1] == "-check-armv6k" {
|
||||
useARMv6K() // might fail with SIGILL
|
||||
println("ARMv6K supported.")
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
slash = string(filepath.Separator)
|
||||
|
||||
gohostos = runtime.GOOS
|
||||
|
|
5
src/cmd/dist/util_gc.go
vendored
5
src/cmd/dist/util_gc.go
vendored
|
@ -25,3 +25,8 @@ func useVFPv1()
|
|||
// useVFPv3 tries to execute one VFPv3 instruction on ARM.
|
||||
// It will crash the current process if VFPv3 is missing.
|
||||
func useVFPv3()
|
||||
|
||||
// useARMv6K tries to run ARMv6K instructions on ARM.
|
||||
// It will crash the current process if it doesn't implement
|
||||
// ARMv6K or above.
|
||||
func useARMv6K()
|
||||
|
|
2
src/cmd/dist/util_gccgo.go
vendored
2
src/cmd/dist/util_gccgo.go
vendored
|
@ -22,3 +22,5 @@ func cansse2() bool { return C.supports_sse2() != 0 }
|
|||
func useVFPv1() {}
|
||||
|
||||
func useVFPv3() {}
|
||||
|
||||
func useARMv6K() {}
|
||||
|
|
9
src/cmd/dist/vfp_arm.s
vendored
9
src/cmd/dist/vfp_arm.s
vendored
|
@ -15,3 +15,12 @@ TEXT ·useVFPv1(SB),NOSPLIT,$0
|
|||
TEXT ·useVFPv3(SB),NOSPLIT,$0
|
||||
WORD $0xeeb70b00 // vmov.f64 d0, #112
|
||||
RET
|
||||
|
||||
// try to run ARMv6K (or above) "ldrexd" instruction
|
||||
TEXT ·useARMv6K(SB),NOSPLIT,$32
|
||||
MOVW R13, R2
|
||||
BIC $15, R13
|
||||
WORD $0xe1bd0f9f // ldrexd r0, r1, [sp]
|
||||
WORD $0xf57ff01f // clrex
|
||||
MOVW R2, R13
|
||||
RET
|
||||
|
|
3
src/cmd/dist/vfp_default.s
vendored
3
src/cmd/dist/vfp_default.s
vendored
|
@ -11,3 +11,6 @@ TEXT ·useVFPv1(SB),NOSPLIT,$0
|
|||
|
||||
TEXT ·useVFPv3(SB),NOSPLIT,$0
|
||||
RET
|
||||
|
||||
TEXT ·useARMv6K(SB),NOSPLIT,$0
|
||||
RET
|
||||
|
|
Loading…
Reference in a new issue