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 12 typedef 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 24 typedef s16 compat_nlink_t; 25 26 struct 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 */ 50 struct 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 63 struct 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 74 struct 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 91 struct 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 108 static inline int is_compat_task(void) 109 { 110 return is_32bit_task(); 111 } 112 113 #endif /* __KERNEL__ */ 114 #endif /* _ASM_POWERPC_COMPAT_H */ 115