u32             __unused5;
 };
 
-struct compat_flock {
-       short           l_type;
-       short           l_whence;
-       compat_off_t    l_start;
-       compat_off_t    l_len;
-       compat_pid_t    l_pid;
-};
-
 /*
- * IA32 uses 4 byte alignment for 64 bit quantities,
- * so we need to pack this structure.
+ * IA32 uses 4 byte alignment for 64 bit quantities, so we need to pack the
+ * compat flock64 structure.
  */
-struct compat_flock64 {
-       short           l_type;
-       short           l_whence;
-       compat_loff_t   l_start;
-       compat_loff_t   l_len;
-       compat_pid_t    l_pid;
-} __attribute__((packed));
+#define __ARCH_NEED_COMPAT_FLOCK64_PACKED
 
 struct compat_statfs {
        int             f_type;
 
        compat_ulong_t  rlim_max;
 };
 
+#ifdef __ARCH_NEED_COMPAT_FLOCK64_PACKED
+#define __ARCH_COMPAT_FLOCK64_PACK     __attribute__((packed))
+#else
+#define __ARCH_COMPAT_FLOCK64_PACK
+#endif
+
+struct compat_flock {
+       short                   l_type;
+       short                   l_whence;
+       compat_off_t            l_start;
+       compat_off_t            l_len;
+#ifdef __ARCH_COMPAT_FLOCK_EXTRA_SYSID
+       __ARCH_COMPAT_FLOCK_EXTRA_SYSID
+#endif
+       compat_pid_t            l_pid;
+#ifdef __ARCH_COMPAT_FLOCK_PAD
+       __ARCH_COMPAT_FLOCK_PAD
+#endif
+};
+
+struct compat_flock64 {
+       short           l_type;
+       short           l_whence;
+       compat_loff_t   l_start;
+       compat_loff_t   l_len;
+       compat_pid_t    l_pid;
+#ifdef __ARCH_COMPAT_FLOCK64_PAD
+       __ARCH_COMPAT_FLOCK64_PAD
+#endif
+} __ARCH_COMPAT_FLOCK64_PACK;
+
 struct compat_rusage {
        struct old_timeval32 ru_utime;
        struct old_timeval32 ru_stime;