xref: /linux/arch/mips/include/asm/elfcore-compat.h (revision a4eb44a6435d6d8f9e642407a4a06f65eb90ca04)
1 #ifndef _ASM_MIPS_ELFCORE_COMPAT_H
2 #define _ASM_MIPS_ELFCORE_COMPAT_H
3 
4 /*
5  * On mips we have two 32bit ABIs - o32 and n32.  The latter
6  * has bigger registers, so we use it for compat_elf_regset_t.
7  * The former uses o32_elf_prstatus and PRSTATUS_SIZE/SET_PR_FPVALID
8  * are used to choose the size and location of ->pr_fpvalid of
9  * the layout actually used.
10  */
11 typedef elf_gregset_t compat_elf_gregset_t;
12 
13 struct o32_elf_prstatus
14 {
15 	struct compat_elf_prstatus_common	common;
16 	unsigned int 			pr_reg[ELF_NGREG];
17 	compat_int_t			pr_fpvalid;
18 };
19 
20 #define PRSTATUS_SIZE \
21 	(!test_thread_flag(TIF_32BIT_REGS) \
22 		? sizeof(struct compat_elf_prstatus) \
23 		: sizeof(struct o32_elf_prstatus))
24 #define SET_PR_FPVALID(S) \
25 	(*(!test_thread_flag(TIF_32BIT_REGS) \
26 		? &(S)->pr_fpvalid 	\
27 		: &((struct o32_elf_prstatus *)(S))->pr_fpvalid) = 1)
28 
29 #endif
30