From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from pippin.tausq.org (gandalf.tausq.org [64.81.244.94]) by dsl2.external.hp.com (Postfix) with ESMTP id B4AA14831 for ; Sat, 19 Apr 2003 19:15:06 -0600 (MDT) Date: Sat, 19 Apr 2003 18:12:56 -0700 From: Randolph Chung To: parisc-linux@lists.parisc-linux.org Message-ID: <20030420011256.GC25257@tausq.org> Reply-To: Randolph Chung Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: [parisc-linux] floating point calling convention on pa Sender: parisc-linux-admin@lists.parisc-linux.org Errors-To: parisc-linux-admin@lists.parisc-linux.org List-Help: List-Post: List-Subscribe: , List-Id: parisc-linux developers list List-Unsubscribe: , List-Archive: Hi all, I'm trying to understand the FP argument passing convention on 32-bit palinux... I don't think I have it quite right. Can anyone comment on the following? 1) float-type arguments float add(float a, float b, float c, float d) a -> fr4L b -> fr5L c -> fr6L d -> fr7L retval = fr4L If >4 arguments, the rest are passed on the stack starting at sp-52 in the caller's frame 2) double-type arguments double add(double a, double b, double c, double d) a -> fr5 b -> fr7 c -> sp-56 in caller frame d -> sp-64 in caller frame retval = fr4 Is it correct that the high-order 32-bit of fr5 is in fr5L and the lower bits in fr5R? 3) What happens when you have a mix argument function? e.g. double foo(int a, float b, double c) a -> r26 b -> fr5L c -> fr7 retval = fr4 I don't quite understand the logic here :) What happens when there are more and they need to go on the stack? What's the arrangement? I've looked through the SOM 32-bit runtime but (at least to me) it doesn't talk about this very clearly. I've been experimenting with gcc -S but I'd rather get a definitive answer :) Also, for passing structures by value to functions, is this correct? a) if sizeof(struct) <= 4, pass in register b) if sizeof(struct) <= 8), pass in even-numbered register pairs c) if sizeof(struct) > 8, pass a pointer and callee will copy the structure? thanks randolph -- Randolph Chung Debian GNU/Linux Developer, hppa/ia64 ports http://www.tausq.org/