1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
3 * Copyright 2023 Rivos, Inc
9 #include <uapi/asm/hwprobe.h>
11 #define RISCV_HWPROBE_MAX_KEY 9
13 static inline bool riscv_hwprobe_key_is_valid(__s64 key
)
15 return key
>= 0 && key
<= RISCV_HWPROBE_MAX_KEY
;
18 static inline bool hwprobe_key_is_bitmask(__s64 key
)
21 case RISCV_HWPROBE_KEY_BASE_BEHAVIOR
:
22 case RISCV_HWPROBE_KEY_IMA_EXT_0
:
23 case RISCV_HWPROBE_KEY_CPUPERF_0
:
30 static inline bool riscv_hwprobe_pair_cmp(struct riscv_hwprobe
*pair
,
31 struct riscv_hwprobe
*other_pair
)
33 if (pair
->key
!= other_pair
->key
)
36 if (hwprobe_key_is_bitmask(pair
->key
))
37 return (pair
->value
& other_pair
->value
) == other_pair
->value
;
39 return pair
->value
== other_pair
->value
;