/* SPDX-License-Identifier: GPL-2.0 */ 
 | 
#ifndef _ASM_X86_IA32_H 
 | 
#define _ASM_X86_IA32_H 
 | 
  
 | 
  
 | 
#ifdef CONFIG_IA32_EMULATION 
 | 
  
 | 
#include <linux/compat.h> 
 | 
  
 | 
/* 
 | 
 * 32 bit structures for IA32 support. 
 | 
 */ 
 | 
  
 | 
#include <uapi/asm/sigcontext.h> 
 | 
  
 | 
/* signal.h */ 
 | 
  
 | 
struct ucontext_ia32 { 
 | 
    unsigned int      uc_flags; 
 | 
    unsigned int       uc_link; 
 | 
    compat_stack_t      uc_stack; 
 | 
    struct sigcontext_32 uc_mcontext; 
 | 
    compat_sigset_t      uc_sigmask;    /* mask last for extensibility */ 
 | 
}; 
 | 
  
 | 
/* This matches struct stat64 in glibc2.2, hence the absolutely 
 | 
 * insane amounts of padding around dev_t's. 
 | 
 */ 
 | 
struct stat64 { 
 | 
    unsigned long long    st_dev; 
 | 
    unsigned char        __pad0[4]; 
 | 
  
 | 
#define STAT64_HAS_BROKEN_ST_INO    1 
 | 
    unsigned int        __st_ino; 
 | 
  
 | 
    unsigned int        st_mode; 
 | 
    unsigned int        st_nlink; 
 | 
  
 | 
    unsigned int        st_uid; 
 | 
    unsigned int        st_gid; 
 | 
  
 | 
    unsigned long long    st_rdev; 
 | 
    unsigned char        __pad3[4]; 
 | 
  
 | 
    long long        st_size; 
 | 
    unsigned int        st_blksize; 
 | 
  
 | 
    long long        st_blocks;/* Number 512-byte blocks allocated */ 
 | 
  
 | 
    unsigned         st_atime; 
 | 
    unsigned         st_atime_nsec; 
 | 
    unsigned         st_mtime; 
 | 
    unsigned         st_mtime_nsec; 
 | 
    unsigned         st_ctime; 
 | 
    unsigned         st_ctime_nsec; 
 | 
  
 | 
    unsigned long long    st_ino; 
 | 
} __attribute__((packed)); 
 | 
  
 | 
#define IA32_STACK_TOP IA32_PAGE_OFFSET 
 | 
  
 | 
#ifdef __KERNEL__ 
 | 
struct linux_binprm; 
 | 
extern int ia32_setup_arg_pages(struct linux_binprm *bprm, 
 | 
                unsigned long stack_top, int exec_stack); 
 | 
struct mm_struct; 
 | 
extern void ia32_pick_mmap_layout(struct mm_struct *mm); 
 | 
  
 | 
#endif 
 | 
  
 | 
#endif /* !CONFIG_IA32_SUPPORT */ 
 | 
  
 | 
#endif /* _ASM_X86_IA32_H */ 
 |