Remove BPA from Makefile
[icn.git] / cmd / bpa-operator / vendor / golang.org / x / sys / cpu / cpu_linux.go
1 // Copyright 2018 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 //+build !amd64,!amd64p32,!386
6
7 package cpu
8
9 import (
10         "io/ioutil"
11 )
12
13 const (
14         _AT_HWCAP  = 16
15         _AT_HWCAP2 = 26
16
17         procAuxv = "/proc/self/auxv"
18
19         uintSize = int(32 << (^uint(0) >> 63))
20 )
21
22 // For those platforms don't have a 'cpuid' equivalent we use HWCAP/HWCAP2
23 // These are initialized in cpu_$GOARCH.go
24 // and should not be changed after they are initialized.
25 var hwCap uint
26 var hwCap2 uint
27
28 func init() {
29         buf, err := ioutil.ReadFile(procAuxv)
30         if err != nil {
31                 // e.g. on android /proc/self/auxv is not accessible, so silently
32                 // ignore the error and leave Initialized = false
33                 return
34         }
35
36         bo := hostByteOrder()
37         for len(buf) >= 2*(uintSize/8) {
38                 var tag, val uint
39                 switch uintSize {
40                 case 32:
41                         tag = uint(bo.Uint32(buf[0:]))
42                         val = uint(bo.Uint32(buf[4:]))
43                         buf = buf[8:]
44                 case 64:
45                         tag = uint(bo.Uint64(buf[0:]))
46                         val = uint(bo.Uint64(buf[8:]))
47                         buf = buf[16:]
48                 }
49                 switch tag {
50                 case _AT_HWCAP:
51                         hwCap = val
52                 case _AT_HWCAP2:
53                         hwCap2 = val
54                 }
55         }
56         doinit()
57
58         Initialized = true
59 }