compat.h (2558B)
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 */