From owner-svn-src-head@FreeBSD.ORG Mon Apr 9 08:03:56 2012 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 59DE0106566C for ; Mon, 9 Apr 2012 08:03:55 +0000 (UTC) (envelope-from juli@clockworksquid.com) Received: from mail-wi0-f178.google.com (mail-wi0-f178.google.com [209.85.212.178]) by mx1.freebsd.org (Postfix) with ESMTP id EFDB38FC0A for ; Mon, 9 Apr 2012 08:03:54 +0000 (UTC) Received: by wibhq7 with SMTP id hq7so1896619wib.13 for ; Mon, 09 Apr 2012 01:03:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date :x-google-sender-auth:message-id:subject:to:cc:content-type :x-gm-message-state; bh=H3jVMCpYxye71jynD4ObjbohkaSCmRoMKgDTvVreLlc=; b=RDq5eVWNLiuUPGfQJKgw94tAapypsfZxL3TgUiT6/f7ML2UbCZehypsiWW/3rV2SA0 g28OjIYNvDEQeIU7QBVUS22f23E976U8t8dHkD6xedbTiDakQNAi3ghRqEYAc3R+wNOF tmq3t4hCvs8yr9NDMljhI/+f6kNYGlL7N0gon7T7T6h1KgurtsuUDSt9aWK9JHcKdRsh tjqICSWrZgkB/kIQWETKTLmFSOHV4Rygy5vr2uOl7HHxG6iIrJQ9BbWmZAlIfj9KnRLo ifaO4f/jA6KB54uWM58q01Nz/esThmGVJSmjYbKq4OnDAuUsHUuUKC/RYd4lUz29D2Ov BbBQ== Received: by 10.180.92.71 with SMTP id ck7mr13951064wib.21.1333958629755; Mon, 09 Apr 2012 01:03:49 -0700 (PDT) MIME-Version: 1.0 Sender: juli@clockworksquid.com Received: by 10.180.86.37 with HTTP; Mon, 9 Apr 2012 01:03:15 -0700 (PDT) In-Reply-To: <20120409161453.29d1f3de@fubar.geek.nz> References: <201204080436.q384aRXS093116@svn.freebsd.org> <20120408164521.55aecdd1@fubar.geek.nz> <20120409161453.29d1f3de@fubar.geek.nz> From: Juli Mallett Date: Mon, 9 Apr 2012 01:03:15 -0700 X-Google-Sender-Auth: esO6JCsP2DvxxA_JFakzZ7lr5wY Message-ID: To: Andrew Turner Content-Type: text/plain; charset=UTF-8 X-Gm-Message-State: ALoCoQkbeEYu3ESgR+BlE6w55AgLQ3r7BjjDJrVxkVdird2Wx0JogtENzTBGyNYZpo74Ajx232Rf Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r234014 - head/lib/libc/arm/gen X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Apr 2012 08:03:56 -0000 On Sun, Apr 8, 2012 at 21:14, Andrew Turner wrote: > We can implement it as a naked function but we will need to store all > registers other than r0 and pc which seems a waste. > > The problem implementing it in an assembly file is we are unable to use > ARM_TP_ADDRESS is defined as: > #define ARM_TP_ADDRESS (ARM_VECTORS_HIGH + 0x1000) > > Where ARM_VECTORS_HIGH is defined as: > #define ARM_VECTORS_HIGH 0xffff0000U > > I could remove the U from ARM_VECTORS_HIGH however I'm not sure on the > implications of that change. Oh, is that all? :) It's easy to have an ifdef that adds the u suffix in C and not in assembly. That's perfectly appropriate in this case. If you want to be fancy you can use a macro which adds the U to the constant in C and not in assembly, and use it in other places, but that's usually unnecessary. In the kernel we sometimes use assym to get around this sort of thing, but that's fully unnecessary. Look at powerpc/include/vmparam.h for an example of a header where we do this currently (VM_MAXUSER_ADDRESS specifically.) This is the right thing to do by far over using C as a wrapper for assembly in this way. >> How do you know GCC won't allocate r2 to be used as a temporary in >> between the assembly and the return? > > The compiler is free to use r2 with the current code. I have attached a > patch that fools the compiler into thinking we are using r1-r3 by > placing them in the clobber list. If this file is ever compiled with the correct ABI, then, it will do excessive saves and restores of r1-r3, I think.