s390/vx: add 64 and 128 bit members to __vector128 struct
authorHeiko Carstens <hca@linux.ibm.com>
Thu, 2 Feb 2023 14:47:38 +0000 (15:47 +0100)
committerHeiko Carstens <hca@linux.ibm.com>
Thu, 9 Feb 2023 19:11:23 +0000 (20:11 +0100)
Add 64 and 128 bit members to __vector128 struct in order to allow reading
of the complete value, or the higher or lower part of vector register
contents instead of having to use casts.

Add an explicit __aligned(4) statement to avoid that the alignment of the
structure changes from 4 to 8. This should make sure that no breakage
happens because of this change.

Reviewed-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
arch/s390/include/uapi/asm/types.h

index da034c6..5713959 100644 (file)
@@ -19,8 +19,15 @@ typedef unsigned long addr_t;
 typedef __signed__ long saddr_t;
 
 typedef struct {
-       __u32 u[4];
-} __vector128;
+       union {
+               struct {
+                       __u64 high;
+                       __u64 low;
+               };
+               __uint128_t v;
+               __u32 u[4];
+       };
+} __attribute__((packed, aligned(4))) __vector128;
 
 #endif /* __ASSEMBLY__ */