mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-29 09:16:33 +00:00
arm64: rework compat syscall macros
The generated asm/unistd_compat_32.h header file now contains macros that can be used directly in the vdso and the signal trampolines, so remove the duplicate definitions. Acked-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
parent
e632bca07c
commit
d2a4a07190
@ -8,13 +8,13 @@
|
||||
#ifndef _ASM_SECCOMP_H
|
||||
#define _ASM_SECCOMP_H
|
||||
|
||||
#include <asm/unistd.h>
|
||||
#include <asm/unistd_compat_32.h>
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
#define __NR_seccomp_read_32 __NR_compat_read
|
||||
#define __NR_seccomp_write_32 __NR_compat_write
|
||||
#define __NR_seccomp_exit_32 __NR_compat_exit
|
||||
#define __NR_seccomp_sigreturn_32 __NR_compat_rt_sigreturn
|
||||
#define __NR_seccomp_read_32 __NR_compat32_read
|
||||
#define __NR_seccomp_write_32 __NR_compat32_write
|
||||
#define __NR_seccomp_exit_32 __NR_compat32_exit
|
||||
#define __NR_seccomp_sigreturn_32 __NR_compat32_rt_sigreturn
|
||||
#endif /* CONFIG_COMPAT */
|
||||
|
||||
#include <asm-generic/seccomp.h>
|
||||
|
@ -16,21 +16,6 @@
|
||||
#define __ARCH_WANT_SYS_FORK
|
||||
#define __ARCH_WANT_SYS_VFORK
|
||||
|
||||
/*
|
||||
* Compat syscall numbers used by the AArch64 kernel.
|
||||
*/
|
||||
#define __NR_compat_restart_syscall 0
|
||||
#define __NR_compat_exit 1
|
||||
#define __NR_compat_read 3
|
||||
#define __NR_compat_write 4
|
||||
#define __NR_compat_gettimeofday 78
|
||||
#define __NR_compat_sigreturn 119
|
||||
#define __NR_compat_rt_sigreturn 173
|
||||
#define __NR_compat_clock_gettime 263
|
||||
#define __NR_compat_clock_getres 264
|
||||
#define __NR_compat_clock_gettime64 403
|
||||
#define __NR_compat_clock_getres_time64 406
|
||||
|
||||
/*
|
||||
* The following SVCs are ARM private.
|
||||
*/
|
||||
|
@ -8,7 +8,7 @@
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
#include <asm/barrier.h>
|
||||
#include <asm/unistd.h>
|
||||
#include <asm/unistd_compat_32.h>
|
||||
#include <asm/errno.h>
|
||||
|
||||
#include <asm/vdso/compat_barrier.h>
|
||||
@ -24,7 +24,7 @@ int gettimeofday_fallback(struct __kernel_old_timeval *_tv,
|
||||
register struct timezone *tz asm("r1") = _tz;
|
||||
register struct __kernel_old_timeval *tv asm("r0") = _tv;
|
||||
register long ret asm ("r0");
|
||||
register long nr asm("r7") = __NR_compat_gettimeofday;
|
||||
register long nr asm("r7") = __NR_compat32_gettimeofday;
|
||||
|
||||
asm volatile(
|
||||
" swi #0\n"
|
||||
@ -41,7 +41,7 @@ long clock_gettime_fallback(clockid_t _clkid, struct __kernel_timespec *_ts)
|
||||
register struct __kernel_timespec *ts asm("r1") = _ts;
|
||||
register clockid_t clkid asm("r0") = _clkid;
|
||||
register long ret asm ("r0");
|
||||
register long nr asm("r7") = __NR_compat_clock_gettime64;
|
||||
register long nr asm("r7") = __NR_compat32_clock_gettime64;
|
||||
|
||||
asm volatile(
|
||||
" swi #0\n"
|
||||
@ -58,7 +58,7 @@ long clock_gettime32_fallback(clockid_t _clkid, struct old_timespec32 *_ts)
|
||||
register struct old_timespec32 *ts asm("r1") = _ts;
|
||||
register clockid_t clkid asm("r0") = _clkid;
|
||||
register long ret asm ("r0");
|
||||
register long nr asm("r7") = __NR_compat_clock_gettime;
|
||||
register long nr asm("r7") = __NR_compat32_clock_gettime;
|
||||
|
||||
asm volatile(
|
||||
" swi #0\n"
|
||||
@ -75,7 +75,7 @@ int clock_getres_fallback(clockid_t _clkid, struct __kernel_timespec *_ts)
|
||||
register struct __kernel_timespec *ts asm("r1") = _ts;
|
||||
register clockid_t clkid asm("r0") = _clkid;
|
||||
register long ret asm ("r0");
|
||||
register long nr asm("r7") = __NR_compat_clock_getres_time64;
|
||||
register long nr asm("r7") = __NR_compat32_clock_getres_time64;
|
||||
|
||||
asm volatile(
|
||||
" swi #0\n"
|
||||
@ -92,7 +92,7 @@ int clock_getres32_fallback(clockid_t _clkid, struct old_timespec32 *_ts)
|
||||
register struct old_timespec32 *ts asm("r1") = _ts;
|
||||
register clockid_t clkid asm("r0") = _clkid;
|
||||
register long ret asm ("r0");
|
||||
register long nr asm("r7") = __NR_compat_clock_getres;
|
||||
register long nr asm("r7") = __NR_compat32_clock_getres;
|
||||
|
||||
asm volatile(
|
||||
" swi #0\n"
|
||||
|
@ -17,7 +17,7 @@
|
||||
#include <asm/signal32.h>
|
||||
#include <asm/traps.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <asm/unistd.h>
|
||||
#include <asm/unistd_compat_32.h>
|
||||
#include <asm/vdso.h>
|
||||
|
||||
struct compat_vfp_sigframe {
|
||||
@ -451,7 +451,7 @@ int compat_setup_frame(int usig, struct ksignal *ksig, sigset_t *set,
|
||||
|
||||
void compat_setup_restart_syscall(struct pt_regs *regs)
|
||||
{
|
||||
regs->regs[7] = __NR_compat_restart_syscall;
|
||||
regs->regs[7] = __NR_compat32_restart_syscall;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -13,7 +13,7 @@
|
||||
* need two 16-bit instructions.
|
||||
*/
|
||||
|
||||
#include <asm/unistd.h>
|
||||
#include <asm/unistd_compat_32.h>
|
||||
|
||||
.section .rodata
|
||||
.globl __aarch32_sigret_code_start
|
||||
@ -22,26 +22,26 @@ __aarch32_sigret_code_start:
|
||||
/*
|
||||
* ARM Code
|
||||
*/
|
||||
.byte __NR_compat_sigreturn, 0x70, 0xa0, 0xe3 // mov r7, #__NR_compat_sigreturn
|
||||
.byte __NR_compat_sigreturn, 0x00, 0x00, 0xef // svc #__NR_compat_sigreturn
|
||||
.byte __NR_compat32_sigreturn, 0x70, 0xa0, 0xe3 // mov r7, #__NR_compat32_sigreturn
|
||||
.byte __NR_compat32_sigreturn, 0x00, 0x00, 0xef // svc #__NR_compat32_sigreturn
|
||||
|
||||
/*
|
||||
* Thumb code
|
||||
*/
|
||||
.byte __NR_compat_sigreturn, 0x27 // svc #__NR_compat_sigreturn
|
||||
.byte __NR_compat_sigreturn, 0xdf // mov r7, #__NR_compat_sigreturn
|
||||
.byte __NR_compat32_sigreturn, 0x27 // svc #__NR_compat32_sigreturn
|
||||
.byte __NR_compat32_sigreturn, 0xdf // mov r7, #__NR_compat32_sigreturn
|
||||
|
||||
/*
|
||||
* ARM code
|
||||
*/
|
||||
.byte __NR_compat_rt_sigreturn, 0x70, 0xa0, 0xe3 // mov r7, #__NR_compat_rt_sigreturn
|
||||
.byte __NR_compat_rt_sigreturn, 0x00, 0x00, 0xef // svc #__NR_compat_rt_sigreturn
|
||||
.byte __NR_compat32_rt_sigreturn, 0x70, 0xa0, 0xe3 // mov r7, #__NR_compat32_rt_sigreturn
|
||||
.byte __NR_compat32_rt_sigreturn, 0x00, 0x00, 0xef // svc #__NR_compat32_rt_sigreturn
|
||||
|
||||
/*
|
||||
* Thumb code
|
||||
*/
|
||||
.byte __NR_compat_rt_sigreturn, 0x27 // svc #__NR_compat_rt_sigreturn
|
||||
.byte __NR_compat_rt_sigreturn, 0xdf // mov r7, #__NR_compat_rt_sigreturn
|
||||
.byte __NR_compat32_rt_sigreturn, 0x27 // svc #__NR_compat32_rt_sigreturn
|
||||
.byte __NR_compat32_rt_sigreturn, 0xdf // mov r7, #__NR_compat32_rt_sigreturn
|
||||
|
||||
.globl __aarch32_sigret_code_end
|
||||
__aarch32_sigret_code_end:
|
||||
|
Loading…
Reference in New Issue
Block a user