sve_vl
static inline size_t __sve_state_size(unsigned int sve_vl, unsigned int sme_vl)
unsigned int vl = max(sve_vl, sme_vl);
unsigned int sve_vl = task_get_sve_vl(task);
return __sve_state_size(sve_vl, sme_vl);
static inline size_t __sve_state_size(unsigned int sve_vl, unsigned int sme_vl)
unsigned int sve_vl;
last->sve_vl = task_get_sve_vl(current);
vl = last->sve_vl;
unsigned int sve_vl = task_get_sve_vl(task);
sve_vl = vl;
sve_state = kzalloc(__sve_state_size(sve_vl, sme_vl), GFP_KERNEL);
fp_state.sve_vl = vcpu->arch.sve_max_vl;
static int check_fpr(struct syscall_cfg *cfg, int sve_vl, int sme_vl,
if (!sve_vl && !(svcr & SVCR_SM_MASK)) {
static void setup_z(struct syscall_cfg *cfg, int sve_vl, int sme_vl,
static int check_z(struct syscall_cfg *cfg, int sve_vl, int sme_vl,
size_t reg_size = sve_vl;
if (!sve_vl)
cfg->name, sve_vl, i);
cfg->name, sve_vl, i);
cfg->name, sve_vl, i);
static void setup_p(struct syscall_cfg *cfg, int sve_vl, int sme_vl,
static int check_p(struct syscall_cfg *cfg, int sve_vl, int sme_vl,
size_t reg_size = sve_vq_from_vl(sve_vl) * 2; /* 1 bit per VL byte */
if (!sve_vl)
cfg->name, sve_vl);
static void setup_ffr(struct syscall_cfg *cfg, int sve_vl, int sme_vl,
static int check_ffr(struct syscall_cfg *cfg, int sve_vl, int sme_vl,
size_t reg_size = sve_vq_from_vl(sve_vl) * 2; /* 1 bit per VL byte */
if (!sve_vl)
cfg->name, sve_vl);
static void setup_svcr(struct syscall_cfg *cfg, int sve_vl, int sme_vl,
static int check_svcr(struct syscall_cfg *cfg, int sve_vl, int sme_vl,
static void setup_za(struct syscall_cfg *cfg, int sve_vl, int sme_vl,
static int check_za(struct syscall_cfg *cfg, int sve_vl, int sme_vl,
static void setup_zt(struct syscall_cfg *cfg, int sve_vl, int sme_vl,
static int check_zt(struct syscall_cfg *cfg, int sve_vl, int sme_vl,
typedef void (*setup_fn)(struct syscall_cfg *cfg, int sve_vl, int sme_vl,
typedef int (*check_fn)(struct syscall_cfg *cfg, int sve_vl, int sme_vl,
extern void do_syscall(int sve_vl, int sme_vl);
static bool do_test(struct syscall_cfg *cfg, int sve_vl, int sme_vl,
regset[i].setup(cfg, sve_vl, sme_vl, svcr);
do_syscall(sve_vl, sme_vl);
errors += regset[i].check(cfg, sve_vl, sme_vl, svcr);
static void setup_gpr(struct syscall_cfg *cfg, int sve_vl, int sme_vl,
static int check_gpr(struct syscall_cfg *cfg, int sve_vl, int sme_vl, uint64_t svcr)
cfg->name, sve_vl, i,
static void setup_fpr(struct syscall_cfg *cfg, int sve_vl, int sme_vl,
.run = sve_vl,