18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci#ifndef _ASM_X86_IA32_H 38c2ecf20Sopenharmony_ci#define _ASM_X86_IA32_H 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci#ifdef CONFIG_IA32_EMULATION 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci#include <linux/compat.h> 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci/* 118c2ecf20Sopenharmony_ci * 32 bit structures for IA32 support. 128c2ecf20Sopenharmony_ci */ 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci#include <uapi/asm/sigcontext.h> 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ci/* signal.h */ 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_cistruct ucontext_ia32 { 198c2ecf20Sopenharmony_ci unsigned int uc_flags; 208c2ecf20Sopenharmony_ci unsigned int uc_link; 218c2ecf20Sopenharmony_ci compat_stack_t uc_stack; 228c2ecf20Sopenharmony_ci struct sigcontext_32 uc_mcontext; 238c2ecf20Sopenharmony_ci compat_sigset_t uc_sigmask; /* mask last for extensibility */ 248c2ecf20Sopenharmony_ci}; 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_ci/* This matches struct stat64 in glibc2.2, hence the absolutely 278c2ecf20Sopenharmony_ci * insane amounts of padding around dev_t's. 288c2ecf20Sopenharmony_ci */ 298c2ecf20Sopenharmony_cistruct stat64 { 308c2ecf20Sopenharmony_ci unsigned long long st_dev; 318c2ecf20Sopenharmony_ci unsigned char __pad0[4]; 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ci#define STAT64_HAS_BROKEN_ST_INO 1 348c2ecf20Sopenharmony_ci unsigned int __st_ino; 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci unsigned int st_mode; 378c2ecf20Sopenharmony_ci unsigned int st_nlink; 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci unsigned int st_uid; 408c2ecf20Sopenharmony_ci unsigned int st_gid; 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci unsigned long long st_rdev; 438c2ecf20Sopenharmony_ci unsigned char __pad3[4]; 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ci long long st_size; 468c2ecf20Sopenharmony_ci unsigned int st_blksize; 478c2ecf20Sopenharmony_ci 488c2ecf20Sopenharmony_ci long long st_blocks;/* Number 512-byte blocks allocated */ 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ci unsigned st_atime; 518c2ecf20Sopenharmony_ci unsigned st_atime_nsec; 528c2ecf20Sopenharmony_ci unsigned st_mtime; 538c2ecf20Sopenharmony_ci unsigned st_mtime_nsec; 548c2ecf20Sopenharmony_ci unsigned st_ctime; 558c2ecf20Sopenharmony_ci unsigned st_ctime_nsec; 568c2ecf20Sopenharmony_ci 578c2ecf20Sopenharmony_ci unsigned long long st_ino; 588c2ecf20Sopenharmony_ci} __attribute__((packed)); 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_ci#define IA32_STACK_TOP IA32_PAGE_OFFSET 618c2ecf20Sopenharmony_ci 628c2ecf20Sopenharmony_ci#ifdef __KERNEL__ 638c2ecf20Sopenharmony_cistruct linux_binprm; 648c2ecf20Sopenharmony_ciextern int ia32_setup_arg_pages(struct linux_binprm *bprm, 658c2ecf20Sopenharmony_ci unsigned long stack_top, int exec_stack); 668c2ecf20Sopenharmony_cistruct mm_struct; 678c2ecf20Sopenharmony_ciextern void ia32_pick_mmap_layout(struct mm_struct *mm); 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_ci#endif 708c2ecf20Sopenharmony_ci 718c2ecf20Sopenharmony_ci#endif /* !CONFIG_IA32_SUPPORT */ 728c2ecf20Sopenharmony_ci 738c2ecf20Sopenharmony_ci#endif /* _ASM_X86_IA32_H */ 74