* regcache.c, regcache.h (deprecated_register_bytes)

(deprecated_read_register_bytes)
	(deprecated_write_register_bytes): Remove.
This commit is contained in:
Mark Kettenis 2007-01-13 22:32:14 +00:00
parent 765f065a9d
commit 23303b2e52
3 changed files with 4 additions and 143 deletions

View file

@ -1,5 +1,9 @@
2007-01-13 Mark Kettenis <kettenis@gnu.org>
* regcache.c, regcache.h (deprecated_register_bytes)
(deprecated_read_register_bytes)
(deprecated_write_register_bytes): Remove.
* frame.c (get_frame_register_bytes, put_frame_register_bytes):
Don't forget to move destination pointer.

View file

@ -495,84 +495,6 @@ deprecated_registers_fetched (void)
Fetching all real regs NEVER accounts for pseudo-regs. */
}
/* deprecated_read_register_bytes and deprecated_write_register_bytes
are generally a *BAD* idea. They are inefficient because they need
to check for partial updates, which can only be done by scanning
through all of the registers and seeing if the bytes that are being
read/written fall inside of an invalid register. [The main reason
this is necessary is that register sizes can vary, so a simple
index won't suffice.] It is far better to call read_register_gen
and write_register_gen if you want to get at the raw register
contents, as it only takes a regnum as an argument, and therefore
can't do a partial register update.
Prior to the recent fixes to check for partial updates, both read
and deprecated_write_register_bytes always checked to see if any
registers were stale, and then called target_fetch_registers (-1)
to update the whole set. This caused really slowed things down for
remote targets. */
/* Copy INLEN bytes of consecutive data from registers
starting with the INREGBYTE'th byte of register data
into memory at MYADDR. */
void
deprecated_read_register_bytes (int in_start, gdb_byte *in_buf, int in_len)
{
int in_end = in_start + in_len;
int regnum;
gdb_byte reg_buf[MAX_REGISTER_SIZE];
/* See if we are trying to read bytes from out-of-date registers. If so,
update just those registers. */
for (regnum = 0; regnum < NUM_REGS + NUM_PSEUDO_REGS; regnum++)
{
int reg_start;
int reg_end;
int reg_len;
int start;
int end;
int byte;
reg_start = DEPRECATED_REGISTER_BYTE (regnum);
reg_len = register_size (current_gdbarch, regnum);
reg_end = reg_start + reg_len;
if (reg_end <= in_start || in_end <= reg_start)
/* The range the user wants to read doesn't overlap with regnum. */
continue;
if (REGISTER_NAME (regnum) != NULL && *REGISTER_NAME (regnum) != '\0')
/* Force the cache to fetch the entire register. */
deprecated_read_register_gen (regnum, reg_buf);
/* Legacy note: This function, for some reason, allows a NULL
input buffer. If the buffer is NULL, the registers are still
fetched, just the final transfer is skipped. */
if (in_buf == NULL)
continue;
/* start = max (reg_start, in_start) */
if (reg_start > in_start)
start = reg_start;
else
start = in_start;
/* end = min (reg_end, in_end) */
if (reg_end < in_end)
end = reg_end;
else
end = in_end;
/* Transfer just the bytes common to both IN_BUF and REG_BUF */
for (byte = start; byte < end; byte++)
{
in_buf[byte - in_start] = reg_buf[byte - reg_start];
}
}
}
void
regcache_raw_read (struct regcache *regcache, int regnum, gdb_byte *buf)
{
@ -787,55 +709,6 @@ regcache_cooked_write (struct regcache *regcache, int regnum,
regnum, buf);
}
/* Copy INLEN bytes of consecutive data from memory at MYADDR
into registers starting with the MYREGSTART'th byte of register data. */
void
deprecated_write_register_bytes (int myregstart, gdb_byte *myaddr, int inlen)
{
int myregend = myregstart + inlen;
int regnum;
target_prepare_to_store ();
/* Scan through the registers updating any that are covered by the
range myregstart<=>myregend using write_register_gen, which does
nice things like handling threads, and avoiding updates when the
new and old contents are the same. */
for (regnum = 0; regnum < NUM_REGS + NUM_PSEUDO_REGS; regnum++)
{
int regstart, regend;
regstart = DEPRECATED_REGISTER_BYTE (regnum);
regend = regstart + register_size (current_gdbarch, regnum);
/* Is this register completely outside the range the user is writing? */
if (myregend <= regstart || regend <= myregstart)
/* do nothing */ ;
/* Is this register completely within the range the user is writing? */
else if (myregstart <= regstart && regend <= myregend)
deprecated_write_register_gen (regnum, myaddr + (regstart - myregstart));
/* The register partially overlaps the range being written. */
else
{
gdb_byte regbuf[MAX_REGISTER_SIZE];
/* What's the overlap between this register's bytes and
those the caller wants to write? */
int overlapstart = max (regstart, myregstart);
int overlapend = min (regend, myregend);
/* We may be doing a partial update of an invalid register.
Update it from the target before scribbling on it. */
deprecated_read_register_gen (regnum, regbuf);
target_store_registers (regnum);
}
}
}
/* Perform a partial register transfer using a read, modify, write
operation. */
@ -931,14 +804,6 @@ register_offset_hack (struct gdbarch *gdbarch, int regnum)
return descr->register_offset[regnum];
}
/* Hack to keep code using register_bytes working. */
int
deprecated_register_bytes (void)
{
return current_regcache->descr->sizeof_raw_registers;
}
/* Return the contents of register REGNUM as an unsigned integer. */
ULONGEST

View file

@ -114,10 +114,6 @@ extern void regcache_raw_collect (const struct regcache *regcache,
extern int register_offset_hack (struct gdbarch *gdbarch, int regnum);
/* Similar. The total number of bytes occupied by a regcache. */
extern int deprecated_register_bytes (void );
/* The type of a register. This function is slightly more efficient
then its gdbarch vector counterpart since it returns a precomputed
@ -178,10 +174,6 @@ extern void regcache_cpy_no_passthrough (struct regcache *dest, struct regcache
extern gdb_byte *deprecated_grub_regcache_for_registers (struct regcache *);
extern void deprecated_read_register_gen (int regnum, gdb_byte *myaddr);
extern void deprecated_write_register_gen (int regnum, gdb_byte *myaddr);
extern void deprecated_read_register_bytes (int regbyte, gdb_byte *myaddr,
int len);
extern void deprecated_write_register_bytes (int regbyte, gdb_byte *myaddr,
int len);
/* NOTE: cagney/2002-11-05: This function has been superseeded by
regcache_raw_supply(). */