diff options
author | Chris Metcalf <cmetcalf@tilera.com> | 2011-05-09 13:12:30 -0400 |
---|---|---|
committer | Chris Metcalf <cmetcalf@tilera.com> | 2011-05-12 15:51:36 -0400 |
commit | be84cb43833ee40a42e08f5425d20310f16229c7 (patch) | |
tree | 0d5ddbaac88aa99ab5dbd0925ec525d399405fd5 /arch/tile | |
parent | d2e48c1d4184a0baa4bf09920b63661e0b860b8c (diff) |
compat: fixes to allow working with tile arch
The existing <asm-generic/unistd.h> mechanism doesn't really provide
enough to create the 64-bit "compat" ABI properly in a generic way,
since the compat ABI is a mix of things were you can re-use the 64-bit
versions of syscalls and things where you need a compat wrapper.
To provide this in the most direct way possible, I added two new macros
to go along with the existing __SYSCALL and __SC_3264 macros: __SC_COMP
and SC_COMP_3264. These macros take an additional argument, typically a
"compat_sys_xxx" function, which is passed to __SYSCALL if you define
__SYSCALL_COMPAT when including the header, resulting in a pointer to
the compat function being placed in the generated syscall table.
The change also adds some missing definitions to <linux/compat.h> so that
it actually has declarations for all the compat syscalls, since the
"[nr] = ##call" approach requires proper C declarations for all the
functions included in the syscall table.
Finally, compat.c defines compat_sys_sigpending() and
compat_sys_sigprocmask() even if the underlying architecture doesn't
request it, which tries to pull in undefined compat_old_sigset_t defines.
We need to guard those compat syscall definitions with appropriate
__ARCH_WANT_SYS_xxx ifdefs.
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
Diffstat (limited to 'arch/tile')
-rw-r--r-- | arch/tile/kernel/compat.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/tile/kernel/compat.c b/arch/tile/kernel/compat.c index dbc213adf5e1..e35a3975ca3b 100644 --- a/arch/tile/kernel/compat.c +++ b/arch/tile/kernel/compat.c | |||
@@ -135,7 +135,7 @@ long tile_compat_sys_msgrcv(int msqid, | |||
135 | 135 | ||
136 | /* Provide the compat syscall number to call mapping. */ | 136 | /* Provide the compat syscall number to call mapping. */ |
137 | #undef __SYSCALL | 137 | #undef __SYSCALL |
138 | #define __SYSCALL(nr, call) [nr] = (compat_##call), | 138 | #define __SYSCALL(nr, call) [nr] = (call), |
139 | 139 | ||
140 | /* The generic versions of these don't work for Tile. */ | 140 | /* The generic versions of these don't work for Tile. */ |
141 | #define compat_sys_msgrcv tile_compat_sys_msgrcv | 141 | #define compat_sys_msgrcv tile_compat_sys_msgrcv |