linux/arch/powerpc/include/asm/compat.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef _ASM_POWERPC_COMPAT_H
   3#define _ASM_POWERPC_COMPAT_H
   4#ifdef __KERNEL__
   5/*
   6 * Architecture specific compatibility types
   7 */
   8#include <linux/types.h>
   9#include <linux/sched.h>
  10
  11#define compat_ipc_pid_t compat_ipc_pid_t
  12typedef u16             compat_ipc_pid_t;
  13
  14#define compat_ipc64_perm compat_ipc64_perm
  15
  16#include <asm-generic/compat.h>
  17
  18#ifdef __BIG_ENDIAN__
  19#define COMPAT_UTS_MACHINE      "ppc\0\0"
  20#else
  21#define COMPAT_UTS_MACHINE      "ppcle\0\0"
  22#endif
  23
  24typedef s16             compat_nlink_t;
  25
  26struct compat_stat {
  27        compat_dev_t    st_dev;
  28        compat_ino_t    st_ino;
  29        compat_mode_t   st_mode;
  30        compat_nlink_t  st_nlink;
  31        __compat_uid32_t        st_uid;
  32        __compat_gid32_t        st_gid;
  33        compat_dev_t    st_rdev;
  34        compat_off_t    st_size;
  35        compat_off_t    st_blksize;
  36        compat_off_t    st_blocks;
  37        old_time32_t    st_atime;
  38        u32             st_atime_nsec;
  39        old_time32_t    st_mtime;
  40        u32             st_mtime_nsec;
  41        old_time32_t    st_ctime;
  42        u32             st_ctime_nsec;
  43        u32             __unused4[2];
  44};
  45
  46/*
  47 * ipc64_perm is actually 32/64bit clean but since the compat layer refers to
  48 * it we may as well define it.
  49 */
  50struct compat_ipc64_perm {
  51        compat_key_t key;
  52        __compat_uid_t uid;
  53        __compat_gid_t gid;
  54        __compat_uid_t cuid;
  55        __compat_gid_t cgid;
  56        compat_mode_t mode;
  57        unsigned int seq;
  58        unsigned int __pad2;
  59        unsigned long __unused1;        /* yes they really are 64bit pads */
  60        unsigned long __unused2;
  61};
  62
  63struct compat_semid64_ds {
  64        struct compat_ipc64_perm sem_perm;
  65        unsigned int sem_otime_high;
  66        unsigned int sem_otime;
  67        unsigned int sem_ctime_high;
  68        unsigned int sem_ctime;
  69        compat_ulong_t sem_nsems;
  70        compat_ulong_t __unused3;
  71        compat_ulong_t __unused4;
  72};
  73
  74struct compat_msqid64_ds {
  75        struct compat_ipc64_perm msg_perm;
  76        unsigned int msg_stime_high;
  77        unsigned int msg_stime;
  78        unsigned int msg_rtime_high;
  79        unsigned int msg_rtime;
  80        unsigned int msg_ctime_high;
  81        unsigned int msg_ctime;
  82        compat_ulong_t msg_cbytes;
  83        compat_ulong_t msg_qnum;
  84        compat_ulong_t msg_qbytes;
  85        compat_pid_t msg_lspid;
  86        compat_pid_t msg_lrpid;
  87        compat_ulong_t __unused4;
  88        compat_ulong_t __unused5;
  89};
  90
  91struct compat_shmid64_ds {
  92        struct compat_ipc64_perm shm_perm;
  93        unsigned int shm_atime_high;
  94        unsigned int shm_atime;
  95        unsigned int shm_dtime_high;
  96        unsigned int shm_dtime;
  97        unsigned int shm_ctime_high;
  98        unsigned int shm_ctime;
  99        unsigned int __unused4;
 100        compat_size_t shm_segsz;
 101        compat_pid_t shm_cpid;
 102        compat_pid_t shm_lpid;
 103        compat_ulong_t shm_nattch;
 104        compat_ulong_t __unused5;
 105        compat_ulong_t __unused6;
 106};
 107
 108static inline int is_compat_task(void)
 109{
 110        return is_32bit_task();
 111}
 112
 113#endif /* __KERNEL__ */
 114#endif /* _ASM_POWERPC_COMPAT_H */
 115