mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-05 04:19:55 +08:00
8dc2499aa6
gotools/ * Makefile.am (go_cmd_cgo_files): Add ast_go118.go (check-go-tool): Copy golang.org/x/tools directories. * Makefile.in: Regenerate. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/384695
46 lines
849 B
Go
46 lines
849 B
Go
// Copyright 2020 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.
|
|
|
|
//go:build arm64
|
|
|
|
package cpu
|
|
|
|
func osInit() {
|
|
// Retrieve info from system register ID_AA64ISAR0_EL1.
|
|
isar0 := getisar0()
|
|
|
|
// ID_AA64ISAR0_EL1
|
|
switch extractBits(isar0, 4, 7) {
|
|
case 1:
|
|
ARM64.HasAES = true
|
|
case 2:
|
|
ARM64.HasAES = true
|
|
ARM64.HasPMULL = true
|
|
}
|
|
|
|
switch extractBits(isar0, 8, 11) {
|
|
case 1:
|
|
ARM64.HasSHA1 = true
|
|
}
|
|
|
|
switch extractBits(isar0, 12, 15) {
|
|
case 1, 2:
|
|
ARM64.HasSHA2 = true
|
|
}
|
|
|
|
switch extractBits(isar0, 16, 19) {
|
|
case 1:
|
|
ARM64.HasCRC32 = true
|
|
}
|
|
|
|
switch extractBits(isar0, 20, 23) {
|
|
case 2:
|
|
ARM64.HasATOMICS = true
|
|
}
|
|
}
|
|
|
|
func extractBits(data uint64, start, end uint) uint {
|
|
return (uint)(data>>start) & ((1 << (end - start + 1)) - 1)
|
|
}
|