Dmitry V. Levin
527b42ff8d
Make arch_sigreturn.c files more self-sustained. While they are still being included by sigreturn.c, the latter no longer defines arch_sigreturn function. * linux/alpha/arch_sigreturn.c (arch_sigreturn): Define. * linux/arm/arch_sigreturn.c: Likewise. * linux/crisv10/arch_sigreturn.c: Likewise. * linux/i386/arch_sigreturn.c: Likewise. * linux/ia64/arch_sigreturn.c: Likewise. * linux/m68k/arch_sigreturn.c: Likewise. * linux/microblaze/arch_sigreturn.c: Likewise. * linux/mips/arch_sigreturn.c: Likewise. * linux/powerpc/arch_sigreturn.c: Likewise. * linux/s390/arch_sigreturn.c: Likewise. * linux/sparc/arch_sigreturn.c: Likewise. * linux/tile/arch_sigreturn.c: Likewise. * linux/x32/arch_sigreturn.c: Remove code. Include "x86_64/arch_sigreturn.c". * linux/x86_64/arch_sigreturn.c: Stop including "x32/arch_sigreturn.c". Include "i386/arch_sigreturn.c" with arch_sigreturn temporarily defined to i386_arch_sigreturn. (arch_sigreturn): Define. Add x32 personality support there. * sigreturn.c: Remove arch_sigreturn header and footer. Requested-by: Denys Vlasenko <dvlasenk@redhat.com>
25 lines
617 B
C
25 lines
617 B
C
static void
|
|
arch_sigreturn(struct tcb *tcp)
|
|
{
|
|
/*
|
|
* On i386, sigcontext is followed on stack by struct fpstate
|
|
* and after it an additional u32 extramask which holds
|
|
* upper half of the mask.
|
|
*/
|
|
struct {
|
|
uint32_t struct_sigcontext_padding1[20];
|
|
uint32_t oldmask;
|
|
uint32_t struct_sigcontext_padding2;
|
|
uint32_t struct_fpstate_padding[156];
|
|
uint32_t extramask;
|
|
} frame;
|
|
|
|
if (umove(tcp, *i386_esp_ptr, &frame) < 0) {
|
|
tprintf("{mask=%#lx}", (unsigned long) *i386_esp_ptr);
|
|
} else {
|
|
uint32_t mask[2] = { frame.oldmask, frame.extramask };
|
|
tprintsigmask_addr("{mask=", mask);
|
|
tprints("}");
|
|
}
|
|
}
|