* tm-hppa.h (STORE_RETURN_VALUE): Fix to work with -msoft-float
calling conventions too. Use the TYPE of the return value, not its length to determine if it should also be copied into the floating point registers.
This commit is contained in:
parent
7e72b115ad
commit
90df364f49
2 changed files with 16 additions and 3 deletions
|
@ -1,5 +1,10 @@
|
|||
Tue Aug 22 02:00:47 1995 Jeff Law (law@snake.cs.utah.edu)
|
||||
|
||||
* tm-hppa.h (STORE_RETURN_VALUE): Fix to work with -msoft-float
|
||||
calling conventions too. Use the TYPE of the return value, not
|
||||
its length to determine if it should also be copied into the
|
||||
floating point registers.
|
||||
|
||||
* tm-hppa.h (PROLOGUE_FIRSTLINE_OVERLAP): Delete. Causes more
|
||||
problems than it fixes.
|
||||
* hppa-tdep.c (skip_prologue): If we exit the main loop without
|
||||
|
|
|
@ -258,7 +258,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
|||
|
||||
/* Extract from an array REGBUF containing the (raw) register state
|
||||
a function return value of type TYPE, and copy that, in virtual format,
|
||||
into VALBUF. */
|
||||
into VALBUF.
|
||||
|
||||
FIXME: Not sure what to do for soft float here. */
|
||||
|
||||
#define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \
|
||||
{ \
|
||||
|
@ -274,10 +276,16 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
|||
}
|
||||
|
||||
/* Write into appropriate registers a function return value
|
||||
of type TYPE, given in virtual format. */
|
||||
of type TYPE, given in virtual format.
|
||||
|
||||
For software floating point the return value goes into the integer
|
||||
registers. But we don't have any flag to key this on, so we always
|
||||
store the value into the integer registers, and if it's a float value,
|
||||
then we put it in the float registers too. */
|
||||
|
||||
#define STORE_RETURN_VALUE(TYPE,VALBUF) \
|
||||
write_register_bytes ((TYPE_LENGTH(TYPE) > 4 \
|
||||
write_register_bytes (REGISTER_BYTE (28),(VALBUF), TYPE_LENGTH (TYPE)) ; \
|
||||
write_register_bytes ((TYPE_CODE(TYPE) == TYPE_CODE_FLT \
|
||||
? REGISTER_BYTE (FP4_REGNUM) \
|
||||
: REGISTER_BYTE (28)), \
|
||||
(VALBUF), TYPE_LENGTH (TYPE))
|
||||
|
|
Loading…
Reference in a new issue