* config/pa/tm-hppa.h (EXTRACT_RETURN_VALUE): Rewrite to correctly
handle "short", "int" and small structures returned in registers.
This commit is contained in:
parent
1e2bb16402
commit
61fe99b477
1 changed files with 11 additions and 2 deletions
|
@ -238,8 +238,17 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||||
into VALBUF. */
|
into VALBUF. */
|
||||||
|
|
||||||
#define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \
|
#define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \
|
||||||
memcpy (VALBUF, (REGBUF) + REGISTER_BYTE(TYPE_LENGTH(TYPE) > 4 ? \
|
{ \
|
||||||
FP4_REGNUM :28), TYPE_LENGTH (TYPE))
|
if (TYPE_CODE (TYPE) == TYPE_CODE_FLT) \
|
||||||
|
memcpy ((VALBUF), \
|
||||||
|
((int *)(REGBUF)) + REGISTER_BYTE (FP4_REGNUM), \
|
||||||
|
TYPE_LENGTH (TYPE)); \
|
||||||
|
else \
|
||||||
|
memcpy ((VALBUF), \
|
||||||
|
(char *)(REGBUF) + REGISTER_BYTE (28) + \
|
||||||
|
(TYPE_LENGTH (TYPE) >= 4 ? 0 : 4 - TYPE_LENGTH (TYPE)), \
|
||||||
|
TYPE_LENGTH (TYPE)); \
|
||||||
|
}
|
||||||
|
|
||||||
/* Write into appropriate registers a function return value
|
/* Write into appropriate registers a function return value
|
||||||
of type TYPE, given in virtual format. */
|
of type TYPE, given in virtual format. */
|
||||||
|
|
Loading…
Add table
Reference in a new issue