2010-03-03 15:27:30 +01:00
|
|
|
/* This routine is the low-level code for returning from signals. */
|
2010-08-17 18:44:07 +02:00
|
|
|
/* It calls _sigreturn, which is the normal "system call" routine. */
|
|
|
|
/* Both __sigreturn and _sigreturn are needed. */
|
|
|
|
#include <machine/asm.h>
|
|
|
|
|
2013-12-06 12:04:52 +01:00
|
|
|
IMPORT(sigreturn)
|
2010-08-17 18:44:07 +02:00
|
|
|
ENTRY(__sigreturn)
|
2010-03-03 15:27:30 +01:00
|
|
|
addl $16, %esp
|
2013-12-06 12:04:52 +01:00
|
|
|
#ifndef __PIC__
|
|
|
|
jmp _C_LABEL(sigreturn)
|
2013-02-01 10:39:47 +01:00
|
|
|
#else
|
|
|
|
PIC_PROLOGUE /* push %ebx, but we do not care */
|
|
|
|
pop %eax /* special knowledge of how PIC works: discard pushed EBX */
|
2013-12-06 12:04:52 +01:00
|
|
|
jmp PIC_PLT(_C_LABEL(sigreturn))
|
2013-02-01 10:39:47 +01:00
|
|
|
#endif /* PIC */
|