* RFA: rs6000_store_return_value: pitch deprecated_write_register_bytes
@ 2004-06-04 22:50 Jim Blandy
2004-06-04 23:11 ` Kevin Buettner
0 siblings, 1 reply; 3+ messages in thread
From: Jim Blandy @ 2004-06-04 22:50 UTC (permalink / raw)
To: gdb-patches
This removes the use of a deprecated regcache function, and stops
registering a deprecated gdbarch method.
2004-06-04 Jim Blandy <jimb@redhat.com>
* rs6000-tdep.c (rs6000_store_return_value): Use
regcache_cooked_write_part instead of
deprecated_write_register_bytes.
(rs6000_gdbarch_init): Register it for gdbarch_store_return_value,
not gdbarch_deprecated_store_return_value.
Index: gdb/rs6000-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/rs6000-tdep.c,v
retrieving revision 1.211
diff -c -p -r1.211 rs6000-tdep.c
*** gdb/rs6000-tdep.c 2 Jun 2004 03:06:23 -0000 1.211
--- gdb/rs6000-tdep.c 4 Jun 2004 22:40:18 -0000
*************** rs6000_dwarf2_reg_to_regnum (int num)
*** 1894,1931 ****
static void
! rs6000_store_return_value (struct type *type, char *valbuf)
{
! struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
/* The calling convention this function implements assumes the
processor has floating-point registers. We shouldn't be using it
on PPC variants that lack them. */
! gdb_assert (ppc_floating_point_unit_p (current_gdbarch));
if (TYPE_CODE (type) == TYPE_CODE_FLT)
-
/* Floating point values are returned starting from FPR1 and up.
Say a double_double_double type could be returned in
FPR1/FPR2/FPR3 triple. */
!
! deprecated_write_register_bytes
! (DEPRECATED_REGISTER_BYTE (tdep->ppc_fp0_regnum + 1),
! valbuf,
! TYPE_LENGTH (type));
else if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
{
if (TYPE_LENGTH (type) == 16
&& TYPE_VECTOR (type))
! deprecated_write_register_bytes (DEPRECATED_REGISTER_BYTE (tdep->ppc_vr0_regnum + 2),
! valbuf, TYPE_LENGTH (type));
}
else
/* Everything else is returned in GPR3 and up. */
! deprecated_write_register_bytes (DEPRECATED_REGISTER_BYTE (gdbarch_tdep (current_gdbarch)->ppc_gp0_regnum + 3),
! valbuf, TYPE_LENGTH (type));
}
/* Extract from an array REGBUF containing the (raw) register state
the address in which a function should return its structure value,
as a CORE_ADDR (or an expression that can be used as one). */
--- 1894,1947 ----
static void
! rs6000_store_return_value (struct type *type,
! struct regcache *regcache,
! const void *valbuf)
{
! struct gdbarch *gdbarch = get_regcache_arch (regcache);
! struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
! int regnum = -1;
/* The calling convention this function implements assumes the
processor has floating-point registers. We shouldn't be using it
on PPC variants that lack them. */
! gdb_assert (ppc_floating_point_unit_p (gdbarch));
if (TYPE_CODE (type) == TYPE_CODE_FLT)
/* Floating point values are returned starting from FPR1 and up.
Say a double_double_double type could be returned in
FPR1/FPR2/FPR3 triple. */
! regnum = tdep->ppc_fp0_regnum + 1;
else if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
{
if (TYPE_LENGTH (type) == 16
&& TYPE_VECTOR (type))
! regnum = tdep->ppc_vr0_regnum + 2;
! else
! gdb_assert (0);
}
else
/* Everything else is returned in GPR3 and up. */
! regnum = tdep->ppc_gp0_regnum + 3;
!
! {
! size_t bytes_written = 0;
!
! while (bytes_written < TYPE_LENGTH (type))
! {
! /* How much of this value can we write to this register? */
! size_t bytes_to_write = min (TYPE_LENGTH (type) - bytes_written,
! register_size (gdbarch, regnum));
! regcache_cooked_write_part (regcache, regnum,
! 0, bytes_to_write,
! (char *) valbuf + bytes_written);
! regnum++;
! bytes_written += bytes_to_write;
! }
! }
}
+
/* Extract from an array REGBUF containing the (raw) register state
the address in which a function should return its structure value,
as a CORE_ADDR (or an expression that can be used as one). */
*************** rs6000_gdbarch_init (struct gdbarch_info
*** 2885,2891 ****
else
{
set_gdbarch_deprecated_extract_return_value (gdbarch, rs6000_extract_return_value);
! set_gdbarch_deprecated_store_return_value (gdbarch, rs6000_store_return_value);
}
/* Set lr_frame_offset. */
--- 2901,2907 ----
else
{
set_gdbarch_deprecated_extract_return_value (gdbarch, rs6000_extract_return_value);
! set_gdbarch_store_return_value (gdbarch, rs6000_store_return_value);
}
/* Set lr_frame_offset. */
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: RFA: rs6000_store_return_value: pitch deprecated_write_register_bytes
2004-06-04 22:50 RFA: rs6000_store_return_value: pitch deprecated_write_register_bytes Jim Blandy
@ 2004-06-04 23:11 ` Kevin Buettner
2004-06-05 0:11 ` Jim Blandy
0 siblings, 1 reply; 3+ messages in thread
From: Kevin Buettner @ 2004-06-04 23:11 UTC (permalink / raw)
To: Jim Blandy; +Cc: gdb-patches
On 04 Jun 2004 17:50:08 -0500
Jim Blandy <jimb@redhat.com> wrote:
> 2004-06-04 Jim Blandy <jimb@redhat.com>
>
> * rs6000-tdep.c (rs6000_store_return_value): Use
> regcache_cooked_write_part instead of
> deprecated_write_register_bytes.
> (rs6000_gdbarch_init): Register it for gdbarch_store_return_value,
> not gdbarch_deprecated_store_return_value.
Okay.
Kevin
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: RFA: rs6000_store_return_value: pitch deprecated_write_register_bytes
2004-06-04 23:11 ` Kevin Buettner
@ 2004-06-05 0:11 ` Jim Blandy
0 siblings, 0 replies; 3+ messages in thread
From: Jim Blandy @ 2004-06-05 0:11 UTC (permalink / raw)
To: Kevin Buettner; +Cc: gdb-patches
Kevin Buettner <kevinb@redhat.com> writes:
> On 04 Jun 2004 17:50:08 -0500
> Jim Blandy <jimb@redhat.com> wrote:
>
> > 2004-06-04 Jim Blandy <jimb@redhat.com>
> >
> > * rs6000-tdep.c (rs6000_store_return_value): Use
> > regcache_cooked_write_part instead of
> > deprecated_write_register_bytes.
> > (rs6000_gdbarch_init): Register it for gdbarch_store_return_value,
> > not gdbarch_deprecated_store_return_value.
>
> Okay.
Committed, thanks.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2004-06-05 0:11 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-06-04 22:50 RFA: rs6000_store_return_value: pitch deprecated_write_register_bytes Jim Blandy
2004-06-04 23:11 ` Kevin Buettner
2004-06-05 0:11 ` Jim Blandy
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox