aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/include/asm-generic/compat.h
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2018-04-18 22:01:26 +0200
committerArnd Bergmann <arnd@arndb.de>2018-08-29 15:42:20 +0200
commitfb3739759474d150a9927b920a80ea2afb4c2a51 (patch)
tree0ff0291d6c5b173f50bd418f08ff10b4eaa2a50e /include/asm-generic/compat.h
parenty2038: Remove stat64 family from default syscall set (diff)
downloadwireguard-linux-fb3739759474d150a9927b920a80ea2afb4c2a51.tar.xz
wireguard-linux-fb3739759474d150a9927b920a80ea2afb4c2a51.zip
asm-generic: Move common compat types to asm-generic/compat.h
While converting compat system call handlers to work on 32-bit architectures, I found a number of types used in those handlers that are identical between all architectures. Let's move all the identical ones into asm-generic/compat.h to avoid having to add even more identical definitions of those types. For unknown reasons, mips defines __compat_gid32_t, __compat_uid32_t and compat_caddr_t as signed, while all others have them unsigned. This seems to be a mistake, but I'm leaving it alone here. The other types all differ by size or alignment on at least on architecture. compat_aio_context_t is currently defined in linux/compat.h but also needed for compat_sys_io_getevents(), so let's move it into the same place. While we still have not decided whether the 32-bit time handling will always use the compat syscalls, or in which form, I think this is a useful cleanup that we can merge regardless. Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'include/asm-generic/compat.h')
-rw-r--r--include/asm-generic/compat.h24
1 files changed, 23 insertions, 1 deletions
diff --git a/include/asm-generic/compat.h b/include/asm-generic/compat.h
index 28819451b6d1..a86f65bffab8 100644
--- a/include/asm-generic/compat.h
+++ b/include/asm-generic/compat.h
@@ -1,3 +1,25 @@
/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ASM_GENERIC_COMPAT_H
+#define __ASM_GENERIC_COMPAT_H
-/* This is an empty stub for 32-bit-only architectures */
+/* These types are common across all compat ABIs */
+typedef u32 compat_size_t;
+typedef s32 compat_ssize_t;
+typedef s32 compat_clock_t;
+typedef s32 compat_pid_t;
+typedef u32 compat_ino_t;
+typedef s32 compat_off_t;
+typedef s64 compat_loff_t;
+typedef s32 compat_daddr_t;
+typedef s32 compat_timer_t;
+typedef s32 compat_key_t;
+typedef s16 compat_short_t;
+typedef s32 compat_int_t;
+typedef s32 compat_long_t;
+typedef u16 compat_ushort_t;
+typedef u32 compat_uint_t;
+typedef u32 compat_ulong_t;
+typedef u32 compat_uptr_t;
+typedef u32 compat_aio_context_t;
+
+#endif