1
2
3
4
5
6
7
8
9
10
11
|
1
2
3
4
5
6
7
8
9
10
11
|
-
+
|
/* vacall function for sparc CPU */
/*
* Copyright 1995-2004 Bruno Haible, <bruno@clisp.org>
* Copyright 1995-2005 Bruno Haible, <bruno@clisp.org>
*
* This is free software distributed under the GNU General Public Licence
* described in the file COPYING. Contact the author if you don't have this
* or can't live with it. There is ABSOLUTELY NO WARRANTY, explicit or implied,
* on this software.
*/
|
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
-
+
|
if (list.rtype == __VAdouble) {
dret = list.tmp._double;
} else
if (list.rtype == __VAvoidp) {
iret = (long)list.tmp._ptr;
} else
if (list.rtype == __VAstruct) {
if (list.flags & (__VA_SUNCC_STRUCT_RETURN | __VA_SUNPROCC_STRUCT_RETURN)) {
if (list.flags & __VA_SUNPROCC_STRUCT_RETURN) {
/* Sun cc struct return convention. */
/* The desired struct return address was passed in fp[16], later on
* list.raddr = list.structraddr = fp[16]. Now the result has
* already been copied there. No need to copy the result once more.
* The caller expects to receive the struct return address in %o0.
*/
iret = (long) list.raddr;
|