Date: Wed, 15 Oct 2003 11:10:43 +0800 From: David Xu <davidxu@viatech.com.cn> To: Peter Wemm <peter@FreeBSD.org> Cc: cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/amd64/amd64 exception.S trap.c src/sys/amd64/include frame.h signal.h ucontext.h Message-ID: <3F8CBAB3.4080105@viatech.com.cn> In-Reply-To: <200310150204.h9F24rVO015517@repoman.freebsd.org> References: <200310150204.h9F24rVO015517@repoman.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Peter Wemm wrote: >peter 2003/10/14 19:04:52 PDT > > FreeBSD src repository > > Modified files: > sys/amd64/amd64 exception.S trap.c > sys/amd64/include frame.h signal.h ucontext.h > Log: > Pull the tier-2 card one last time and break the get/setcontext and > sigreturn() ABI and the signal context on the stack. > > Make the trapframe (and its shadows in the ucontext and sigframe etc) > 8 bytes larger in order to preserve 16 byte stack alignment for the > following C code calls. I could have done some padding after the > trapframe was saved, but some of the C code still expects an argument of > 'struct trapframe'. Anyway, this gives me a spare field that can be used > to store things like 'partial trapframe' status or something else in > the future. > > The runtime impact is fairly small, *except* for threaded apps and things > that decode contexts and the signal stack (eg: cvsup binary). Signal > delivery isn't too badly affected because the kernel generates the > sigframe that sigreturn uses after the handler has been called. > > The size of mcontext_t and struct sigframe hasn't changed. Only > the last few fields (sc_eip etc) got moved a little and I eliminated > a spare field. mc_len/sc_len did change location though so the > sanity checks there will still trap it. > > Revision Changes Path > 1.113 +1 -1 src/sys/amd64/amd64/exception.S > 1.266 +9 -0 src/sys/amd64/amd64/trap.c > 1.25 +3 -0 src/sys/amd64/include/frame.h > 1.24 +2 -2 src/sys/amd64/include/signal.h > 1.16 +2 -2 src/sys/amd64/include/ucontext.h > > > The change you made to ucontext.h breaks libkse. :-( David Xu
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3F8CBAB3.4080105>