Copy the big-endian field declarations from qspinlock_types.h,
otherwise some properties won't hold on big-endian systems. For
example, assigning lock->val = 1 should result in lock->locked == 1,
which is not the case there.
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Link: https://lore.kernel.org/r/20250424165525.154403-4-iii@linux.ibm.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
 struct __qspinlock {
        union {
                atomic_t val;
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
                struct {
                        u8 locked;
                        u8 pending;
                        u16 locked_pending;
                        u16 tail;
                };
+#else
+               struct {
+                       u16 tail;
+                       u16 locked_pending;
+               };
+               struct {
+                       u8 reserved[2];
+                       u8 pending;
+                       u8 locked;
+               };
+#endif
        };
 };