* mips-tdep.c (mips_eabi_push_dummy_call): When pushing floating

point arguments, test explicitly for use of the EABI32 ABI
	instead of inferring this condition from tests on register
	sizes.
This commit is contained in:
Kevin Buettner 2007-05-03 17:51:19 +00:00
parent 2219d63c86
commit 6da397e0eb
2 changed files with 13 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2007-05-03 Kevin Buettner <kevinb@redhat.com>
* mips-tdep.c (mips_eabi_push_dummy_call): When pushing floating
point arguments, test explicitly for use of the EABI32 ABI
instead of inferring this condition from tests on register
sizes.
2007-05-03 Kevin Buettner <kevinb@redhat.com>
* breakpoint.c (set_raw_breakpoint): Adjust breakpoint's address

View File

@ -2507,7 +2507,12 @@ mips_eabi_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
if (fp_register_arg_p (typecode, arg_type)
&& float_argreg <= MIPS_LAST_FP_ARG_REGNUM)
{
if (register_size (gdbarch, float_argreg) < 8 && len == 8)
/* EABI32 will pass doubles in consecutive registers, even on
64-bit cores. At one time, we used to check the size of
`float_argreg' to determine whether or not to pass doubles
in consecutive registers, but this is not sufficient for
making the ABI determination. */
if (len == 8 && mips_abi (gdbarch) == MIPS_ABI_EABI32)
{
int low_offset = TARGET_BYTE_ORDER == BFD_ENDIAN_BIG ? 4 : 0;
unsigned long regval;