From owner-p4-projects@FreeBSD.ORG Sun May 4 17:10:17 2003 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5793837B40F; Sun, 4 May 2003 17:10:16 -0700 (PDT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id CC6D037B401 for ; Sun, 4 May 2003 17:10:15 -0700 (PDT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 7744943F3F for ; Sun, 4 May 2003 17:10:15 -0700 (PDT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.6/8.12.6) with ESMTP id h450AF0U007285 for ; Sun, 4 May 2003 17:10:15 -0700 (PDT) (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.6/8.12.6/Submit) id h450AEkF007282 for perforce@freebsd.org; Sun, 4 May 2003 17:10:14 -0700 (PDT) Date: Sun, 4 May 2003 17:10:14 -0700 (PDT) Message-Id: <200305050010.h450AEkF007282@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Subject: PERFORCE change 30564 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 May 2003 00:10:17 -0000 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)