File Index
Files and directories
Sign in
FILE

compat.h

File preview with syntax highlighting.

linux-6.19.14/arch/arm64/include/asm/compat.h C
  1/* SPDX-License-Identifier: GPL-2.0-only */
  2/*
  3 * Copyright (C) 2012 ARM Ltd.
  4 */
  5#ifndef __ASM_COMPAT_H
  6#define __ASM_COMPAT_H
  7
  8#define compat_mode_t compat_mode_t
  9typedef u16		compat_mode_t;
 10
 11#define __compat_uid_t	__compat_uid_t
 12typedef u16		__compat_uid_t;
 13typedef u16		__compat_gid_t;
 14
 15#define compat_ipc_pid_t compat_ipc_pid_t
 16typedef u16		compat_ipc_pid_t;
 17
 18#define compat_statfs	compat_statfs
 19
 20#include <asm-generic/compat.h>
 21
 22#ifdef CONFIG_COMPAT
 23
 24/*
 25 * Architecture specific compatibility types
 26 */
 27#include <linux/types.h>
 28#include <linux/sched.h>
 29#include <linux/sched/task_stack.h>
 30
 31#ifdef __AARCH64EB__
 32#define COMPAT_UTS_MACHINE	"armv8b\0\0"
 33#else
 34#define COMPAT_UTS_MACHINE	"armv8l\0\0"
 35#endif
 36
 37typedef u16		__compat_uid16_t;
 38typedef u16		__compat_gid16_t;
 39typedef s32		compat_nlink_t;
 40
 41struct compat_stat {
 42#ifdef __AARCH64EB__
 43	short		st_dev;
 44	short		__pad1;
 45#else
 46	compat_dev_t	st_dev;
 47#endif
 48	compat_ino_t	st_ino;
 49	compat_mode_t	st_mode;
 50	compat_ushort_t	st_nlink;
 51	__compat_uid16_t	st_uid;
 52	__compat_gid16_t	st_gid;
 53#ifdef __AARCH64EB__
 54	short		st_rdev;
 55	short		__pad2;
 56#else
 57	compat_dev_t	st_rdev;
 58#endif
 59	compat_off_t	st_size;
 60	compat_off_t	st_blksize;
 61	compat_off_t	st_blocks;
 62	old_time32_t	st_atime;
 63	compat_ulong_t	st_atime_nsec;
 64	old_time32_t	st_mtime;
 65	compat_ulong_t	st_mtime_nsec;
 66	old_time32_t	st_ctime;
 67	compat_ulong_t	st_ctime_nsec;
 68	compat_ulong_t	__unused4[2];
 69};
 70
 71struct compat_statfs {
 72	int		f_type;
 73	int		f_bsize;
 74	int		f_blocks;
 75	int		f_bfree;
 76	int		f_bavail;
 77	int		f_files;
 78	int		f_ffree;
 79	compat_fsid_t	f_fsid;
 80	int		f_namelen;	/* SunOS ignores this field. */
 81	int		f_frsize;
 82	int		f_flags;
 83	int		f_spare[4];
 84};
 85
 86#define compat_user_stack_pointer() (user_stack_pointer(task_pt_regs(current)))
 87#define COMPAT_MINSIGSTKSZ	2048
 88
 89static inline int is_compat_task(void)
 90{
 91	return test_thread_flag(TIF_32BIT);
 92}
 93
 94static inline int is_compat_thread(struct thread_info *thread)
 95{
 96	return test_ti_thread_flag(thread, TIF_32BIT);
 97}
 98
 99long compat_arm_syscall(struct pt_regs *regs, int scno);
100
101#else /* !CONFIG_COMPAT */
102
103static inline int is_compat_thread(struct thread_info *thread)
104{
105	return 0;
106}
107
108#endif /* CONFIG_COMPAT */
109#endif /* __ASM_COMPAT_H */
~/ Read-only file preview.