arch

package
v0.0.0-...-b8d2967 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 28, 2026 License: GPL-3.0 Imports: 6 Imported by: 168

Documentation

Index

Constants

View Source
const (
	RISCV_HWPROBE_IMA_FD uint64 = 1 << iota
	RISCV_HWPROBE_IMA_C
	RISCV_HWPROBE_IMA_V
	RISCV_HWPROBE_EXT_ZBA
	RISCV_HWPROBE_EXT_ZBB
	RISCV_HWPROBE_EXT_ZBS
	RISCV_HWPROBE_EXT_ZICBOZ
	RISCV_HWPROBE_EXT_ZBC
	RISCV_HWPROBE_EXT_ZBKB
	RISCV_HWPROBE_EXT_ZBKC
	RISCV_HWPROBE_EXT_ZBKX
	RISCV_HWPROBE_EXT_ZKND
	RISCV_HWPROBE_EXT_ZKNE
	RISCV_HWPROBE_EXT_ZKNH
	RISCV_HWPROBE_EXT_ZKSED
	RISCV_HWPROBE_EXT_ZKSH
	RISCV_HWPROBE_EXT_ZKT
	RISCV_HWPROBE_EXT_ZVBB
	RISCV_HWPROBE_EXT_ZVBC
	RISCV_HWPROBE_EXT_ZVKB
	RISCV_HWPROBE_EXT_ZVKG
	RISCV_HWPROBE_EXT_ZVKNED
	RISCV_HWPROBE_EXT_ZVKNHA
	RISCV_HWPROBE_EXT_ZVKNHB
	RISCV_HWPROBE_EXT_ZVKSED
	RISCV_HWPROBE_EXT_ZVKSH
	RISCV_HWPROBE_EXT_ZVKT
	RISCV_HWPROBE_EXT_ZFH
	RISCV_HWPROBE_EXT_ZFHMIN
	RISCV_HWPROBE_EXT_ZIHINTNTL
	RISCV_HWPROBE_EXT_ZVFH
	RISCV_HWPROBE_EXT_ZVFHMIN
	RISCV_HWPROBE_EXT_ZFA
	RISCV_HWPROBE_EXT_ZTSO
	RISCV_HWPROBE_EXT_ZACAS
	RISCV_HWPROBE_EXT_ZICOND
	RISCV_HWPROBE_EXT_ZIHINTPAUSE
	RISCV_HWPROBE_EXT_ZVE32X
	RISCV_HWPROBE_EXT_ZVE32F
	RISCV_HWPROBE_EXT_ZVE64X
	RISCV_HWPROBE_EXT_ZVE64F
	RISCV_HWPROBE_EXT_ZVE64D
	RISCV_HWPROBE_EXT_ZIMOP
	RISCV_HWPROBE_EXT_ZCA
	RISCV_HWPROBE_EXT_ZCB
	RISCV_HWPROBE_EXT_ZCD
	RISCV_HWPROBE_EXT_ZCF
	RISCV_HWPROBE_EXT_ZCMOP
	RISCV_HWPROBE_EXT_ZAWRS
	RISCV_HWPROBE_EXT_SUPM
	RISCV_HWPROBE_EXT_ZICNTR
	RISCV_HWPROBE_EXT_ZIHPM
	RISCV_HWPROBE_EXT_ZFBFMIN
	RISCV_HWPROBE_EXT_ZVFBFMIN
	RISCV_HWPROBE_EXT_ZVFBFWMA
	RISCV_HWPROBE_EXT_ZICBOM
	RISCV_HWPROBE_EXT_ZAAMO
	RISCV_HWPROBE_EXT_ZALRSC
	RISCV_HWPROBE_EXT_ZABHA
	RISCV_HWPROBE_EXT_ZALASR
	RISCV_HWPROBE_EXT_ZICBOP
	RISCV_HWPROBE_EXT_ZILSD
	RISCV_HWPROBE_EXT_ZCLSD
)

Extensions to be retrieved via unix.RISCV_HWPROBE_KEY_IMA_EXT_0 Note: This list is declared here since the one in golang.org/x/sys/unix/ztypes_linux_riscv64.go is not complete, and only contains the values up to RISCV_HWPROBE_EXT_ZIHINTPAUSE. Some of the constants missing in that file are required for RVA23, e.g. Zcmop

View Source
const (
	RISCV_HWPROBE_KEY_BASE_BEHAVIOR int64  = 0x3
	RISCV_HWPROBE_KEY_IMA_EXT_0     int64  = 0x4
	RISCV_HWPROBE_BASE_BEHAVIOR_IMA uint64 = 0x1
)

Re-defined and assigned values matching the unix.* constants for tests

Variables

View Source
var IsISASupportedByCPU = isISASupportedByCPU

IsISASupportedByCPU takes the name of an ISA and checks if it is supported by the CPU and kernel snapd is currently running on using architecture-specific code. Returns nil when the ISA is supported, or an explicit error otherwise.

View Source
var KernelVersion = osutil.KernelVersion
View Source
var RISCVHWProbe = func(pairs []RISCVHWProbePairs, set *CPUSet, flags uint) (err error) { return nil }

Re-defined to allow mocking this

View Source
var RiscVExtensions = []extDesc{
	{Key: RISCV_HWPROBE_IMA_FD, Text: "F and D", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_IMA_C, Text: "C", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_IMA_V, Text: "V", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZBA, Text: "Zba", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZBB, Text: "Zbb", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZBS, Text: "Zbs", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZICBOZ, Text: "Zicboz", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZBC, Text: "Zbc", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZBKB, Text: "Zbkb", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZBKC, Text: "Zbkc", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZBKX, Text: "Zbkx", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZKND, Text: "Zknd", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZKNE, Text: "Zkne", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZKNH, Text: "Zknh", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZKSED, Text: "Zksed", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZKSH, Text: "Zksh", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZKT, Text: "Zkt", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZVBB, Text: "Zvbb", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZVBC, Text: "Zvbc", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZVKB, Text: "Zvkb", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZVKG, Text: "Zvkg", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZVKNED, Text: "Zvkned", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZVKNHA, Text: "Zvknha", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZVKNHB, Text: "Zvknhb", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZVKSED, Text: "Zvksed", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZVKSH, Text: "Zvksh", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZVKT, Text: "Zvkt", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZFH, Text: "Zfh", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZFHMIN, Text: "Zfhmin", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZIHINTNTL, Text: "Zihintntl", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZVFH, Text: "Zvfh", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZVFHMIN, Text: "Zvfhmin", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZFA, Text: "Zfa", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZTSO, Text: "Ztso", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZACAS, Text: "Zacas", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZICNTR, Text: "Zicntr", Required: true, Since: "6.15"},
	{Key: RISCV_HWPROBE_EXT_ZICOND, Text: "Zicond", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZIHINTPAUSE, Text: "Zihintpause", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZIHPM, Text: "Zihpm", Required: true, Since: "6.15"},
	{Key: RISCV_HWPROBE_EXT_ZVE32X, Text: "Zve32x", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZVE32F, Text: "Zve32f", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZVE64X, Text: "Zve64x", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZVE64F, Text: "Zve64f", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZVE64D, Text: "Zfe64d", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZIMOP, Text: "Zimop", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZCA, Text: "Zca", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZCB, Text: "Zcb", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZCD, Text: "Zcd", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZCF, Text: "Zcf", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZCMOP, Text: "Zcmop", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZAWRS, Text: "Zawrs", Required: true, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZAAMO, Text: "Zaamo", Required: true, Since: "6.15"},
	{Key: RISCV_HWPROBE_EXT_ZALRSC, Text: "Zalrsc", Required: true, Since: "6.15"},
	{Key: RISCV_HWPROBE_EXT_SUPM, Text: "Supm", Required: true, Since: "6.13"},
	{Key: RISCV_HWPROBE_EXT_ZFBFMIN, Text: "Zfbfmin", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZVFBFMIN, Text: "Zvfbfmin", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZVFBFWMA, Text: "Zvfbfwma", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZICBOM, Text: "Zicbom", Required: true, Since: "6.15"},
	{Key: RISCV_HWPROBE_EXT_ZABHA, Text: "Zabha", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZALASR, Text: "Zalasr", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZICBOP, Text: "Zicbop", Required: true, Since: "6.19"},
	{Key: RISCV_HWPROBE_EXT_ZILSD, Text: "Zilsd", Required: false, Since: "0"},
	{Key: RISCV_HWPROBE_EXT_ZCLSD, Text: "Zclsd", Required: false, Since: "0"},
}

Define extensions list

The value of the "Required" field for all the entries is taken from RVA23 Profiles Specification, Version 1.0, 2024-10-17. The comments at the end of the line explain why the item is marked as Required.

Functions

func DpkgArchitecture

func DpkgArchitecture() string

DpkgArchitecture returns the debian equivalent architecture for the currently running architecture.

If the architecture does not map any debian architecture, the GOARCH is returned.

func DpkgKernelArchitecture

func DpkgKernelArchitecture() string

DpkgKernelArchitecture returns the debian equivalent architecture for the current running kernel. This is usually the same as the DpkgArchitecture - however there maybe cases that you run e.g. a snapd:i386 on an amd64 kernel.

func Endian

func Endian() binary.ByteOrder

Endian will return the native endianness of the system

func IsRISCVISASupported

func IsRISCVISASupported(isa string) error

IsRISCVISASupported takes the name of a RISCV64 ISA, gathers the list of extensions supported by the running platform, and verifies if all extensions required for compliance with the input ISA are supported. If they are, nil is returned. Otherwise, the missing requirement is returned.

Currently, only support for RVA23 can be checked for.

func IsSupportedArchitecture

func IsSupportedArchitecture(architectures []string) bool

IsSupportedArchitecture returns true if the system architecture is in the list of architectures.

func SetArchitecture

func SetArchitecture(newArch ArchitectureType)

SetArchitecture allows overriding the auto detected Architecture

Types

type ArchitectureType

type ArchitectureType string

ArchitectureType is the type for a supported snappy architecture

type CPUSet

type CPUSet [0]uint64

type RISCVHWProbePairs

type RISCVHWProbePairs struct {
	Key   int64
	Value uint64
}

Re-defined like this because Mock functions have been moved to export_test.go

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL