Date: Sun, 4 May 2003 17:10:14 -0700 (PDT) From: Marcel Moolenaar <marcel@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 30564 for review Message-ID: <200305050010.h450AEkF007282@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=30564 Change 30564 by marcel@marcel_nfs on 2003/05/04 17:09:56 Save and restore the preserved registers on signal delivery. Note that this mostly works due to the fact that the kernel does not modify these registers. This of course needs to use unwinding, but for now it's a quick stopgap for processes that call sigreturn() other than implicitly by returning from the handler. Affected files ... .. //depot/projects/ia64_epc/sys/ia64/ia64/machdep.c#22 edit Differences ... ==== //depot/projects/ia64_epc/sys/ia64/ia64/machdep.c#22 (text+ko) ==== @@ -889,6 +889,8 @@ * and write them in the context. */ } + save_callee_saved(&mc->mc_preserved); + save_callee_saved_fp(&mc->mc_preserved_fp); /* Copy the frame out to userland. */ if (copyout(&sf, sfp, sizeof(sf)) != 0) { @@ -978,6 +980,8 @@ tf->tf_scratch_fp = mc->mc_scratch_fp; /* XXX high FP. */ } + restore_callee_saved(&mc->mc_preserved); + restore_callee_saved_fp(&mc->mc_preserved_fp); PROC_LOCK(p); #if defined(COMPAT_43) || defined(COMPAT_SUNOS)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200305050010.h450AEkF007282>