From owner-freebsd-arm@FreeBSD.ORG Mon Aug 16 21:03:59 2010 Return-Path: Delivered-To: freebsd-arm@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 06DEE10656A8 for ; Mon, 16 Aug 2010 21:03:59 +0000 (UTC) (envelope-from andrew@fubar.geek.nz) Received: from out1.smtp.messagingengine.com (out1.smtp.messagingengine.com [66.111.4.25]) by mx1.freebsd.org (Postfix) with ESMTP id 48F048FC16 for ; Mon, 16 Aug 2010 21:03:58 +0000 (UTC) Received: from compute1.internal (compute1.internal [10.202.2.41]) by gateway1.messagingengine.com (Postfix) with ESMTP id 629C94D1; Mon, 16 Aug 2010 17:03:57 -0400 (EDT) Received: from frontend1.messagingengine.com ([10.202.2.160]) by compute1.internal (MEProxy); Mon, 16 Aug 2010 17:03:57 -0400 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=messagingengine.com; h=date:from:to:cc:subject:message-id:in-reply-to:references:mime-version:content-type:content-transfer-encoding; s=smtpout; bh=r2fw4WD3g/paGE0f8AJ+1Yb3ygw=; b=NC/K0+14+/UNnoHsBDGzripSpCnt8bqZGKWoEujes6O3id6PJ0AAwXMfLBcT6cN7rEEI/It6OzkMfX2UOnNlPOoyjhYxJSq2d+z36n6ZX+RfKvo8enfKrirlY/pmcozx2BI0GqURatW7H9+BpTyFL8qbplS1m64XbgVxZTKRveY= X-Sasl-enc: +d6/UsFkEImlYWUZxe24yjSiS9mZ6Bsw9LOeEjHuDi26 1281992636 Received: from localhost (97.242.69.111.dynamic.snap.net.nz [111.69.242.97]) by mail.messagingengine.com (Postfix) with ESMTPA id B992B405EAA; Mon, 16 Aug 2010 17:03:55 -0400 (EDT) Date: Tue, 17 Aug 2010 09:03:47 +1200 From: Andrew Turner To: "M. Warner Losh" Message-ID: <20100817090347.6fdb6665@fubar.geek.nz> In-Reply-To: <20100816.102815.72112000494883288.imp@bsdimp.com> References: <1281907405.27697.19.camel@xeon.thinmesh.com> <20100815.153437.722022410199781366.imp@bsdimp.com> <20100816221321.180cf466@fubar.geek.nz> <20100816.102815.72112000494883288.imp@bsdimp.com> X-Mailer: Claws Mail 3.7.6 (GTK+ 2.20.1; i386-portbld-freebsd8.0) X-Pirate: Arrrr Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: freebsd-arm@FreeBSD.org Subject: Re: FreeBSD EABI ARM & Network boot image howto? X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the StrongARM Processor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Aug 2010 21:03:59 -0000 On Mon, 16 Aug 2010 10:28:15 -0600 (MDT) "M. Warner Losh" wrote: > In message: <20100816221321.180cf466@fubar.geek.nz> > Andrew Turner writes: > : On Sun, 15 Aug 2010 15:34:37 -0600 (MDT) > : "M. Warner Losh" wrote: > : > There was talk about NetBSD making this move too, but I don't know > : > what became of it. > : I haven't looked at if NetBSD supports it or not. My work was > mostly a : weekend hacking to prove it is possible. > : > : > I'm guessing it won't be a huge deal to make this work, just a > bunch : > of elbow grease in the syscalls... > : > : The main problem is getting a list of syscalls that need to be > changed. : I found I could boot to single user mode by only changing > stat and : fstat. I'm currently in the process of converting my hack > to using the : same method to provide 32 bit and Linux compatability > support. > > Sadly, you're going to have to step through each one and see if it > changes. On MIPS, we had to do similar things for n32/n64 support > since some syscalls it mattered for. But n32 support is by far the > weirdest ABI beast in the jungle. I have managed to find some of the structs that need a compat version. I'm also looking at what syscalls are reimplemented for freebsd32. > So we're going to have multiple image activators on ARM? Is that the > plan? Or is there some other way that you had in mind... I haven't looked in to this yet. > : We also need to decide if we follow what Linux has done where it > : changed it's syscall ABI when it moved to the EABI. They changed > from : reading the instruction from memory to get the syscall number > to : storing it in r7. The idea is to reduce the cost of the data > cache miss : as the page will be in the instruction cache. I hacked > up some code to : do the same but haven't had a chance to properly > benchmark the change : yet. > > I think this is a good change as well. The compat layer can easily > cope. Some of the code in trap.c needs to be updated for this first. > Are there other ABI issues we wish to fix at the same time? I don't know of any other ABI issues. If anyone else does I'm happy to look into them. > And will > this also help solve the funky alignment issues we've had with ARM > elsewhere in the kernel causing problems either in structure sizes or > unaligned accesses? With the EABI the alignment of structs is determined by the contents where the current ABI they are aligned to 4 bytes. The packing is different with 64 bit components. They will start on a 64 bit boundary. I've already found some issues e.g. struct stat. I haven't looked at e.g. how broken the network stack is (if at all). > Are there other implications we need to worry about? Are you going to > try to support both the current ABI and EABI in the current source > tree? I was going to support both for userland only when the kernel is built with EABI. If the kernel is built with the current ABI userland needs to also be built with it. Andrew