Lines Matching defs:header

725 static void sve_init_header_from_task(struct user_sve_header *header,
734 memset(header, 0, sizeof(*header));
746 header->flags |= SVE_PT_VL_INHERIT;
751 header->flags |= SVE_PT_VL_INHERIT;
761 header->flags |= SVE_PT_REGS_FPSIMD;
763 header->flags |= SVE_PT_REGS_SVE;
767 header->vl = task_get_vl(target, type);
768 vq = sve_vq_from_vl(header->vl);
770 header->max_vl = vec_max_vl(type);
771 header->size = SVE_PT_SIZE(vq, header->flags);
772 header->max_size = SVE_PT_SIZE(sve_vq_from_vl(header->max_vl),
776 static unsigned int sve_size_from_header(struct user_sve_header const *header)
778 return ALIGN(header->size, SVE_VQ_BYTES);
786 struct user_sve_header header;
791 sve_init_header_from_task(&header, target, type);
792 vq = sve_vq_from_vl(header.vl);
794 membuf_write(&to, &header, sizeof(header));
799 BUILD_BUG_ON(SVE_PT_FPSIMD_OFFSET != sizeof(header));
800 BUILD_BUG_ON(SVE_PT_SVE_OFFSET != sizeof(header));
802 switch ((header.flags & SVE_PT_REGS_MASK)) {
825 end = sve_size_from_header(&header);
850 struct user_sve_header header;
855 if (count < sizeof(header))
857 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &header,
858 0, sizeof(header));
866 ret = vec_set_vector_length(target, type, header.vl,
867 ((unsigned long)header.flags & ~SVE_PT_REGS_MASK) << 16);
908 BUILD_BUG_ON(SVE_PT_FPSIMD_OFFSET != sizeof(header));
909 if ((header.flags & SVE_PT_REGS_MASK) == SVE_PT_REGS_FPSIMD) {
927 if (count && vq != sve_vq_from_vl(header.vl)) {
952 BUILD_BUG_ON(SVE_PT_SVE_OFFSET != sizeof(header));
1022 struct user_za_header header;
1030 memset(&header, 0, sizeof(header));
1033 header.flags |= ZA_PT_VL_INHERIT;
1035 header.vl = task_get_sme_vl(target);
1036 vq = sve_vq_from_vl(header.vl);
1037 header.max_vl = sme_max_vl();
1038 header.max_size = ZA_PT_SIZE(vq);
1040 /* If ZA is not active there is only the header */
1042 header.size = ZA_PT_SIZE(vq);
1044 header.size = ZA_PT_ZA_OFFSET;
1046 membuf_write(&to, &header, sizeof(header));
1048 BUILD_BUG_ON(ZA_PT_ZA_OFFSET != sizeof(header));
1063 end = ALIGN(header.size, SVE_VQ_BYTES);
1073 struct user_za_header header;
1081 if (count < sizeof(header))
1083 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &header,
1084 0, sizeof(header));
1093 ret = vec_set_vector_length(target, ARM64_VEC_SME, header.vl,
1094 ((unsigned long)header.flags) << 16);
1129 if (vq != sve_vq_from_vl(header.vl)) {
1134 BUILD_BUG_ON(ZA_PT_ZA_OFFSET != sizeof(header));