summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/exceptions.cc
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2003-08-22 19:25:56 +0000
committerChristopher Faylor <me@cgf.cx>2003-08-22 19:25:56 +0000
commit897c6b5231b76e475959a3e0c5559df5d46fb87c (patch)
tree09fb4f23d4f036f9b144c4fa744c229fd175ecba /winsup/cygwin/exceptions.cc
parent9fc9e1c916af8d91539ace77cb123b4fa99e0d37 (diff)
downloadcygnal-897c6b5231b76e475959a3e0c5559df5d46fb87c.tar.gz
cygnal-897c6b5231b76e475959a3e0c5559df5d46fb87c.tar.bz2
cygnal-897c6b5231b76e475959a3e0c5559df5d46fb87c.zip
* exceptions.cc (sigreturn): Don't clobber ebp in recursive signal calls.
Diffstat (limited to 'winsup/cygwin/exceptions.cc')
-rw-r--r--winsup/cygwin/exceptions.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index e99751714..173216525 100644
--- a/winsup/cygwin/exceptions.cc
+++ b/winsup/cygwin/exceptions.cc
@@ -1225,8 +1225,7 @@ _sigreturn: \n\
cmpl $0,%4 # Did a signal come in? \n\
jz 1f # No, if zero \n\
movl %2,%%eax \n\
- movl %%esp,%%ebp \n\
- movl %%eax,36(%%ebp) # Restore return address \n\
+ movl %%eax,36(%%esp) # Restore return address \n\
jmp 3f \n\
\n\
1: popl %%eax # saved errno \n\
@@ -1275,7 +1274,8 @@ _sigdelayed0: \n\
__no_sig_end: \n\
" : "=m" (sigsave.sig): "X" ((char *) &_impure_ptr->_errno),
"g" (sigsave.retaddr), "g" (sigsave.oldmask), "g" (sigsave.sig),
- "g" (sigsave.func), "g" (sigsave.saved_errno), "g" (sigsave.newmask)
+ "g" (sigsave.func), "g" (sigsave.saved_errno), "g" (sigsave.newmask),
+ "g" (sigsave.retaddr_on_stack)
);
}
}