Skip to content

Commit

Permalink
Merge tag 'arm64-uapi' of git://git.kernel.org/pub/scm/linux/kernel/g…
Browse files Browse the repository at this point in the history
…it/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
  • Loading branch information
torvalds committed Oct 13, 2012
2 parents ff69497 + 48b3b32 commit b4fe19f
Show file tree
Hide file tree
Showing 27 changed files with 637 additions and 998 deletions.
2 changes: 0 additions & 2 deletions arch/arm64/include/asm/Kbuild
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
include include/asm-generic/Kbuild.asm

header-y += hwcap.h

generic-y += bug.h
generic-y += bugs.h
Expand Down
9 changes: 1 addition & 8 deletions arch/arm64/include/asm/hwcap.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,7 @@
#ifndef __ASM_HWCAP_H
#define __ASM_HWCAP_H

/*
* HWCAP flags - for elf_hwcap (in kernel) and AT_HWCAP
*/
#define HWCAP_FP (1 << 0)
#define HWCAP_ASIMD (1 << 1)
#include <uapi/asm/hwcap.h>

#define COMPAT_HWCAP_HALF (1 << 1)
#define COMPAT_HWCAP_THUMB (1 << 2)
Expand All @@ -35,7 +31,6 @@
#define COMPAT_HWCAP_IDIVT (1 << 18)
#define COMPAT_HWCAP_IDIV (COMPAT_HWCAP_IDIVA|COMPAT_HWCAP_IDIVT)

#ifdef __KERNEL__
#ifndef __ASSEMBLY__
/*
* This yields a mask that user programs can use to figure out what
Expand All @@ -51,5 +46,3 @@
extern unsigned int elf_hwcap;
#endif
#endif

#endif
75 changes: 4 additions & 71 deletions arch/arm64/include/asm/ptrace.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,7 @@
#ifndef __ASM_PTRACE_H
#define __ASM_PTRACE_H

#include <linux/types.h>

#include <asm/hwcap.h>
#include <uapi/asm/ptrace.h>

/* AArch32-specific ptrace requests */
#define COMPAT_PTRACE_GETREGS 12
Expand All @@ -32,80 +30,18 @@
#define COMPAT_PTRACE_SETVFPREGS 28
#define COMPAT_PTRACE_GETHBPREGS 29
#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_T_BIT 0x00000020
#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
* process is located in memory.
*/
#define PT_TEXT_ADDR 0x10000
#define PT_DATA_ADDR 0x10004
#define PT_TEXT_END_ADDR 0x10008

#define COMPAT_PT_TEXT_ADDR 0x10000
#define COMPAT_PT_DATA_ADDR 0x10004
#define COMPAT_PT_TEXT_END_ADDR 0x10008
#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 */
#define COMPAT_USER_SZ 296
/* AArch32 uses x13 as the stack pointer... */
Expand Down Expand Up @@ -200,8 +136,5 @@ extern unsigned long profile_pc(struct pt_regs *regs);

extern int aarch32_break_trap(struct pt_regs *regs);

#endif /* __KERNEL__ */

#endif /* __ASSEMBLY__ */

#endif
40 changes: 1 addition & 39 deletions arch/arm64/include/asm/sigcontext.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,44 +16,8 @@
#ifndef __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
* user space as it will change with the addition of new context. User space
Expand All @@ -65,5 +29,3 @@ struct aux_context {
struct _aarch64_ctx end;
};
#endif

#endif
5 changes: 1 addition & 4 deletions arch/arm64/include/asm/stat.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,8 @@
#ifndef __ASM_STAT_H
#define __ASM_STAT_H

#include <asm-generic/stat.h>
#include <uapi/asm/stat.h>

#ifdef __KERNEL__
#ifdef CONFIG_COMPAT

#include <asm/compat.h>
Expand Down Expand Up @@ -60,5 +59,3 @@ struct stat64 {

#endif
#endif

#endif
20 changes: 12 additions & 8 deletions arch/arm64/include/asm/unistd.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,17 @@
* 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 __SYSCALL_COMPAT
#include <asm-generic/unistd.h>
#endif

#ifdef __KERNEL__
#ifdef CONFIG_COMPAT
#include <asm/unistd32.h>
#endif
#define __ARCH_WANT_COMPAT_IPC_PARSE_VERSION
#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
#include <uapi/asm/unistd.h>
Loading

0 comments on commit b4fe19f

Please sign in to comment.