From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/9311 Path: news.gmane.org!not-for-mail From: Rich Felker Newsgroups: gmane.linux.lib.musl.general Subject: Re: Re: mips n64 porting review Date: Fri, 12 Feb 2016 13:51:15 -0500 Message-ID: <20160212185115.GS9349@brightrain.aerifal.cx> References: <20160203233657.GL9349@brightrain.aerifal.cx> <20160204235246.GU9349@brightrain.aerifal.cx> <20160205042734.GV9349@brightrain.aerifal.cx> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1455303109 19681 80.91.229.3 (12 Feb 2016 18:51:49 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 12 Feb 2016 18:51:49 +0000 (UTC) Cc: Szabolcs Nagy , Jaydeep Patil , Anand Takale , musl@lists.openwall.com To: Mahesh Bodapati Original-X-From: musl-return-9324-gllmg-musl=m.gmane.org@lists.openwall.com Fri Feb 12 19:51:42 2016 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by plane.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1aUIof-0002sl-Oj for gllmg-musl@m.gmane.org; Fri, 12 Feb 2016 19:51:41 +0100 Original-Received: (qmail 21627 invoked by uid 550); 12 Feb 2016 18:51:39 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Original-Received: (qmail 21609 invoked from network); 12 Feb 2016 18:51:38 -0000 Content-Disposition: inline In-Reply-To: <20160205042734.GV9349@brightrain.aerifal.cx> User-Agent: Mutt/1.5.21 (2010-09-15) Original-Sender: Rich Felker Xref: news.gmane.org gmane.linux.lib.musl.general:9311 Archived-At: On Thu, Feb 04, 2016 at 11:27:34PM -0500, Rich Felker wrote: > On Thu, Feb 04, 2016 at 06:52:47PM -0500, Rich Felker wrote: > > On Wed, Feb 03, 2016 at 06:36:57PM -0500, Rich Felker wrote: > > > On Wed, Feb 03, 2016 at 03:41:13PM +0000, Mahesh Bodapati wrote: > > > > Hi Rich, > > > > I have attached the patch which has all the MIPS n64 porting work. I > > > > have created mips64port remote branch on GitHub and the repository > > > > is https://github.com/MaheshBodapati/musl/tree/mips64port which has > > > > the broken down patches and the base revision on which I have > > > > prepared patch is v1.1.12-41-g3abb094. > > > > > > Some preliminary review: > > > > One more thing that came up in reviewing syscall_cp.s was actually a > > bug copied from existing code in musl, which is fixed by this commit: > > > > http://git.musl-libc.org/cgit/musl/commit/?id=756c8af8589265e99e454fe3adcda1d0bc5e1963 > > > > In practice the code seemed to work but it was wrong with respect to > > ABI requirements. > > > > I think the way you're saving $gp on the stack in sigsetjmp.s is also > > invalid since that part of the stack will have been clobbered by the > > time setjmp returns a second time. You could save it inside an unused > > part of the jump buffer, but it might be better to just avoid the $gp > > register and instead use temp registers and possibly some pc-relative > > address computations. > > Likewise in pipe.s, it's overly complicated by the fact that it's > saving $gp on the stack and thereby can't make a tail call to > __syscall_ret like it's intended to. If you just use a different > register instead of $gp that's call-clobbered you can tail-call just > like the 32-bit mips version. Alternatively it's possible now to write > src/unistd/mips64/pipe.c instead using inline asm and let the compiler > handle the nastiness of the calling convention. I'd be happy with > either approach; the C version is probably mildly nicer, especially if > the compiler still does the tail-call right and doesn't generate come > bloated monstrosity. (Note that you can't use C for sigsetjmp though > because it can't use the stack.) > > At this point I think I've looked through all the mips64 files at > least once and caught all the important issues. Ping. Any questions or updates on mips64? Rich