mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-09 06:33:34 +00:00
UAPI headers for arm64 together with some clean-up to make it possible:
- Do not export the COMPAT_* definitions to user - Simplify the compat unistd32.h definitions and remove the __SYSCALL_COMPAT guard - Disintegrate the arch/arm64/include/asm/* headers -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iQIcBAABAgAGBQJQdvO5AAoJEGvWsS0AyF7x3nUQAIZMqDkKMQ57EbTi5F+JScN4 HSYSto3+L4xEkqcukRAmSVQgJE4NoTBFXN+saKf/Sf2By2hiv6YmnC1ILA/ZMXu5 ez0Mzn6OnDy0eH6h7d7/wEMlxBWCn+s53ATRZIW+LMVkEjKEClQlOPiLwjS72EAi 6+Cfxg8fNfvi4NQPX8js6ILdh4T5OM43pBxzfRHZV1VVFHBiCDTKN8RYVYMlKM+N UzIeK65v5F8IWsscCsY0FEPitkklDfktXaRKptSkeX9ATzHjT7Tj15ArmcaXflqB SMOe2B7p8qh6sJq/4Ny+spKR/bcTEl6+tPgHZ8aHa6BRgsT5ZL4vTv7hgZk011UA TpR7pI7r29n/tH0dHr0dEohCbnU7445kQRgX2A4en3LAnXQB1+ImMQjeXpQuvTlP H4/z5+ZyU9nbXz4/gqWaagecurRe+X8g/Je4d3S75KMaTXNCnBL8Buwsij8HtckS Bf219OxLO9V/pPGFdTWCw3k38jLYQLbj2j7iiA+GXNgK1rpL1QXyBHpyXGvSkeK7 TJg6CHuUYlwlnujkN308hr3yY2oZLVeDHvjC7zegUJzRKHNTXd3BEruWC+nPtRPk zykMQwBMPwpILrnZZ7PantBMoOq7nNWNKfOVf3SGdJwqguXF0FjpvSHGLe3EIzo1 NqBrHo1ETRgw+OqTuvQS =1+LF -----END PGP SIGNATURE----- Merge tag 'arm64-uapi' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64 Pull arm64 uapi disintegration from Catalin Marinas: "UAPI headers for arm64 together with some clean-up to make it possible: - Do not export the COMPAT_* definitions to user - Simplify the compat unistd32.h definitions and remove the __SYSCALL_COMPAT guard - Disintegrate the arch/arm64/include/asm/* headers" * tag 'arm64-uapi' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64: UAPI: (Scripted) Disintegrate arch/arm64/include/asm arm64: Do not export the compat-specific definitions to the user arm64: Do not include asm/unistd32.h in asm/unistd.h arm64: Remove unused definitions from asm/unistd32.h
This commit is contained in:
commit
b4fe19f78e
@ -1,6 +1,4 @@
|
|||||||
include include/asm-generic/Kbuild.asm
|
|
||||||
|
|
||||||
header-y += hwcap.h
|
|
||||||
|
|
||||||
generic-y += bug.h
|
generic-y += bug.h
|
||||||
generic-y += bugs.h
|
generic-y += bugs.h
|
||||||
|
@ -16,11 +16,7 @@
|
|||||||
#ifndef __ASM_HWCAP_H
|
#ifndef __ASM_HWCAP_H
|
||||||
#define __ASM_HWCAP_H
|
#define __ASM_HWCAP_H
|
||||||
|
|
||||||
/*
|
#include <uapi/asm/hwcap.h>
|
||||||
* HWCAP flags - for elf_hwcap (in kernel) and AT_HWCAP
|
|
||||||
*/
|
|
||||||
#define HWCAP_FP (1 << 0)
|
|
||||||
#define HWCAP_ASIMD (1 << 1)
|
|
||||||
|
|
||||||
#define COMPAT_HWCAP_HALF (1 << 1)
|
#define COMPAT_HWCAP_HALF (1 << 1)
|
||||||
#define COMPAT_HWCAP_THUMB (1 << 2)
|
#define COMPAT_HWCAP_THUMB (1 << 2)
|
||||||
@ -35,7 +31,6 @@
|
|||||||
#define COMPAT_HWCAP_IDIVT (1 << 18)
|
#define COMPAT_HWCAP_IDIVT (1 << 18)
|
||||||
#define COMPAT_HWCAP_IDIV (COMPAT_HWCAP_IDIVA|COMPAT_HWCAP_IDIVT)
|
#define COMPAT_HWCAP_IDIV (COMPAT_HWCAP_IDIVA|COMPAT_HWCAP_IDIVT)
|
||||||
|
|
||||||
#ifdef __KERNEL__
|
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
/*
|
/*
|
||||||
* This yields a mask that user programs can use to figure out what
|
* This yields a mask that user programs can use to figure out what
|
||||||
@ -51,5 +46,3 @@
|
|||||||
extern unsigned int elf_hwcap;
|
extern unsigned int elf_hwcap;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
|
||||||
|
@ -19,9 +19,7 @@
|
|||||||
#ifndef __ASM_PTRACE_H
|
#ifndef __ASM_PTRACE_H
|
||||||
#define __ASM_PTRACE_H
|
#define __ASM_PTRACE_H
|
||||||
|
|
||||||
#include <linux/types.h>
|
#include <uapi/asm/ptrace.h>
|
||||||
|
|
||||||
#include <asm/hwcap.h>
|
|
||||||
|
|
||||||
/* AArch32-specific ptrace requests */
|
/* AArch32-specific ptrace requests */
|
||||||
#define COMPAT_PTRACE_GETREGS 12
|
#define COMPAT_PTRACE_GETREGS 12
|
||||||
@ -32,80 +30,18 @@
|
|||||||
#define COMPAT_PTRACE_SETVFPREGS 28
|
#define COMPAT_PTRACE_SETVFPREGS 28
|
||||||
#define COMPAT_PTRACE_GETHBPREGS 29
|
#define COMPAT_PTRACE_GETHBPREGS 29
|
||||||
#define COMPAT_PTRACE_SETHBPREGS 30
|
#define COMPAT_PTRACE_SETHBPREGS 30
|
||||||
|
|
||||||
/*
|
|
||||||
* PSR bits
|
|
||||||
*/
|
|
||||||
#define PSR_MODE_EL0t 0x00000000
|
|
||||||
#define PSR_MODE_EL1t 0x00000004
|
|
||||||
#define PSR_MODE_EL1h 0x00000005
|
|
||||||
#define PSR_MODE_EL2t 0x00000008
|
|
||||||
#define PSR_MODE_EL2h 0x00000009
|
|
||||||
#define PSR_MODE_EL3t 0x0000000c
|
|
||||||
#define PSR_MODE_EL3h 0x0000000d
|
|
||||||
#define PSR_MODE_MASK 0x0000000f
|
|
||||||
|
|
||||||
/* AArch32 CPSR bits */
|
|
||||||
#define PSR_MODE32_BIT 0x00000010
|
|
||||||
#define COMPAT_PSR_MODE_USR 0x00000010
|
#define COMPAT_PSR_MODE_USR 0x00000010
|
||||||
#define COMPAT_PSR_T_BIT 0x00000020
|
#define COMPAT_PSR_T_BIT 0x00000020
|
||||||
#define COMPAT_PSR_IT_MASK 0x0600fc00 /* If-Then execution state mask */
|
#define COMPAT_PSR_IT_MASK 0x0600fc00 /* If-Then execution state mask */
|
||||||
|
|
||||||
/* AArch64 SPSR bits */
|
|
||||||
#define PSR_F_BIT 0x00000040
|
|
||||||
#define PSR_I_BIT 0x00000080
|
|
||||||
#define PSR_A_BIT 0x00000100
|
|
||||||
#define PSR_D_BIT 0x00000200
|
|
||||||
#define PSR_Q_BIT 0x08000000
|
|
||||||
#define PSR_V_BIT 0x10000000
|
|
||||||
#define PSR_C_BIT 0x20000000
|
|
||||||
#define PSR_Z_BIT 0x40000000
|
|
||||||
#define PSR_N_BIT 0x80000000
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Groups of PSR bits
|
|
||||||
*/
|
|
||||||
#define PSR_f 0xff000000 /* Flags */
|
|
||||||
#define PSR_s 0x00ff0000 /* Status */
|
|
||||||
#define PSR_x 0x0000ff00 /* Extension */
|
|
||||||
#define PSR_c 0x000000ff /* Control */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* These are 'magic' values for PTRACE_PEEKUSR that return info about where a
|
* These are 'magic' values for PTRACE_PEEKUSR that return info about where a
|
||||||
* process is located in memory.
|
* process is located in memory.
|
||||||
*/
|
*/
|
||||||
#define PT_TEXT_ADDR 0x10000
|
#define COMPAT_PT_TEXT_ADDR 0x10000
|
||||||
#define PT_DATA_ADDR 0x10004
|
#define COMPAT_PT_DATA_ADDR 0x10004
|
||||||
#define PT_TEXT_END_ADDR 0x10008
|
#define COMPAT_PT_TEXT_END_ADDR 0x10008
|
||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
|
|
||||||
/*
|
|
||||||
* User structures for general purpose, floating point and debug registers.
|
|
||||||
*/
|
|
||||||
struct user_pt_regs {
|
|
||||||
__u64 regs[31];
|
|
||||||
__u64 sp;
|
|
||||||
__u64 pc;
|
|
||||||
__u64 pstate;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct user_fpsimd_state {
|
|
||||||
__uint128_t vregs[32];
|
|
||||||
__u32 fpsr;
|
|
||||||
__u32 fpcr;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct user_hwdebug_state {
|
|
||||||
__u32 dbg_info;
|
|
||||||
struct {
|
|
||||||
__u64 addr;
|
|
||||||
__u32 ctrl;
|
|
||||||
} dbg_regs[16];
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifdef __KERNEL__
|
|
||||||
|
|
||||||
/* sizeof(struct user) for AArch32 */
|
/* sizeof(struct user) for AArch32 */
|
||||||
#define COMPAT_USER_SZ 296
|
#define COMPAT_USER_SZ 296
|
||||||
/* AArch32 uses x13 as the stack pointer... */
|
/* AArch32 uses x13 as the stack pointer... */
|
||||||
@ -200,8 +136,5 @@ extern unsigned long profile_pc(struct pt_regs *regs);
|
|||||||
|
|
||||||
extern int aarch32_break_trap(struct pt_regs *regs);
|
extern int aarch32_break_trap(struct pt_regs *regs);
|
||||||
|
|
||||||
#endif /* __KERNEL__ */
|
|
||||||
|
|
||||||
#endif /* __ASSEMBLY__ */
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -16,44 +16,8 @@
|
|||||||
#ifndef __ASM_SIGCONTEXT_H
|
#ifndef __ASM_SIGCONTEXT_H
|
||||||
#define __ASM_SIGCONTEXT_H
|
#define __ASM_SIGCONTEXT_H
|
||||||
|
|
||||||
#include <linux/types.h>
|
#include <uapi/asm/sigcontext.h>
|
||||||
|
|
||||||
/*
|
|
||||||
* Signal context structure - contains all info to do with the state
|
|
||||||
* before the signal handler was invoked.
|
|
||||||
*/
|
|
||||||
struct sigcontext {
|
|
||||||
__u64 fault_address;
|
|
||||||
/* AArch64 registers */
|
|
||||||
__u64 regs[31];
|
|
||||||
__u64 sp;
|
|
||||||
__u64 pc;
|
|
||||||
__u64 pstate;
|
|
||||||
/* 4K reserved for FP/SIMD state and future expansion */
|
|
||||||
__u8 __reserved[4096] __attribute__((__aligned__(16)));
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Header to be used at the beginning of structures extending the user
|
|
||||||
* context. Such structures must be placed after the rt_sigframe on the stack
|
|
||||||
* and be 16-byte aligned. The last structure must be a dummy one with the
|
|
||||||
* magic and size set to 0.
|
|
||||||
*/
|
|
||||||
struct _aarch64_ctx {
|
|
||||||
__u32 magic;
|
|
||||||
__u32 size;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define FPSIMD_MAGIC 0x46508001
|
|
||||||
|
|
||||||
struct fpsimd_context {
|
|
||||||
struct _aarch64_ctx head;
|
|
||||||
__u32 fpsr;
|
|
||||||
__u32 fpcr;
|
|
||||||
__uint128_t vregs[32];
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifdef __KERNEL__
|
|
||||||
/*
|
/*
|
||||||
* Auxiliary context saved in the sigcontext.__reserved array. Not exported to
|
* Auxiliary context saved in the sigcontext.__reserved array. Not exported to
|
||||||
* user space as it will change with the addition of new context. User space
|
* user space as it will change with the addition of new context. User space
|
||||||
@ -65,5 +29,3 @@ struct aux_context {
|
|||||||
struct _aarch64_ctx end;
|
struct _aarch64_ctx end;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
|
||||||
|
@ -16,9 +16,8 @@
|
|||||||
#ifndef __ASM_STAT_H
|
#ifndef __ASM_STAT_H
|
||||||
#define __ASM_STAT_H
|
#define __ASM_STAT_H
|
||||||
|
|
||||||
#include <asm-generic/stat.h>
|
#include <uapi/asm/stat.h>
|
||||||
|
|
||||||
#ifdef __KERNEL__
|
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT
|
||||||
|
|
||||||
#include <asm/compat.h>
|
#include <asm/compat.h>
|
||||||
@ -60,5 +59,3 @@ struct stat64 {
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
|
||||||
|
@ -13,13 +13,17 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __SYSCALL_COMPAT
|
|
||||||
#include <asm-generic/unistd.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __KERNEL__
|
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT
|
||||||
#include <asm/unistd32.h>
|
#define __ARCH_WANT_COMPAT_IPC_PARSE_VERSION
|
||||||
#endif
|
#define __ARCH_WANT_COMPAT_STAT64
|
||||||
|
#define __ARCH_WANT_SYS_GETHOSTNAME
|
||||||
|
#define __ARCH_WANT_SYS_PAUSE
|
||||||
|
#define __ARCH_WANT_SYS_GETPGRP
|
||||||
|
#define __ARCH_WANT_SYS_LLSEEK
|
||||||
|
#define __ARCH_WANT_SYS_NICE
|
||||||
|
#define __ARCH_WANT_SYS_SIGPENDING
|
||||||
|
#define __ARCH_WANT_SYS_SIGPROCMASK
|
||||||
|
#define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND
|
||||||
|
#define __ARCH_WANT_COMPAT_SYS_SENDFILE
|
||||||
#endif
|
#endif
|
||||||
|
#include <uapi/asm/unistd.h>
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,17 @@
|
|||||||
# UAPI Header export list
|
# UAPI Header export list
|
||||||
include include/uapi/asm-generic/Kbuild.asm
|
include include/uapi/asm-generic/Kbuild.asm
|
||||||
|
|
||||||
|
header-y += auxvec.h
|
||||||
|
header-y += bitsperlong.h
|
||||||
|
header-y += byteorder.h
|
||||||
|
header-y += fcntl.h
|
||||||
|
header-y += hwcap.h
|
||||||
|
header-y += param.h
|
||||||
|
header-y += ptrace.h
|
||||||
|
header-y += setup.h
|
||||||
|
header-y += sigcontext.h
|
||||||
|
header-y += siginfo.h
|
||||||
|
header-y += signal.h
|
||||||
|
header-y += stat.h
|
||||||
|
header-y += statfs.h
|
||||||
|
header-y += unistd.h
|
||||||
|
26
arch/arm64/include/uapi/asm/hwcap.h
Normal file
26
arch/arm64/include/uapi/asm/hwcap.h
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2012 ARM Ltd.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#ifndef _UAPI__ASM_HWCAP_H
|
||||||
|
#define _UAPI__ASM_HWCAP_H
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HWCAP flags - for elf_hwcap (in kernel) and AT_HWCAP
|
||||||
|
*/
|
||||||
|
#define HWCAP_FP (1 << 0)
|
||||||
|
#define HWCAP_ASIMD (1 << 1)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* _UAPI__ASM_HWCAP_H */
|
91
arch/arm64/include/uapi/asm/ptrace.h
Normal file
91
arch/arm64/include/uapi/asm/ptrace.h
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
/*
|
||||||
|
* Based on arch/arm/include/asm/ptrace.h
|
||||||
|
*
|
||||||
|
* Copyright (C) 1996-2003 Russell King
|
||||||
|
* Copyright (C) 2012 ARM Ltd.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#ifndef _UAPI__ASM_PTRACE_H
|
||||||
|
#define _UAPI__ASM_PTRACE_H
|
||||||
|
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
#include <asm/hwcap.h>
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PSR bits
|
||||||
|
*/
|
||||||
|
#define PSR_MODE_EL0t 0x00000000
|
||||||
|
#define PSR_MODE_EL1t 0x00000004
|
||||||
|
#define PSR_MODE_EL1h 0x00000005
|
||||||
|
#define PSR_MODE_EL2t 0x00000008
|
||||||
|
#define PSR_MODE_EL2h 0x00000009
|
||||||
|
#define PSR_MODE_EL3t 0x0000000c
|
||||||
|
#define PSR_MODE_EL3h 0x0000000d
|
||||||
|
#define PSR_MODE_MASK 0x0000000f
|
||||||
|
|
||||||
|
/* AArch32 CPSR bits */
|
||||||
|
#define PSR_MODE32_BIT 0x00000010
|
||||||
|
|
||||||
|
/* AArch64 SPSR bits */
|
||||||
|
#define PSR_F_BIT 0x00000040
|
||||||
|
#define PSR_I_BIT 0x00000080
|
||||||
|
#define PSR_A_BIT 0x00000100
|
||||||
|
#define PSR_D_BIT 0x00000200
|
||||||
|
#define PSR_Q_BIT 0x08000000
|
||||||
|
#define PSR_V_BIT 0x10000000
|
||||||
|
#define PSR_C_BIT 0x20000000
|
||||||
|
#define PSR_Z_BIT 0x40000000
|
||||||
|
#define PSR_N_BIT 0x80000000
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Groups of PSR bits
|
||||||
|
*/
|
||||||
|
#define PSR_f 0xff000000 /* Flags */
|
||||||
|
#define PSR_s 0x00ff0000 /* Status */
|
||||||
|
#define PSR_x 0x0000ff00 /* Extension */
|
||||||
|
#define PSR_c 0x000000ff /* Control */
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __ASSEMBLY__
|
||||||
|
|
||||||
|
/*
|
||||||
|
* User structures for general purpose, floating point and debug registers.
|
||||||
|
*/
|
||||||
|
struct user_pt_regs {
|
||||||
|
__u64 regs[31];
|
||||||
|
__u64 sp;
|
||||||
|
__u64 pc;
|
||||||
|
__u64 pstate;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct user_fpsimd_state {
|
||||||
|
__uint128_t vregs[32];
|
||||||
|
__u32 fpsr;
|
||||||
|
__u32 fpcr;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct user_hwdebug_state {
|
||||||
|
__u32 dbg_info;
|
||||||
|
struct {
|
||||||
|
__u64 addr;
|
||||||
|
__u32 ctrl;
|
||||||
|
} dbg_regs[16];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|
||||||
|
#endif /* _UAPI__ASM_PTRACE_H */
|
57
arch/arm64/include/uapi/asm/sigcontext.h
Normal file
57
arch/arm64/include/uapi/asm/sigcontext.h
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2012 ARM Ltd.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#ifndef _UAPI__ASM_SIGCONTEXT_H
|
||||||
|
#define _UAPI__ASM_SIGCONTEXT_H
|
||||||
|
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Signal context structure - contains all info to do with the state
|
||||||
|
* before the signal handler was invoked.
|
||||||
|
*/
|
||||||
|
struct sigcontext {
|
||||||
|
__u64 fault_address;
|
||||||
|
/* AArch64 registers */
|
||||||
|
__u64 regs[31];
|
||||||
|
__u64 sp;
|
||||||
|
__u64 pc;
|
||||||
|
__u64 pstate;
|
||||||
|
/* 4K reserved for FP/SIMD state and future expansion */
|
||||||
|
__u8 __reserved[4096] __attribute__((__aligned__(16)));
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Header to be used at the beginning of structures extending the user
|
||||||
|
* context. Such structures must be placed after the rt_sigframe on the stack
|
||||||
|
* and be 16-byte aligned. The last structure must be a dummy one with the
|
||||||
|
* magic and size set to 0.
|
||||||
|
*/
|
||||||
|
struct _aarch64_ctx {
|
||||||
|
__u32 magic;
|
||||||
|
__u32 size;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define FPSIMD_MAGIC 0x46508001
|
||||||
|
|
||||||
|
struct fpsimd_context {
|
||||||
|
struct _aarch64_ctx head;
|
||||||
|
__u32 fpsr;
|
||||||
|
__u32 fpcr;
|
||||||
|
__uint128_t vregs[32];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* _UAPI__ASM_SIGCONTEXT_H */
|
16
arch/arm64/include/uapi/asm/stat.h
Normal file
16
arch/arm64/include/uapi/asm/stat.h
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2012 ARM Ltd.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include <asm-generic/stat.h>
|
16
arch/arm64/include/uapi/asm/unistd.h
Normal file
16
arch/arm64/include/uapi/asm/unistd.h
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2012 ARM Ltd.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include <asm-generic/unistd.h>
|
@ -26,6 +26,7 @@
|
|||||||
#include <asm/errno.h>
|
#include <asm/errno.h>
|
||||||
#include <asm/thread_info.h>
|
#include <asm/thread_info.h>
|
||||||
#include <asm/unistd.h>
|
#include <asm/unistd.h>
|
||||||
|
#include <asm/unistd32.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Bad Abort numbers
|
* Bad Abort numbers
|
||||||
|
@ -823,11 +823,11 @@ static int compat_ptrace_read_user(struct task_struct *tsk, compat_ulong_t off,
|
|||||||
if (off & 3)
|
if (off & 3)
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
|
||||||
if (off == PT_TEXT_ADDR)
|
if (off == COMPAT_PT_TEXT_ADDR)
|
||||||
tmp = tsk->mm->start_code;
|
tmp = tsk->mm->start_code;
|
||||||
else if (off == PT_DATA_ADDR)
|
else if (off == COMPAT_PT_DATA_ADDR)
|
||||||
tmp = tsk->mm->start_data;
|
tmp = tsk->mm->start_data;
|
||||||
else if (off == PT_TEXT_END_ADDR)
|
else if (off == COMPAT_PT_TEXT_END_ADDR)
|
||||||
tmp = tsk->mm->end_code;
|
tmp = tsk->mm->end_code;
|
||||||
else if (off < sizeof(compat_elf_gregset_t))
|
else if (off < sizeof(compat_elf_gregset_t))
|
||||||
return copy_regset_to_user(tsk, &user_aarch32_view,
|
return copy_regset_to_user(tsk, &user_aarch32_view,
|
||||||
|
@ -18,8 +18,6 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define __SYSCALL_COMPAT
|
|
||||||
|
|
||||||
#include <linux/compat.h>
|
#include <linux/compat.h>
|
||||||
#include <linux/signal.h>
|
#include <linux/signal.h>
|
||||||
#include <linux/syscalls.h>
|
#include <linux/syscalls.h>
|
||||||
@ -28,7 +26,7 @@
|
|||||||
#include <asm/fpsimd.h>
|
#include <asm/fpsimd.h>
|
||||||
#include <asm/signal32.h>
|
#include <asm/signal32.h>
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
#include <asm/unistd.h>
|
#include <asm/unistd32.h>
|
||||||
|
|
||||||
struct compat_sigaction {
|
struct compat_sigaction {
|
||||||
compat_uptr_t sa_handler;
|
compat_uptr_t sa_handler;
|
||||||
@ -126,19 +124,19 @@ struct compat_rt_sigframe {
|
|||||||
* For ARM syscalls, the syscall number has to be loaded into r7.
|
* For ARM syscalls, the syscall number has to be loaded into r7.
|
||||||
* We do not support an OABI userspace.
|
* We do not support an OABI userspace.
|
||||||
*/
|
*/
|
||||||
#define MOV_R7_NR_SIGRETURN (0xe3a07000 | __NR_sigreturn)
|
#define MOV_R7_NR_SIGRETURN (0xe3a07000 | __NR_compat_sigreturn)
|
||||||
#define SVC_SYS_SIGRETURN (0xef000000 | __NR_sigreturn)
|
#define SVC_SYS_SIGRETURN (0xef000000 | __NR_compat_sigreturn)
|
||||||
#define MOV_R7_NR_RT_SIGRETURN (0xe3a07000 | __NR_rt_sigreturn)
|
#define MOV_R7_NR_RT_SIGRETURN (0xe3a07000 | __NR_compat_rt_sigreturn)
|
||||||
#define SVC_SYS_RT_SIGRETURN (0xef000000 | __NR_rt_sigreturn)
|
#define SVC_SYS_RT_SIGRETURN (0xef000000 | __NR_compat_rt_sigreturn)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For Thumb syscalls, we also pass the syscall number via r7. We therefore
|
* For Thumb syscalls, we also pass the syscall number via r7. We therefore
|
||||||
* need two 16-bit instructions.
|
* need two 16-bit instructions.
|
||||||
*/
|
*/
|
||||||
#define SVC_THUMB_SIGRETURN (((0xdf00 | __NR_sigreturn) << 16) | \
|
#define SVC_THUMB_SIGRETURN (((0xdf00 | __NR_compat_sigreturn) << 16) | \
|
||||||
0x2700 | __NR_sigreturn)
|
0x2700 | __NR_compat_sigreturn)
|
||||||
#define SVC_THUMB_RT_SIGRETURN (((0xdf00 | __NR_rt_sigreturn) << 16) | \
|
#define SVC_THUMB_RT_SIGRETURN (((0xdf00 | __NR_compat_rt_sigreturn) << 16) | \
|
||||||
0x2700 | __NR_rt_sigreturn)
|
0x2700 | __NR_compat_rt_sigreturn)
|
||||||
|
|
||||||
const compat_ulong_t aarch32_sigret_code[6] = {
|
const compat_ulong_t aarch32_sigret_code[6] = {
|
||||||
/*
|
/*
|
||||||
@ -819,5 +817,5 @@ asmlinkage int compat_sys_rt_sigqueueinfo(int pid, int sig,
|
|||||||
|
|
||||||
void compat_setup_restart_syscall(struct pt_regs *regs)
|
void compat_setup_restart_syscall(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
regs->regs[7] = __NR_restart_syscall;
|
regs->regs[7] = __NR_compat_restart_syscall;
|
||||||
}
|
}
|
||||||
|
@ -147,136 +147,12 @@ compat_sys_fanotify_mark_wrapper:
|
|||||||
b sys_fanotify_mark
|
b sys_fanotify_mark
|
||||||
ENDPROC(compat_sys_fanotify_mark_wrapper)
|
ENDPROC(compat_sys_fanotify_mark_wrapper)
|
||||||
|
|
||||||
/*
|
|
||||||
* Use the compat system call wrappers.
|
|
||||||
*/
|
|
||||||
#define sys_fork compat_sys_fork_wrapper
|
|
||||||
#define sys_open compat_sys_open
|
|
||||||
#define sys_execve compat_sys_execve_wrapper
|
|
||||||
#define sys_lseek compat_sys_lseek_wrapper
|
|
||||||
#define sys_mount compat_sys_mount
|
|
||||||
#define sys_ptrace compat_sys_ptrace
|
|
||||||
#define sys_times compat_sys_times
|
|
||||||
#define sys_ioctl compat_sys_ioctl
|
|
||||||
#define sys_fcntl compat_sys_fcntl
|
|
||||||
#define sys_ustat compat_sys_ustat
|
|
||||||
#define sys_sigaction compat_sys_sigaction
|
|
||||||
#define sys_sigsuspend compat_sys_sigsuspend
|
|
||||||
#define sys_sigpending compat_sys_sigpending
|
|
||||||
#define sys_setrlimit compat_sys_setrlimit
|
|
||||||
#define sys_getrusage compat_sys_getrusage
|
|
||||||
#define sys_gettimeofday compat_sys_gettimeofday
|
|
||||||
#define sys_settimeofday compat_sys_settimeofday
|
|
||||||
#define sys_statfs compat_sys_statfs
|
|
||||||
#define sys_fstatfs compat_sys_fstatfs
|
|
||||||
#define sys_setitimer compat_sys_setitimer
|
|
||||||
#define sys_getitimer compat_sys_getitimer
|
|
||||||
#define sys_newstat compat_sys_newstat
|
|
||||||
#define sys_newlstat compat_sys_newlstat
|
|
||||||
#define sys_newfstat compat_sys_newfstat
|
|
||||||
#define sys_wait4 compat_sys_wait4
|
|
||||||
#define sys_sysinfo compat_sys_sysinfo
|
|
||||||
#define sys_sigreturn compat_sys_sigreturn_wrapper
|
|
||||||
#define sys_clone compat_sys_clone_wrapper
|
|
||||||
#define sys_adjtimex compat_sys_adjtimex
|
|
||||||
#define sys_sigprocmask compat_sys_sigprocmask
|
|
||||||
#define sys_getdents compat_sys_getdents
|
|
||||||
#define sys_select compat_sys_select
|
|
||||||
#define sys_readv compat_sys_readv
|
|
||||||
#define sys_writev compat_sys_writev
|
|
||||||
#define sys_sysctl compat_sys_sysctl
|
|
||||||
#define sys_sched_rr_get_interval compat_sys_sched_rr_get_interval
|
|
||||||
#define sys_nanosleep compat_sys_nanosleep
|
|
||||||
#define sys_rt_sigreturn compat_sys_rt_sigreturn_wrapper
|
|
||||||
#define sys_rt_sigaction compat_sys_rt_sigaction
|
|
||||||
#define sys_rt_sigprocmask compat_sys_rt_sigprocmask
|
|
||||||
#define sys_rt_sigpending compat_sys_rt_sigpending
|
|
||||||
#define sys_rt_sigtimedwait compat_sys_rt_sigtimedwait
|
|
||||||
#define sys_rt_sigqueueinfo compat_sys_rt_sigqueueinfo
|
|
||||||
#define sys_rt_sigsuspend compat_sys_rt_sigsuspend
|
|
||||||
#define sys_pread64 compat_sys_pread64_wrapper
|
|
||||||
#define sys_pwrite64 compat_sys_pwrite64_wrapper
|
|
||||||
#define sys_sigaltstack compat_sys_sigaltstack_wrapper
|
|
||||||
#define sys_sendfile compat_sys_sendfile
|
|
||||||
#define sys_vfork compat_sys_vfork_wrapper
|
|
||||||
#define sys_getrlimit compat_sys_getrlimit
|
|
||||||
#define sys_mmap2 sys_mmap_pgoff
|
|
||||||
#define sys_truncate64 compat_sys_truncate64_wrapper
|
|
||||||
#define sys_ftruncate64 compat_sys_ftruncate64_wrapper
|
|
||||||
#define sys_getdents64 compat_sys_getdents64
|
|
||||||
#define sys_fcntl64 compat_sys_fcntl64
|
|
||||||
#define sys_readahead compat_sys_readahead_wrapper
|
|
||||||
#define sys_futex compat_sys_futex
|
|
||||||
#define sys_sched_setaffinity compat_sys_sched_setaffinity
|
|
||||||
#define sys_sched_getaffinity compat_sys_sched_getaffinity
|
|
||||||
#define sys_io_setup compat_sys_io_setup
|
|
||||||
#define sys_io_getevents compat_sys_io_getevents
|
|
||||||
#define sys_io_submit compat_sys_io_submit
|
|
||||||
#define sys_lookup_dcookie compat_sys_lookup_dcookie
|
|
||||||
#define sys_timer_create compat_sys_timer_create
|
|
||||||
#define sys_timer_settime compat_sys_timer_settime
|
|
||||||
#define sys_timer_gettime compat_sys_timer_gettime
|
|
||||||
#define sys_clock_settime compat_sys_clock_settime
|
|
||||||
#define sys_clock_gettime compat_sys_clock_gettime
|
|
||||||
#define sys_clock_getres compat_sys_clock_getres
|
|
||||||
#define sys_clock_nanosleep compat_sys_clock_nanosleep
|
|
||||||
#define sys_statfs64 compat_sys_statfs64_wrapper
|
|
||||||
#define sys_fstatfs64 compat_sys_fstatfs64_wrapper
|
|
||||||
#define sys_utimes compat_sys_utimes
|
|
||||||
#define sys_fadvise64_64 compat_sys_fadvise64_64_wrapper
|
|
||||||
#define sys_mq_open compat_sys_mq_open
|
|
||||||
#define sys_mq_timedsend compat_sys_mq_timedsend
|
|
||||||
#define sys_mq_timedreceive compat_sys_mq_timedreceive
|
|
||||||
#define sys_mq_notify compat_sys_mq_notify
|
|
||||||
#define sys_mq_getsetattr compat_sys_mq_getsetattr
|
|
||||||
#define sys_waitid compat_sys_waitid
|
|
||||||
#define sys_recv compat_sys_recv
|
|
||||||
#define sys_recvfrom compat_sys_recvfrom
|
|
||||||
#define sys_setsockopt compat_sys_setsockopt
|
|
||||||
#define sys_getsockopt compat_sys_getsockopt
|
|
||||||
#define sys_sendmsg compat_sys_sendmsg
|
|
||||||
#define sys_recvmsg compat_sys_recvmsg
|
|
||||||
#define sys_semctl compat_sys_semctl
|
|
||||||
#define sys_msgsnd compat_sys_msgsnd
|
|
||||||
#define sys_msgrcv compat_sys_msgrcv
|
|
||||||
#define sys_msgctl compat_sys_msgctl
|
|
||||||
#define sys_shmat compat_sys_shmat
|
|
||||||
#define sys_shmctl compat_sys_shmctl
|
|
||||||
#define sys_keyctl compat_sys_keyctl
|
|
||||||
#define sys_semtimedop compat_sys_semtimedop
|
|
||||||
#define sys_mbind compat_sys_mbind
|
|
||||||
#define sys_get_mempolicy compat_sys_get_mempolicy
|
|
||||||
#define sys_set_mempolicy compat_sys_set_mempolicy
|
|
||||||
#define sys_openat compat_sys_openat
|
|
||||||
#define sys_futimesat compat_sys_futimesat
|
|
||||||
#define sys_pselect6 compat_sys_pselect6
|
|
||||||
#define sys_ppoll compat_sys_ppoll
|
|
||||||
#define sys_set_robust_list compat_sys_set_robust_list
|
|
||||||
#define sys_get_robust_list compat_sys_get_robust_list
|
|
||||||
#define sys_sync_file_range2 compat_sys_sync_file_range2_wrapper
|
|
||||||
#define sys_vmsplice compat_sys_vmsplice
|
|
||||||
#define sys_move_pages compat_sys_move_pages
|
|
||||||
#define sys_epoll_pwait compat_sys_epoll_pwait
|
|
||||||
#define sys_kexec_load compat_sys_kexec_load
|
|
||||||
#define sys_utimensat compat_sys_utimensat
|
|
||||||
#define sys_signalfd compat_sys_signalfd
|
|
||||||
#define sys_fallocate compat_sys_fallocate_wrapper
|
|
||||||
#define sys_timerfd_settime compat_sys_timerfd_settime
|
|
||||||
#define sys_timerfd_gettime compat_sys_timerfd_gettime
|
|
||||||
#define sys_signalfd4 compat_sys_signalfd4
|
|
||||||
#define sys_preadv compat_sys_preadv
|
|
||||||
#define sys_pwritev compat_sys_pwritev
|
|
||||||
#define sys_rt_tgsigqueueinfo compat_sys_rt_tgsigqueueinfo
|
|
||||||
#define sys_recvmmsg compat_sys_recvmmsg
|
|
||||||
#define sys_fanotify_mark compat_sys_fanotify_mark_wrapper
|
|
||||||
|
|
||||||
#undef __SYSCALL
|
#undef __SYSCALL
|
||||||
#define __SYSCALL(x, y) .quad y // x
|
#define __SYSCALL(x, y) .quad y // x
|
||||||
#define __SYSCALL_COMPAT
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The system calls table must be 4KB aligned.
|
* The system calls table must be 4KB aligned.
|
||||||
*/
|
*/
|
||||||
.align 12
|
.align 12
|
||||||
ENTRY(compat_sys_call_table)
|
ENTRY(compat_sys_call_table)
|
||||||
#include <asm/unistd.h>
|
#include <asm/unistd32.h>
|
||||||
|
@ -18,8 +18,6 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define __SYSCALL_COMPAT
|
|
||||||
|
|
||||||
#include <linux/compat.h>
|
#include <linux/compat.h>
|
||||||
#include <linux/personality.h>
|
#include <linux/personality.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
@ -28,7 +26,7 @@
|
|||||||
#include <linux/uaccess.h>
|
#include <linux/uaccess.h>
|
||||||
|
|
||||||
#include <asm/cacheflush.h>
|
#include <asm/cacheflush.h>
|
||||||
#include <asm/unistd.h>
|
#include <asm/unistd32.h>
|
||||||
|
|
||||||
asmlinkage int compat_sys_fork(struct pt_regs *regs)
|
asmlinkage int compat_sys_fork(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user