summaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/i386/sigaction.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/i386/sigaction.c')
-rw-r--r--sysdeps/unix/sysv/linux/i386/sigaction.c47
1 files changed, 25 insertions, 22 deletions
diff --git a/sysdeps/unix/sysv/linux/i386/sigaction.c b/sysdeps/unix/sysv/linux/i386/sigaction.c
index 6986290da5..64c8f9a404 100644
--- a/sysdeps/unix/sysv/linux/i386/sigaction.c
+++ b/sysdeps/unix/sysv/linux/i386/sigaction.c
@@ -31,20 +31,20 @@ __sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
struct sigaction newact;
int result;
- if (new)
+ if (act)
{
- newact = *new;
- new = &newact;
- new->sa_restorer = ((new->sa_flags & SA_NOMASK)
- ? &&restore_nomask : &&restore);
+ newact = *act;
+ newact.sa_restorer = ((act->sa_flags & SA_NOMASK)
+ ? &&restore_nomask : &&restore);
+ act = &newact;
}
asm volatile ("pushl %%ebx\n"
- "movl %1, %%ebx\n"
+ "movl %2, %%ebx\n"
"int $0x80\n"
"popl %%ebx"
: "=a" (result)
- : "0" (SYS_ify (sigaction)), "g" (sig), "c" (new), "d" (old));
+ : "0" (SYS_ify (sigaction)), "g" (sig), "c" (act), "d" (oact));
if (result < 0)
{
@@ -56,31 +56,34 @@ __sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
restore:
asm (
#ifdef PIC
- " pushl %ebx\n"
+ " pushl %%ebx\n"
" call 0f\n"
- "0: popl %ebx\n"
- " addl $_GLOBAL_OFFSET_TABLE_+[.-0b],%ebx\n"
+ "0: popl %%ebx\n"
+ " addl $_GLOBAL_OFFSET_TABLE_+[.-0b], %%ebx\n"
" addl $8, %%esp\n"
" call __sigsetmask@PLT\n"
" addl $8, %%esp\n"
- " popl %ebx\n"
+ " popl %%ebx\n"
#else
" addl $4, %%esp\n"
" call __sigsetmask\n"
" addl $4, %%esp\n"
#endif
- "popl %eax\n"
- "popl %ecx\n"
- "popl %edx\n"
- "popf\n"
- "ret");
+ " popl %%eax\n"
+ " popl %%ecx\n"
+ " popl %%edx\n"
+ " popf\n"
+ " ret"
+ : : );
restore_nomask:
- asm ("addl $4, %esp\n"
- "popl %eax\n"
- "popl %ecx\n"
- "popl %edx\n"
- "popf\n"
- "ret");
+ asm (" addl $4, %%esp\n"
+ " popl %%eax\n"
+ " popl %%ecx\n"
+ " popl %%edx\n"
+ " popf\n"
+ " ret"
+ : : );
+ /* NOTREACHED */
}
weak_alias (__sigaction, sigaction)