Home | History | Annotate | Download | only in runtime
      1 // Copyright 2016 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 package runtime
      6 
      7 import (
      8 	"runtime/internal/sys"
      9 )
     10 
     11 const (
     12 	// bit masks taken from bits/hwcap.h
     13 	_HWCAP_S390_VX = 2048 // vector facility
     14 )
     15 
     16 // facilities is padded to avoid false sharing.
     17 type facilities struct {
     18 	_     [sys.CacheLineSize]byte
     19 	hasVX bool // vector facility
     20 	_     [sys.CacheLineSize]byte
     21 }
     22 
     23 // cpu indicates the availability of s390x facilities that can be used in
     24 // Go assembly but are optional on models supported by Go.
     25 var cpu facilities
     26 
     27 func archauxv(tag, val uintptr) {
     28 	switch tag {
     29 	case _AT_HWCAP: // CPU capability bit flags
     30 		cpu.hasVX = val&_HWCAP_S390_VX != 0
     31 	}
     32 }
     33