Skip site navigation (1)Skip section navigation (2)
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>