riscv_hwprobe
static inline bool riscv_hwprobe_pair_cmp(struct riscv_hwprobe *pair,
struct riscv_hwprobe *other_pair)
asmlinkage long sys_riscv_hwprobe(struct riscv_hwprobe *, size_t, size_t,
void hwprobe_isa_vendor_ext_mips_0(struct riscv_hwprobe *pair, const struct cpumask *cpus);
static inline void hwprobe_isa_vendor_ext_mips_0(struct riscv_hwprobe *pair,
void hwprobe_isa_vendor_ext_sifive_0(struct riscv_hwprobe *pair, const struct cpumask *cpus);
static inline void hwprobe_isa_vendor_ext_sifive_0(struct riscv_hwprobe *pair,
void hwprobe_isa_vendor_ext_thead_0(struct riscv_hwprobe *pair, const struct cpumask *cpus);
static inline void hwprobe_isa_vendor_ext_thead_0(struct riscv_hwprobe *pair,
static void hwprobe_isa_ext1(struct riscv_hwprobe *pair,
struct riscv_hwprobe pair;
static void hwprobe_one_pair(struct riscv_hwprobe *pair,
static void hwprobe_arch_id(struct riscv_hwprobe *pair,
static int hwprobe_get_values(struct riscv_hwprobe __user *pairs,
struct riscv_hwprobe pair;
static int hwprobe_get_cpus(struct riscv_hwprobe __user *pairs,
struct riscv_hwprobe pair, tmp;
pair = (struct riscv_hwprobe){ .key = -1, };
tmp = (struct riscv_hwprobe){ .key = pair.key, };
struct riscv_hwprobe pair;
static int do_riscv_hwprobe(struct riscv_hwprobe __user *pairs,
SYSCALL_DEFINE5(riscv_hwprobe, struct riscv_hwprobe __user *, pairs,
static void hwprobe_isa_ext0(struct riscv_hwprobe *pair,
int __vdso_riscv_hwprobe(struct riscv_hwprobe *pairs, size_t pair_count,
int __vdso_riscv_hwprobe(struct riscv_hwprobe *pairs, size_t pair_count,
extern int riscv_hwprobe(struct riscv_hwprobe *pairs, size_t pair_count,
static int riscv_vdso_get_values(struct riscv_hwprobe *pairs, size_t pair_count,
struct riscv_hwprobe *p = pairs;
struct riscv_hwprobe *end = pairs + pair_count;
return riscv_hwprobe(pairs, pair_count, cpusetsize, cpus, flags);
static int riscv_vdso_get_cpus(struct riscv_hwprobe *pairs, size_t pair_count,
struct riscv_hwprobe *p = pairs;
struct riscv_hwprobe *end = pairs + pair_count;
return riscv_hwprobe(pairs, pair_count, cpusetsize, cpus, flags);
struct riscv_hwprobe t = {
void hwprobe_isa_vendor_ext_mips_0(struct riscv_hwprobe *pair,
void hwprobe_isa_vendor_ext_sifive_0(struct riscv_hwprobe *pair, const struct cpumask *cpus)
void hwprobe_isa_vendor_ext_thead_0(struct riscv_hwprobe *pair, const struct cpumask *cpus)
struct riscv_hwprobe pair = {
rc = riscv_hwprobe(&pair, 1, sizeof(cpu_set_t), (unsigned long *)cpus, 0);
struct riscv_hwprobe pair = {
rc = riscv_hwprobe(&pair, 1, sizeof(cpu_set_t), (unsigned long *)cpus, 0);
struct riscv_hwprobe pair = {
rc = riscv_hwprobe(&pair, 1, sizeof(cpu_set_t), (unsigned long *)cpus, 0);
struct riscv_hwprobe pair = {
rc = riscv_hwprobe(&pair, 1, sizeof(cpu_set_t), (unsigned long *)&one_cpu, 0);
struct riscv_hwprobe pair;
rc = riscv_hwprobe(&pair, 1, sizeof(cpu_set_t), (unsigned long *)&cpus, 0);
out = riscv_hwprobe(pairs, 8, 1, &cpus, 0);
out = riscv_hwprobe(pairs, 8, 0, 0, 0);
out = riscv_hwprobe(pairs, 8, 0, &cpus, 0);
out = riscv_hwprobe(pairs, 8, 1, 0, 0);
out = riscv_hwprobe(pairs, 1, 1, &cpus, 0);
out = riscv_hwprobe(pairs, 2, 0, 0, 0);
struct riscv_hwprobe pairs[8];
long riscv_hwprobe(struct riscv_hwprobe *pairs, size_t pair_count,
pairs[0] = (struct riscv_hwprobe){ .key = RISCV_HWPROBE_KEY_BASE_BEHAVIOR, };
rc = riscv_hwprobe(pairs, 1, 0, NULL, 0);
pairs[0] = (struct riscv_hwprobe){ .key = RISCV_HWPROBE_KEY_IMA_EXT_0, };
rc = riscv_hwprobe(pairs, 1, 0, NULL, 0);
pairs[0] = (struct riscv_hwprobe){ .key = RISCV_HWPROBE_KEY_IMA_EXT_1, };
rc = riscv_hwprobe(pairs, 1, 0, NULL, 0);
pairs[0] = (struct riscv_hwprobe){ .key = RISCV_HWPROBE_KEY_BASE_BEHAVIOR, .value = RISCV_HWPROBE_BASE_BEHAVIOR_IMA, };
rc = riscv_hwprobe(pairs, 1, 0, (unsigned long *)&cpus, RISCV_HWPROBE_WHICH_CPUS);
pairs[0] = (struct riscv_hwprobe){ .key = RISCV_HWPROBE_KEY_BASE_BEHAVIOR, .value = RISCV_HWPROBE_BASE_BEHAVIOR_IMA, };
rc = riscv_hwprobe(pairs, 1, sizeof(cpu_set_t), NULL, RISCV_HWPROBE_WHICH_CPUS);
pairs[0] = (struct riscv_hwprobe){ .key = 0xbadc0de, };
rc = riscv_hwprobe(pairs, 1, sizeof(cpu_set_t), (unsigned long *)&cpus, RISCV_HWPROBE_WHICH_CPUS);
pairs[0] = (struct riscv_hwprobe){ .key = RISCV_HWPROBE_KEY_BASE_BEHAVIOR, .value = RISCV_HWPROBE_BASE_BEHAVIOR_IMA, };
pairs[1] = (struct riscv_hwprobe){ .key = RISCV_HWPROBE_KEY_BASE_BEHAVIOR, .value = RISCV_HWPROBE_BASE_BEHAVIOR_IMA, };
rc = riscv_hwprobe(pairs, 2, sizeof(cpu_set_t), (unsigned long *)&cpus, RISCV_HWPROBE_WHICH_CPUS);
pairs[0] = (struct riscv_hwprobe){ .key = RISCV_HWPROBE_KEY_BASE_BEHAVIOR, .value = RISCV_HWPROBE_BASE_BEHAVIOR_IMA, };
pairs[1] = (struct riscv_hwprobe){ .key = RISCV_HWPROBE_KEY_IMA_EXT_0, .value = ext0_all, };
pairs[2] = (struct riscv_hwprobe){ .key = RISCV_HWPROBE_KEY_IMA_EXT_1, .value = ext1_all, };
rc = riscv_hwprobe(pairs, 3, sizeof(cpu_set_t), (unsigned long *)&cpus, RISCV_HWPROBE_WHICH_CPUS);
pairs[0] = (struct riscv_hwprobe){ .key = RISCV_HWPROBE_KEY_BASE_BEHAVIOR, .value = RISCV_HWPROBE_BASE_BEHAVIOR_IMA, };
pairs[1] = (struct riscv_hwprobe){ .key = RISCV_HWPROBE_KEY_IMA_EXT_0, .value = ext0_all, };
pairs[2] = (struct riscv_hwprobe){ .key = RISCV_HWPROBE_KEY_IMA_EXT_1, .value = ext1_all, };
rc = riscv_hwprobe(pairs, 3, sizeof(cpu_set_t), (unsigned long *)&cpus, RISCV_HWPROBE_WHICH_CPUS);
pairs[0] = (struct riscv_hwprobe){ .key = RISCV_HWPROBE_KEY_BASE_BEHAVIOR, .value = RISCV_HWPROBE_BASE_BEHAVIOR_IMA, };
pairs[1] = (struct riscv_hwprobe){ .key = RISCV_HWPROBE_KEY_IMA_EXT_0, .value = ~ext0_all, };
pairs[2] = (struct riscv_hwprobe){ .key = RISCV_HWPROBE_KEY_IMA_EXT_1, .value = ~ext1_all, };
rc = riscv_hwprobe(pairs, 3, sizeof(cpu_set_t), (unsigned long *)&cpus, RISCV_HWPROBE_WHICH_CPUS);
struct riscv_hwprobe *pairs;
pairs = malloc(nr_pairs * sizeof(struct riscv_hwprobe));
rc = riscv_hwprobe(pairs, nr_pairs, sizeof(cpu_set_t), (unsigned long *)cpus, RISCV_HWPROBE_WHICH_CPUS);
struct riscv_hwprobe pairs[3];
struct riscv_hwprobe pair;
riscv_hwprobe(&pair, 1, 0, NULL, 0);
struct riscv_hwprobe pair;
riscv_hwprobe(&pair, 1, 0, NULL, 0);