This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [patch]: fix argument passing on S/390 and S/390x
- From: Jim Blandy <jimb at redhat dot com>
- To: gdb-patches at sources dot redhat dot com
- Date: 30 Jun 2003 19:13:57 -0500
- Subject: Re: [patch]: fix argument passing on S/390 and S/390x
- References: <vt27k732jrd.fsf@zenia.home>
I've committed this to the 6.0 release branch, too.
Jim Blandy <jimb@redhat.com> writes:
> This is a patch that was discussed and approved long ago; only
> recently has the legal paperwork finally come through.
>
> 2003-06-30 Jim Blandy <jimb@redhat.com>
>
> Patch from IBM (authors unspecified, probably Ulrich Weigand and
> Gerhard Tonn) for argument passing on the S/390 and S/390x:
> * s390-tdep.c (S390_STACK_FRAME_OVERHEAD): This is always space
> for 16 registers, and then 32 more bytes.
> (S390_STACK_PARAMETER_ALIGNMENT, S390_NUM_FP_PARAMETER_REGISTERS):
> New macros.
> (is_double_arg): The s390x doesn't handle DOUBLE_ARGS specially.
> Move up in the file, since it's now used by is_simple_arg.
> (is_simple_arg): Don't assume registers are four bytes long.
> Exclude all double arguments. Extended floats are not simple
> args.
> (is_power_of_two): New function.
> (pass_by_copy_ref): Call is_power_of_two, and check that the
> length fits in a register, rather than listing all the acceptable
> sizes. Extended floats are not passed by reference.
> (s390_push_arguments): Don't assume registers are four bytes long.
> Reserve an argument register to point to the buffer for structures
> returned by value. Use S390_NUM_FP_PARAMETER_REGISTERS and
> S390_STACK_FRAME_OVERHEAD.