1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2deae26bfSKyle McMartin #ifndef _ASM_PARISC_COMPAT_H 3deae26bfSKyle McMartin #define _ASM_PARISC_COMPAT_H 4deae26bfSKyle McMartin /* 5deae26bfSKyle McMartin * Architecture specific compatibility types 6deae26bfSKyle McMartin */ 7deae26bfSKyle McMartin #include <linux/types.h> 8deae26bfSKyle McMartin #include <linux/sched.h> 9deae26bfSKyle McMartin #include <linux/thread_info.h> 10deae26bfSKyle McMartin 111a33b18bSArnd Bergmann #define compat_mode_t compat_mode_t 121a33b18bSArnd Bergmann typedef u16 compat_mode_t; 131a33b18bSArnd Bergmann 14*84a0c977SGuo Ren #define compat_ipc_pid_t compat_ipc_pid_t 15*84a0c977SGuo Ren typedef u16 compat_ipc_pid_t; 16*84a0c977SGuo Ren 17*84a0c977SGuo Ren #define compat_ipc64_perm compat_ipc64_perm 18*84a0c977SGuo Ren 19fb373975SArnd Bergmann #include <asm-generic/compat.h> 20fb373975SArnd Bergmann 21e28cbf22SChristoph Hellwig #define COMPAT_UTS_MACHINE "parisc\0\0" 22deae26bfSKyle McMartin 23deae26bfSKyle McMartin typedef u16 compat_nlink_t; 24deae26bfSKyle McMartin 25deae26bfSKyle McMartin struct compat_stat { 26deae26bfSKyle McMartin compat_dev_t st_dev; /* dev_t is 32 bits on parisc */ 27deae26bfSKyle McMartin compat_ino_t st_ino; /* 32 bits */ 28deae26bfSKyle McMartin compat_mode_t st_mode; /* 16 bits */ 29deae26bfSKyle McMartin compat_nlink_t st_nlink; /* 16 bits */ 30deae26bfSKyle McMartin u16 st_reserved1; /* old st_uid */ 31deae26bfSKyle McMartin u16 st_reserved2; /* old st_gid */ 32deae26bfSKyle McMartin compat_dev_t st_rdev; 33deae26bfSKyle McMartin compat_off_t st_size; 349afc5eeeSArnd Bergmann old_time32_t st_atime; 35deae26bfSKyle McMartin u32 st_atime_nsec; 369afc5eeeSArnd Bergmann old_time32_t st_mtime; 37deae26bfSKyle McMartin u32 st_mtime_nsec; 389afc5eeeSArnd Bergmann old_time32_t st_ctime; 39deae26bfSKyle McMartin u32 st_ctime_nsec; 40deae26bfSKyle McMartin s32 st_blksize; 41deae26bfSKyle McMartin s32 st_blocks; 42deae26bfSKyle McMartin u32 __unused1; /* ACL stuff */ 43deae26bfSKyle McMartin compat_dev_t __unused2; /* network */ 44deae26bfSKyle McMartin compat_ino_t __unused3; /* network */ 45deae26bfSKyle McMartin u32 __unused4; /* cnodes */ 46deae26bfSKyle McMartin u16 __unused5; /* netsite */ 47deae26bfSKyle McMartin short st_fstype; 48deae26bfSKyle McMartin compat_dev_t st_realdev; 49deae26bfSKyle McMartin u16 st_basemode; 50deae26bfSKyle McMartin u16 st_spareshort; 51deae26bfSKyle McMartin __compat_uid32_t st_uid; 52deae26bfSKyle McMartin __compat_gid32_t st_gid; 53deae26bfSKyle McMartin u32 st_spare4[3]; 54deae26bfSKyle McMartin }; 55deae26bfSKyle McMartin 56deae26bfSKyle McMartin struct compat_sigcontext { 57deae26bfSKyle McMartin compat_int_t sc_flags; 58deae26bfSKyle McMartin compat_int_t sc_gr[32]; /* PSW in sc_gr[0] */ 59deae26bfSKyle McMartin u64 sc_fr[32]; 60deae26bfSKyle McMartin compat_int_t sc_iasq[2]; 61deae26bfSKyle McMartin compat_int_t sc_iaoq[2]; 62deae26bfSKyle McMartin compat_int_t sc_sar; /* cr11 */ 63deae26bfSKyle McMartin }; 64deae26bfSKyle McMartin 65bf581e15SHelge Deller struct compat_ipc64_perm { 66bf581e15SHelge Deller compat_key_t key; 67bf581e15SHelge Deller __compat_uid_t uid; 68bf581e15SHelge Deller __compat_gid_t gid; 69bf581e15SHelge Deller __compat_uid_t cuid; 70bf581e15SHelge Deller __compat_gid_t cgid; 71bf581e15SHelge Deller unsigned short int __pad1; 72bf581e15SHelge Deller compat_mode_t mode; 73bf581e15SHelge Deller unsigned short int __pad2; 74bf581e15SHelge Deller unsigned short int seq; 75bf581e15SHelge Deller unsigned int __pad3; 76bf581e15SHelge Deller unsigned long __unused1; /* yes they really are 64bit pads */ 77bf581e15SHelge Deller unsigned long __unused2; 78bf581e15SHelge Deller }; 79bf581e15SHelge Deller 80bf581e15SHelge Deller struct compat_semid64_ds { 81bf581e15SHelge Deller struct compat_ipc64_perm sem_perm; 82f69c97f6SArnd Bergmann unsigned int sem_otime_high; 83f69c97f6SArnd Bergmann unsigned int sem_otime; 84f69c97f6SArnd Bergmann unsigned int sem_ctime_high; 85f69c97f6SArnd Bergmann unsigned int sem_ctime; 86bf581e15SHelge Deller compat_ulong_t sem_nsems; 87bf581e15SHelge Deller compat_ulong_t __unused3; 88bf581e15SHelge Deller compat_ulong_t __unused4; 89bf581e15SHelge Deller }; 90bf581e15SHelge Deller 91bf581e15SHelge Deller struct compat_msqid64_ds { 92bf581e15SHelge Deller struct compat_ipc64_perm msg_perm; 93f69c97f6SArnd Bergmann unsigned int msg_stime_high; 94f69c97f6SArnd Bergmann unsigned int msg_stime; 95f69c97f6SArnd Bergmann unsigned int msg_rtime_high; 96f69c97f6SArnd Bergmann unsigned int msg_rtime; 97f69c97f6SArnd Bergmann unsigned int msg_ctime_high; 98f69c97f6SArnd Bergmann unsigned int msg_ctime; 99bf581e15SHelge Deller compat_ulong_t msg_cbytes; 100bf581e15SHelge Deller compat_ulong_t msg_qnum; 101bf581e15SHelge Deller compat_ulong_t msg_qbytes; 102bf581e15SHelge Deller compat_pid_t msg_lspid; 103bf581e15SHelge Deller compat_pid_t msg_lrpid; 104bf581e15SHelge Deller compat_ulong_t __unused4; 105bf581e15SHelge Deller compat_ulong_t __unused5; 106bf581e15SHelge Deller }; 107bf581e15SHelge Deller 108bf581e15SHelge Deller struct compat_shmid64_ds { 109bf581e15SHelge Deller struct compat_ipc64_perm shm_perm; 110f69c97f6SArnd Bergmann unsigned int shm_atime_high; 111f69c97f6SArnd Bergmann unsigned int shm_atime; 112f69c97f6SArnd Bergmann unsigned int shm_dtime_high; 113f69c97f6SArnd Bergmann unsigned int shm_dtime; 114f69c97f6SArnd Bergmann unsigned int shm_ctime_high; 115f69c97f6SArnd Bergmann unsigned int shm_ctime; 116bf581e15SHelge Deller unsigned int __unused4; 117bf581e15SHelge Deller compat_size_t shm_segsz; 118bf581e15SHelge Deller compat_pid_t shm_cpid; 119bf581e15SHelge Deller compat_pid_t shm_lpid; 120bf581e15SHelge Deller compat_ulong_t shm_nattch; 121bf581e15SHelge Deller compat_ulong_t __unused5; 122bf581e15SHelge Deller compat_ulong_t __unused6; 123bf581e15SHelge Deller }; 124bf581e15SHelge Deller 125deae26bfSKyle McMartin /* 12671d577dbSHelge Deller * The type of struct elf_prstatus.pr_reg in compatible core dumps. 12771d577dbSHelge Deller */ 12871d577dbSHelge Deller #define COMPAT_ELF_NGREG 80 12971d577dbSHelge Deller typedef compat_ulong_t compat_elf_gregset_t[COMPAT_ELF_NGREG]; 13071d577dbSHelge Deller __is_compat_task(struct task_struct * t)131deae26bfSKyle McMartinstatic inline int __is_compat_task(struct task_struct *t) 132deae26bfSKyle McMartin { 133ae3c4761STiezhu Yang return test_tsk_thread_flag(t, TIF_32BIT); 134deae26bfSKyle McMartin } 135deae26bfSKyle McMartin is_compat_task(void)136deae26bfSKyle McMartinstatic inline int is_compat_task(void) 137deae26bfSKyle McMartin { 138deae26bfSKyle McMartin return __is_compat_task(current); 139deae26bfSKyle McMartin } 140deae26bfSKyle McMartin 141deae26bfSKyle McMartin #endif /* _ASM_PARISC_COMPAT_H */ 142