Lines Matching refs:header

761 static void sve_init_header_from_task(struct user_sve_header *header,  in sve_init_header_from_task()  argument
769 memset(header, 0, sizeof(*header)); in sve_init_header_from_task()
779 header->flags = SVE_PT_REGS_SVE; in sve_init_header_from_task()
781 header->flags = SVE_PT_REGS_FPSIMD; in sve_init_header_from_task()
786 header->flags |= SVE_PT_VL_INHERIT; in sve_init_header_from_task()
790 header->flags |= SVE_PT_VL_INHERIT; in sve_init_header_from_task()
797 header->vl = task_get_vl(target, type); in sve_init_header_from_task()
798 vq = sve_vq_from_vl(header->vl); in sve_init_header_from_task()
800 header->max_vl = vec_max_vl(type); in sve_init_header_from_task()
802 header->size = SVE_PT_SIZE(vq, header->flags); in sve_init_header_from_task()
804 header->size = sizeof(header); in sve_init_header_from_task()
805 header->max_size = SVE_PT_SIZE(sve_vq_from_vl(header->max_vl), in sve_init_header_from_task()
809 static unsigned int sve_size_from_header(struct user_sve_header const *header) in sve_size_from_header() argument
811 return ALIGN(header->size, SVE_VQ_BYTES); in sve_size_from_header()
819 struct user_sve_header header; in sve_get_common() local
827 sve_init_header_from_task(&header, target, type); in sve_get_common()
828 vq = sve_vq_from_vl(header.vl); in sve_get_common()
830 membuf_write(&to, &header, sizeof(header)); in sve_get_common()
832 BUILD_BUG_ON(SVE_PT_FPSIMD_OFFSET != sizeof(header)); in sve_get_common()
833 BUILD_BUG_ON(SVE_PT_SVE_OFFSET != sizeof(header)); in sve_get_common()
839 if (header.size == sizeof(header)) in sve_get_common()
842 switch ((header.flags & SVE_PT_REGS_MASK)) { in sve_get_common()
865 end = sve_size_from_header(&header); in sve_get_common()
890 struct user_sve_header header; in sve_set_common() local
898 if (count < sizeof(header)) in sve_set_common()
900 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &header, in sve_set_common()
901 0, sizeof(header)); in sve_set_common()
910 fpsimd = (header.flags & SVE_PT_REGS_MASK) == SVE_PT_REGS_FPSIMD; in sve_set_common()
918 ret = vec_set_vector_length(target, type, header.vl, in sve_set_common()
919 ((unsigned long)header.flags & ~SVE_PT_REGS_MASK) << 16); in sve_set_common()
967 BUILD_BUG_ON(SVE_PT_FPSIMD_OFFSET != sizeof(header)); in sve_set_common()
985 if (count && vq != sve_vq_from_vl(header.vl)) in sve_set_common()
988 BUILD_BUG_ON(SVE_PT_SVE_OFFSET != sizeof(header)); in sve_set_common()
1056 struct user_za_header header; in za_get() local
1064 memset(&header, 0, sizeof(header)); in za_get()
1067 header.flags |= ZA_PT_VL_INHERIT; in za_get()
1069 header.vl = task_get_sme_vl(target); in za_get()
1070 vq = sve_vq_from_vl(header.vl); in za_get()
1071 header.max_vl = sme_max_vl(); in za_get()
1072 header.max_size = ZA_PT_SIZE(vq); in za_get()
1076 header.size = ZA_PT_SIZE(vq); in za_get()
1078 header.size = ZA_PT_ZA_OFFSET; in za_get()
1080 membuf_write(&to, &header, sizeof(header)); in za_get()
1082 BUILD_BUG_ON(ZA_PT_ZA_OFFSET != sizeof(header)); in za_get()
1097 end = ALIGN(header.size, SVE_VQ_BYTES); in za_get()
1107 struct user_za_header header; in za_set() local
1115 if (count < sizeof(header)) in za_set()
1117 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &header, in za_set()
1118 0, sizeof(header)); in za_set()
1127 ret = vec_set_vector_length(target, ARM64_VEC_SME, header.vl, in za_set()
1128 ((unsigned long)header.flags) << 16); in za_set()
1167 if (vq != sve_vq_from_vl(header.vl)) { in za_set()
1172 BUILD_BUG_ON(ZA_PT_ZA_OFFSET != sizeof(header)); in za_set()