linux/arch/arm64/include/asm/compat.h
<<
>>
Prefs
   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_RLIM_INFINITY            0xffffffff
  87
  88#define COMPAT_OFF_T_MAX        0x7fffffff
  89
  90#define compat_user_stack_pointer() (user_stack_pointer(task_pt_regs(current)))
  91#define COMPAT_MINSIGSTKSZ      2048
  92
  93static inline int is_compat_task(void)
  94{
  95        return test_thread_flag(TIF_32BIT);
  96}
  97
  98static inline int is_compat_thread(struct thread_info *thread)
  99{
 100        return test_ti_thread_flag(thread, TIF_32BIT);
 101}
 102
 103#else /* !CONFIG_COMPAT */
 104
 105static inline int is_compat_thread(struct thread_info *thread)
 106{
 107        return 0;
 108}
 109
 110#endif /* CONFIG_COMPAT */
 111#endif /* __ASM_COMPAT_H */
 112