forked from Minki/linux
779df22487
Add a small vdso for 31 bit compat application that provides trampolines for calls to sigreturn,rt_sigreturn,syscall_restart. This is requird for moving these syscalls away from the signal frame to the vdso. Note that this patch effectively disables CONFIG_COMPAT when using clang to compile the kernel. clang doesn't support 31 bit mode. We want to redirect sigreturn and restart_syscall to the vdso. However, the kernel cannot parse the ELF vdso file, so we need to generate header files which contain the offsets of the syscall instructions in the vdso page. Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Reviewed-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
35 lines
746 B
C
35 lines
746 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef __S390_VDSO_H__
|
|
#define __S390_VDSO_H__
|
|
|
|
#include <vdso/datapage.h>
|
|
|
|
#ifndef __ASSEMBLY__
|
|
|
|
#include <generated/vdso64-offsets.h>
|
|
#ifdef CONFIG_COMPAT
|
|
#include <generated/vdso32-offsets.h>
|
|
#endif
|
|
|
|
#define VDSO64_SYMBOL(tsk, name) ((tsk)->mm->context.vdso_base + (vdso64_offset_##name))
|
|
#ifdef CONFIG_COMPAT
|
|
#define VDSO32_SYMBOL(tsk, name) ((tsk)->mm->context.vdso_base + (vdso32_offset_##name))
|
|
#else
|
|
#define VDSO32_SYMBOL(tsk, name) (-1UL)
|
|
#endif
|
|
|
|
extern struct vdso_data *vdso_data;
|
|
|
|
int vdso_getcpu_init(void);
|
|
|
|
#endif /* __ASSEMBLY__ */
|
|
|
|
/* Default link address for the vDSO */
|
|
#define VDSO_LBASE 0
|
|
|
|
#define __VVAR_PAGES 2
|
|
|
|
#define VDSO_VERSION_STRING LINUX_2.6.29
|
|
|
|
#endif /* __S390_VDSO_H__ */
|