Back to home page

OSCL-LXR

 
 

    


0001 #ifndef _ASM_X86_ELFCORE_COMPAT_H
0002 #define _ASM_X86_ELFCORE_COMPAT_H
0003 
0004 #include <asm/user32.h>
0005 
0006 /*
0007  * On amd64 we have two 32bit ABIs - i386 and x32.  The latter
0008  * has bigger registers, so we use it for compat_elf_regset_t.
0009  * The former uses i386_elf_prstatus and PRSTATUS_SIZE/SET_PR_FPVALID
0010  * are used to choose the size and location of ->pr_fpvalid of
0011  * the layout actually used.
0012  */
0013 typedef struct user_regs_struct compat_elf_gregset_t;
0014 
0015 struct i386_elf_prstatus
0016 {
0017     struct compat_elf_prstatus_common   common;
0018     struct user_regs_struct32       pr_reg;
0019     compat_int_t            pr_fpvalid;
0020 };
0021 
0022 #define PRSTATUS_SIZE \
0023     (user_64bit_mode(task_pt_regs(current)) \
0024         ? sizeof(struct compat_elf_prstatus) \
0025         : sizeof(struct i386_elf_prstatus))
0026 #define SET_PR_FPVALID(S) \
0027     (*(user_64bit_mode(task_pt_regs(current)) \
0028         ? &(S)->pr_fpvalid  \
0029         : &((struct i386_elf_prstatus *)(S))->pr_fpvalid) = 1)
0030 
0031 #endif