cpu_linux_s390x.go 890 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // Copyright 2019 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. package cpu
  5. const (
  6. // bit mask values from /usr/include/bits/hwcap.h
  7. hwcap_ZARCH = 2
  8. hwcap_STFLE = 4
  9. hwcap_MSA = 8
  10. hwcap_LDISP = 16
  11. hwcap_EIMM = 32
  12. hwcap_DFP = 64
  13. hwcap_ETF3EH = 256
  14. hwcap_VX = 2048
  15. hwcap_VXE = 8192
  16. )
  17. func initS390Xbase() {
  18. // test HWCAP bit vector
  19. has := func(featureMask uint) bool {
  20. return hwCap&featureMask == featureMask
  21. }
  22. // mandatory
  23. S390X.HasZARCH = has(hwcap_ZARCH)
  24. // optional
  25. S390X.HasSTFLE = has(hwcap_STFLE)
  26. S390X.HasLDISP = has(hwcap_LDISP)
  27. S390X.HasEIMM = has(hwcap_EIMM)
  28. S390X.HasETF3EH = has(hwcap_ETF3EH)
  29. S390X.HasDFP = has(hwcap_DFP)
  30. S390X.HasMSA = has(hwcap_MSA)
  31. S390X.HasVX = has(hwcap_VX)
  32. if S390X.HasVX {
  33. S390X.HasVXE = has(hwcap_VXE)
  34. }
  35. }