RISCV_EXT_BITMASK ("zilsd", 1, 8)
RISCV_EXT_BITMASK ("zclsd", 1, 9)
RISCV_EXT_BITMASK ("zicfilp", 1, 26)
+RISCV_EXT_BITMASK ("zicfiss", 1, 27)
RISCV_EXT_BITMASK ("zcmp", 1, 10)
RISCV_EXT_BITMASK ("zifencei", 1, 11)
/* DEP_EXTS */ ({"zicsr", "zimop"}),
/* SUPPORTED_VERSIONS */ ({{1, 0}}),
/* FLAG_GROUP */ zi,
- /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
- /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+ /* BITMASK_GROUP_ID */ 1,
+ /* BITMASK_BIT_POSITION*/ 27,
/* EXTRA_EXTENSION_FLAGS */ 0)
DEFINE_RISCV_EXT(
#define ZICBOP_BITMASK (1ULL << 25)
#define ZICFILP_GROUPID 1
#define ZICFILP_BITMASK (1ULL << 26)
+#define ZICFISS_GROUPID 1
+#define ZICFISS_BITMASK (1ULL << 27)
#define SET_EXT(EXT) features[EXT##_GROUPID] |= EXT##_BITMASK
#define RISCV_HWPROBE_MISALIGNED_UNSUPPORTED (4 << 0)
#define RISCV_HWPROBE_MISALIGNED_MASK (7 << 0)
#define RISCV_HWPROBE_KEY_ZICBOZ_BLOCK_SIZE 6
+#define RISCV_HWPROBE_KEY_IMA_EXT_1 16
+#define RISCV_HWPROBE_EXT_ZICFISS (1ULL << 0)
struct riscv_hwprobe {
long long key;
#define SET_FROM_IMA_EXT(EXT) \
SET_FROM_HWPROBE (hwprobe_ima_ext, EXT)
+#define SET_FROM_IMA_EXT_1(EXT) \
+ SET_FROM_HWPROBE (hwprobe_ima_ext_1, EXT)
+
static void __init_riscv_features_bits_linux ()
{
struct riscv_hwprobe hwprobes[] = {
{RISCV_HWPROBE_KEY_MIMPID, 0},
{RISCV_HWPROBE_KEY_BASE_BEHAVIOR, 0},
{RISCV_HWPROBE_KEY_IMA_EXT_0, 0},
+ {RISCV_HWPROBE_KEY_IMA_EXT_1, 0},
};
long res = syscall_5_args (__NR_riscv_hwprobe, (long)&hwprobes,
SET_FROM_IMA_EXT (ZCLSD);
SET_FROM_IMA_EXT (ZICFILP);
+ const struct riscv_hwprobe hwprobe_ima_ext_1 = hwprobes[5];
+ SET_FROM_IMA_EXT_1 (ZICFISS);
+
for (i = 0; i < RISCV_FEATURE_BITS_LENGTH; ++i)
__riscv_feature_bits.features[i] = features[i];