GNU Linux-libre 5.15.137-gnu
[releases.git] / arch / x86 / include / asm / elfcore-compat.h
1 #ifndef _ASM_X86_ELFCORE_COMPAT_H
2 #define _ASM_X86_ELFCORE_COMPAT_H
3
4 #include <asm/user32.h>
5
6 /*
7  * On amd64 we have two 32bit ABIs - i386 and x32.  The latter
8  * has bigger registers, so we use it for compat_elf_regset_t.
9  * The former uses i386_elf_prstatus and PRSTATUS_SIZE/SET_PR_FPVALID
10  * are used to choose the size and location of ->pr_fpvalid of
11  * the layout actually used.
12  */
13 typedef struct user_regs_struct compat_elf_gregset_t;
14
15 struct i386_elf_prstatus
16 {
17         struct compat_elf_prstatus_common       common;
18         struct user_regs_struct32               pr_reg;
19         compat_int_t                    pr_fpvalid;
20 };
21
22 #define PRSTATUS_SIZE \
23         (user_64bit_mode(task_pt_regs(current)) \
24                 ? sizeof(struct compat_elf_prstatus) \
25                 : sizeof(struct i386_elf_prstatus))
26 #define SET_PR_FPVALID(S) \
27         (*(user_64bit_mode(task_pt_regs(current)) \
28                 ? &(S)->pr_fpvalid      \
29                 : &((struct i386_elf_prstatus *)(S))->pr_fpvalid) = 1)
30
31 #endif