blob: e6a394fbe7fce926fecdae5428ea7e438c9b5036 [file] [edit]
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2023-2024 Rivos, Inc
*/
#ifndef _UAPI_ASM_HWPROBE_H
#define _UAPI_ASM_HWPROBE_H
#include <linux/types.h>
#include <linux/const.h>
/*
* Interface for probing hardware capabilities from userspace, see
* Documentation/arch/riscv/hwprobe.rst for more information.
*/
struct riscv_hwprobe {
__s64 key;
__u64 value;
};
#define RISCV_HWPROBE_KEY_MVENDORID 0
#define RISCV_HWPROBE_KEY_MARCHID 1
#define RISCV_HWPROBE_KEY_MIMPID 2
#define RISCV_HWPROBE_KEY_BASE_BEHAVIOR 3
#define RISCV_HWPROBE_BASE_BEHAVIOR_IMA _BITULL(0)
#define RISCV_HWPROBE_KEY_IMA_EXT_0 4
#define RISCV_HWPROBE_IMA_FD _BITULL(0)
#define RISCV_HWPROBE_IMA_C _BITULL(1)
#define RISCV_HWPROBE_IMA_V _BITULL(2)
#define RISCV_HWPROBE_EXT_ZBA _BITULL(3)
#define RISCV_HWPROBE_EXT_ZBB _BITULL(4)
#define RISCV_HWPROBE_EXT_ZBS _BITULL(5)
#define RISCV_HWPROBE_EXT_ZICBOZ _BITULL(6)
#define RISCV_HWPROBE_EXT_ZBC _BITULL(7)
#define RISCV_HWPROBE_EXT_ZBKB _BITULL(8)
#define RISCV_HWPROBE_EXT_ZBKC _BITULL(9)
#define RISCV_HWPROBE_EXT_ZBKX _BITULL(10)
#define RISCV_HWPROBE_EXT_ZKND _BITULL(11)
#define RISCV_HWPROBE_EXT_ZKNE _BITULL(12)
#define RISCV_HWPROBE_EXT_ZKNH _BITULL(13)
#define RISCV_HWPROBE_EXT_ZKSED _BITULL(14)
#define RISCV_HWPROBE_EXT_ZKSH _BITULL(15)
#define RISCV_HWPROBE_EXT_ZKT _BITULL(16)
#define RISCV_HWPROBE_EXT_ZVBB _BITULL(17)
#define RISCV_HWPROBE_EXT_ZVBC _BITULL(18)
#define RISCV_HWPROBE_EXT_ZVKB _BITULL(19)
#define RISCV_HWPROBE_EXT_ZVKG _BITULL(20)
#define RISCV_HWPROBE_EXT_ZVKNED _BITULL(21)
#define RISCV_HWPROBE_EXT_ZVKNHA _BITULL(22)
#define RISCV_HWPROBE_EXT_ZVKNHB _BITULL(23)
#define RISCV_HWPROBE_EXT_ZVKSED _BITULL(24)
#define RISCV_HWPROBE_EXT_ZVKSH _BITULL(25)
#define RISCV_HWPROBE_EXT_ZVKT _BITULL(26)
#define RISCV_HWPROBE_EXT_ZFH _BITULL(27)
#define RISCV_HWPROBE_EXT_ZFHMIN _BITULL(28)
#define RISCV_HWPROBE_EXT_ZIHINTNTL _BITULL(29)
#define RISCV_HWPROBE_EXT_ZVFH _BITULL(30)
#define RISCV_HWPROBE_EXT_ZVFHMIN _BITULL(31)
#define RISCV_HWPROBE_EXT_ZFA _BITULL(32)
#define RISCV_HWPROBE_EXT_ZTSO _BITULL(33)
#define RISCV_HWPROBE_EXT_ZACAS _BITULL(34)
#define RISCV_HWPROBE_EXT_ZICOND _BITULL(35)
#define RISCV_HWPROBE_EXT_ZIHINTPAUSE _BITULL(36)
#define RISCV_HWPROBE_EXT_ZVE32X _BITULL(37)
#define RISCV_HWPROBE_EXT_ZVE32F _BITULL(38)
#define RISCV_HWPROBE_EXT_ZVE64X _BITULL(39)
#define RISCV_HWPROBE_EXT_ZVE64F _BITULL(40)
#define RISCV_HWPROBE_EXT_ZVE64D _BITULL(41)
#define RISCV_HWPROBE_EXT_ZIMOP _BITULL(42)
#define RISCV_HWPROBE_EXT_ZCA _BITULL(43)
#define RISCV_HWPROBE_EXT_ZCB _BITULL(44)
#define RISCV_HWPROBE_EXT_ZCD _BITULL(45)
#define RISCV_HWPROBE_EXT_ZCF _BITULL(46)
#define RISCV_HWPROBE_EXT_ZCMOP _BITULL(47)
#define RISCV_HWPROBE_EXT_ZAWRS _BITULL(48)
#define RISCV_HWPROBE_EXT_SUPM _BITULL(49)
#define RISCV_HWPROBE_EXT_ZICNTR _BITULL(50)
#define RISCV_HWPROBE_EXT_ZIHPM _BITULL(51)
#define RISCV_HWPROBE_EXT_ZFBFMIN _BITULL(52)
#define RISCV_HWPROBE_EXT_ZVFBFMIN _BITULL(53)
#define RISCV_HWPROBE_EXT_ZVFBFWMA _BITULL(54)
#define RISCV_HWPROBE_EXT_ZICBOM _BITULL(55)
#define RISCV_HWPROBE_EXT_ZAAMO _BITULL(56)
#define RISCV_HWPROBE_EXT_ZALRSC _BITULL(57)
#define RISCV_HWPROBE_EXT_ZABHA _BITULL(58)
#define RISCV_HWPROBE_EXT_ZALASR _BITULL(59)
#define RISCV_HWPROBE_EXT_ZICBOP _BITULL(60)
#define RISCV_HWPROBE_EXT_ZILSD _BITULL(61)
#define RISCV_HWPROBE_EXT_ZCLSD _BITULL(62)
#define RISCV_HWPROBE_EXT_ZICFILP _BITULL(63)
#define RISCV_HWPROBE_KEY_CPUPERF_0 5
#define RISCV_HWPROBE_MISALIGNED_UNKNOWN 0
#define RISCV_HWPROBE_MISALIGNED_EMULATED 1
#define RISCV_HWPROBE_MISALIGNED_SLOW 2
#define RISCV_HWPROBE_MISALIGNED_FAST 3
#define RISCV_HWPROBE_MISALIGNED_UNSUPPORTED 4
#define RISCV_HWPROBE_MISALIGNED_MASK 7
#define RISCV_HWPROBE_KEY_ZICBOZ_BLOCK_SIZE 6
#define RISCV_HWPROBE_KEY_HIGHEST_VIRT_ADDRESS 7
#define RISCV_HWPROBE_KEY_TIME_CSR_FREQ 8
#define RISCV_HWPROBE_KEY_MISALIGNED_SCALAR_PERF 9
#define RISCV_HWPROBE_MISALIGNED_SCALAR_UNKNOWN 0
#define RISCV_HWPROBE_MISALIGNED_SCALAR_EMULATED 1
#define RISCV_HWPROBE_MISALIGNED_SCALAR_SLOW 2
#define RISCV_HWPROBE_MISALIGNED_SCALAR_FAST 3
#define RISCV_HWPROBE_MISALIGNED_SCALAR_UNSUPPORTED 4
#define RISCV_HWPROBE_KEY_MISALIGNED_VECTOR_PERF 10
#define RISCV_HWPROBE_MISALIGNED_VECTOR_UNKNOWN 0
#define RISCV_HWPROBE_MISALIGNED_VECTOR_SLOW 2
#define RISCV_HWPROBE_MISALIGNED_VECTOR_FAST 3
#define RISCV_HWPROBE_MISALIGNED_VECTOR_UNSUPPORTED 4
#define RISCV_HWPROBE_KEY_VENDOR_EXT_THEAD_0 11
#define RISCV_HWPROBE_KEY_ZICBOM_BLOCK_SIZE 12
#define RISCV_HWPROBE_KEY_VENDOR_EXT_SIFIVE_0 13
#define RISCV_HWPROBE_KEY_VENDOR_EXT_MIPS_0 14
#define RISCV_HWPROBE_KEY_ZICBOP_BLOCK_SIZE 15
#define RISCV_HWPROBE_KEY_IMA_EXT_1 16
#define RISCV_HWPROBE_EXT_ZICFISS _BITULL(0)
#define RISCV_HWPROBE_EXT_ZICCLSM _BITULL(1)
#define RISCV_HWPROBE_EXT_ZICCAMOA _BITULL(2)
#define RISCV_HWPROBE_EXT_ZICCIF _BITULL(3)
#define RISCV_HWPROBE_EXT_ZICCRSE _BITULL(4)
#define RISCV_HWPROBE_EXT_ZA64RS _BITULL(5)
/* Increase RISCV_HWPROBE_MAX_KEY when adding items. */
/* Flags */
#define RISCV_HWPROBE_WHICH_CPUS _BITUL(0)
#endif