| // Copyright 2018 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. |
| //+build !amd64,!amd64p32,!386 |
| procAuxv = "/proc/self/auxv" |
| uintSize uint = 32 << (^uint(0) >> 63) |
| // For those platforms don't have a 'cpuid' equivalent we use HWCAP/HWCAP2 |
| // These are initialized in cpu_$GOARCH.go |
| // and should not be changed after they are initialized. |
| buf, err := ioutil.ReadFile(procAuxv) |
| panic("read proc auxv failed: " + err.Error()) |
| for i := 0; i < len(buf)-pb*2; i += pb * 2 { |
| tag = uint(binary.LittleEndian.Uint32(buf[i:])) |
| val = uint(binary.LittleEndian.Uint32(buf[i+pb:])) |
| tag = uint(binary.LittleEndian.Uint64(buf[i:])) |
| val = uint(binary.LittleEndian.Uint64(buf[i+pb:])) |