Lines Matching defs:header

758 static void sve_init_header_from_task(struct user_sve_header *header,
766 memset(header, 0, sizeof(*header));
778 header->flags |= SVE_PT_VL_INHERIT;
782 header->flags |= SVE_PT_VL_INHERIT;
791 header->flags |= SVE_PT_REGS_FPSIMD;
793 header->flags |= SVE_PT_REGS_SVE;
797 header->vl = task_get_vl(target, type);
798 vq = sve_vq_from_vl(header->vl);
800 header->max_vl = vec_max_vl(type);
801 header->size = SVE_PT_SIZE(vq, header->flags);
802 header->max_size = SVE_PT_SIZE(sve_vq_from_vl(header->max_vl),
806 static unsigned int sve_size_from_header(struct user_sve_header const *header)
808 return ALIGN(header->size, SVE_VQ_BYTES);
816 struct user_sve_header header;
821 sve_init_header_from_task(&header, target, type);
822 vq = sve_vq_from_vl(header.vl);
824 membuf_write(&to, &header, sizeof(header));
829 BUILD_BUG_ON(SVE_PT_FPSIMD_OFFSET != sizeof(header));
830 BUILD_BUG_ON(SVE_PT_SVE_OFFSET != sizeof(header));
832 switch ((header.flags & SVE_PT_REGS_MASK)) {
855 end = sve_size_from_header(&header);
880 struct user_sve_header header;
885 if (count < sizeof(header))
887 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &header,
888 0, sizeof(header));
896 ret = vec_set_vector_length(target, type, header.vl,
897 ((unsigned long)header.flags & ~SVE_PT_REGS_MASK) << 16);
938 BUILD_BUG_ON(SVE_PT_FPSIMD_OFFSET != sizeof(header));
939 if ((header.flags & SVE_PT_REGS_MASK) == SVE_PT_REGS_FPSIMD) {
957 if (count && vq != sve_vq_from_vl(header.vl)) {
982 BUILD_BUG_ON(SVE_PT_SVE_OFFSET != sizeof(header));
1052 struct user_za_header header;
1060 memset(&header, 0, sizeof(header));
1063 header.flags |= ZA_PT_VL_INHERIT;
1065 header.vl = task_get_sme_vl(target);
1066 vq = sve_vq_from_vl(header.vl);
1067 header.max_vl = sme_max_vl();
1068 header.max_size = ZA_PT_SIZE(vq);
1070 /* If ZA is not active there is only the header */
1072 header.size = ZA_PT_SIZE(vq);
1074 header.size = ZA_PT_ZA_OFFSET;
1076 membuf_write(&to, &header, sizeof(header));
1078 BUILD_BUG_ON(ZA_PT_ZA_OFFSET != sizeof(header));
1093 end = ALIGN(header.size, SVE_VQ_BYTES);
1103 struct user_za_header header;
1111 if (count < sizeof(header))
1113 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &header,
1114 0, sizeof(header));
1123 ret = vec_set_vector_length(target, ARM64_VEC_SME, header.vl,
1124 ((unsigned long)header.flags) << 16);
1159 if (vq != sve_vq_from_vl(header.vl)) {
1164 BUILD_BUG_ON(ZA_PT_ZA_OFFSET != sizeof(header));