/* 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 #include /* * 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