From owner-freebsd-current@FreeBSD.ORG Fri Sep 7 07:11:59 2007 Return-Path: Delivered-To: current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 45DE316A417 for ; Fri, 7 Sep 2007 07:11:59 +0000 (UTC) (envelope-from rizzo@icir.org) Received: from xorpc.icir.org (xorpc.icir.org [192.150.187.68]) by mx1.freebsd.org (Postfix) with ESMTP id 2603213C49D for ; Fri, 7 Sep 2007 07:11:59 +0000 (UTC) (envelope-from rizzo@icir.org) Received: from xorpc.icir.org (localhost [127.0.0.1]) by xorpc.icir.org (8.12.11/8.13.6) with ESMTP id l8779odJ091235; Fri, 7 Sep 2007 00:09:50 -0700 (PDT) (envelope-from rizzo@xorpc.icir.org) Received: (from rizzo@localhost) by xorpc.icir.org (8.12.11/8.12.3/Submit) id l8779o1Q091234; Fri, 7 Sep 2007 00:09:50 -0700 (PDT) (envelope-from rizzo) Date: Fri, 7 Sep 2007 00:09:50 -0700 From: Luigi Rizzo To: Giorgos Keramidas Message-ID: <20070907000950.A91211@xorpc.icir.org> References: <20070906111028.A83649@xorpc.icir.org> <20070906222647.GB2737@kobe.laptop> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5.1i In-Reply-To: <20070906222647.GB2737@kobe.laptop>; from keramida@ceid.upatras.gr on Fri, Sep 07, 2007 at 01:26:47AM +0300 Cc: current@freebsd.org Subject: Re: how to tell 64 vs 32 bit architecture ? X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 07 Sep 2007 07:11:59 -0000 On Fri, Sep 07, 2007 at 01:26:47AM +0300, Giorgos Keramidas wrote: > On 2007-09-06 11:10, Luigi Rizzo wrote: > > hi, > > i was wondering what is the proper way to tell a 64 vs 32 bit > > architecture. > > > > I see that some code in sys/ uses ' #ifdef __LP64__ ' but i am not > > sure if this is generic enough (ie not gcc or FreeBSD specific), > > and also suitable for userland (i.e. works on linux or other platforms > > as well). > > This is usually needed to differentiate between a feature "X" which > behaves differently in amd64 vs. i386 vs. sparc vs. sparc64, etc. i am actually looking at pointer sizes, as i need to do some pointer manipulation going through intptr_t, and need to know that in the preprocessor because some constants need to be 32 or 64 bit depending on that, and are not trivial (i.e. not 0, 1 or something i can build with size-agnostic expressions) cheers luigi