From: Randolph Chung <randolph@tausq.org>
To: parisc-linux@lists.parisc-linux.org
Subject: [parisc-linux] floating point calling convention on pa
Date: Sat, 19 Apr 2003 18:12:56 -0700 [thread overview]
Message-ID: <20030420011256.GC25257@tausq.org> (raw)
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/
next reply other threads:[~2003-04-20 1:15 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-04-20 1:12 Randolph Chung [this message]
2003-04-20 1:49 ` [parisc-linux] floating point calling convention on pa John David Anglin
2003-04-20 6:40 ` Randolph Chung
2003-04-20 13:41 ` Matthew Wilcox
2003-04-20 16:20 ` John David Anglin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20030420011256.GC25257@tausq.org \
--to=randolph@tausq.org \
--cc=parisc-linux@lists.parisc-linux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.