From owner-freebsd-ia64 Wed Nov 7 14:51: 8 2001 Delivered-To: freebsd-ia64@freebsd.org Received: from kayak.xcllnt.net (209-128-86-226.bayarea.net [209.128.86.226]) by hub.freebsd.org (Postfix) with ESMTP id 5565E37B405 for ; Wed, 7 Nov 2001 14:51:05 -0800 (PST) Received: (from marcel@localhost) by kayak.xcllnt.net (8.11.6/8.11.4) id fA7Moj110424; Wed, 7 Nov 2001 14:50:45 -0800 (PST) (envelope-from marcel) Date: Wed, 7 Nov 2001 14:50:44 -0800 From: Marcel Moolenaar To: Doug Rabson Cc: Peter Wemm , ia64@FreeBSD.ORG Subject: Re: Region usage Message-ID: <20011107145044.A10229@kayak.xcllnt.net> References: <20011107014307.A12510@dhcp01.pn.xcllnt.net> <20011107100741.Y549-100000@salmon.nlsystems.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20011107100741.Y549-100000@salmon.nlsystems.com> User-Agent: Mutt/1.3.22.1i Sender: owner-freebsd-ia64@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org On Wed, Nov 07, 2001 at 10:13:48AM +0000, Doug Rabson wrote: > > > > R0 - 32-bit applications; 4KB pages > > R1 - 64-bit applications; 8KB pages (or larger) > > R5 - VM; paged global; 8KB pages (or larger) > > R6 - uncached global; 256M pages; Id mapping > > R7 - cached global; 256M pages; Id mapping > > > Clearly IA-32 applications are limited to using R0. Yes, that's what I ment with 32-bit applications. > IA-64 32bit > applications are more flexible though. There is a choice of zero-extension > (i.e. R0 only), sign extension (i.e. R0 or R7) or 'pointer swizzling' > which uses the top two bits of the 32bit address as a region number. This > allows access to (the initial segment of) regions R0, R1, R2 and R3. Pointer swizzling is only meaningful if the ILP32 runtime uses regions as well. If we don't use multiple regions per process in the LP64 case, I don't think we have a use for swizzling. I don't see a problem with having ILP32 processes life in region 0. From another angle: The only reason to support ILP32 is for performance reasons. In that case, the overhead of pointer swizzling works against the objective. > > I see little advantage to have text, data/heap and stack be > > seperate regions, other than a nice side-effect while debugging > > (it's easy to see what an address references). The possibility > > of either of those segments taking up more than, say, 48 bits > > is very small ATM, although it's possible that I'm stuck in the > > a-couple-of-megabytes-is-large mindset and thus underestimate > > a typical "large" application. > > A truly 'large' application can always overflow into the other regions. The question is if this can be done automagically or if it requires compile-time options or even ELF object tuning (ie flags). > > I'll double-check the various ia64 conventions tomorrow to see > > how the above fits in. I have found no incompatibilities. The use of regions has been abstracted correctly. It's documented that segments are allowed to span regions (ie cross region boundaries). Multiple RRs may point to the same region as well. FYI, -- Marcel Moolenaar USPA: A-39004 marcel@xcllnt.net To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-ia64" in the body of the message