user). Therefore all registers must be written back to the
target when appropriate. */
-/* REGISTERS contains the cached register values (in target byte order). */
-
-char *deprecated_registers;
-
-/* DEPRECATED_REGISTER_VALID is 0 if the register needs to be fetched,
- 1 if it has been fetched, and
- -1 if the register value was not available.
-
- "Not available" indicates that the target is not not able to supply
- the register at this state. The register may become available at a
- later time (after the next resume). This often occures when GDB is
- manipulating a target that contains only a snapshot of the entire
- system being debugged - some of the registers in such a system may
- not have been saved. */
-
-signed char *deprecated_register_valid;
-
/* The thread/process associated with the current set of registers. */
static ptid_t registers_ptid;
int
register_cached (int regnum)
{
- return deprecated_register_valid[regnum];
+ return current_regcache->register_valid_p[regnum];
}
/* Record that REGNUM's value is cached if STATE is >0, uncached but
if (REGISTER_NAME (regnum) != NULL && *REGISTER_NAME (regnum) != '\0')
/* Force the cache to fetch the entire register. */
deprecated_read_register_gen (regnum, reg_buf);
- else
- /* Legacy note: even though this register is ``invalid'' we
- still need to return something. It would appear that some
- code relies on apparent gaps in the register array also
- being returned. */
- /* FIXME: cagney/2001-08-18: This is just silly. It defeats
- the entire register read/write flow of control. Must
- resist temptation to return 0xdeadbeef. */
- memcpy (reg_buf, &deprecated_registers[reg_start], reg_len);
/* Legacy note: This function, for some reason, allows a NULL
input buffer. If the buffer is NULL, the registers are still
}
if (!register_cached (regnum))
target_fetch_registers (regnum);
+#if 0
+ /* FIXME: cagney/2004-08-07: At present a number of targets
+ forget (or didn't know that they needed) to set this leading to
+ panics. Also is the problem that targets need to indicate
+ that a register is in one of the possible states: valid,
+ undefined, unknown. The last of which isn't yet
+ possible. */
+ gdb_assert (register_cached (regnum));
+#endif
}
/* Copy the value directly into the register cache. */
memcpy (buf, register_buffer (regcache, regnum),
Update it from the target before scribbling on it. */
deprecated_read_register_gen (regnum, regbuf);
- memcpy (&deprecated_registers[overlapstart],
- myaddr + (overlapstart - myregstart),
- overlapend - overlapstart);
-
target_store_registers (regnum);
}
}
}
-/* read_pc, write_pc, read_sp, deprecated_read_fp, etc. Special
- handling for registers PC, SP, and FP. */
+/* read_pc, write_pc, read_sp, etc. Special handling for registers
+ PC, SP, and FP. */
-/* NOTE: cagney/2001-02-18: The functions read_pc_pid(), read_pc(),
- read_sp(), and deprecated_read_fp(), will eventually be replaced by
- per-frame methods. Instead of relying on the global INFERIOR_PTID,
- they will use the contextual information provided by the FRAME.
- These functions do not belong in the register cache. */
+/* NOTE: cagney/2001-02-18: The functions read_pc_pid(), read_pc() and
+ read_sp(), will eventually be replaced by per-frame methods.
+ Instead of relying on the global INFERIOR_PTID, they will use the
+ contextual information provided by the FRAME. These functions do
+ not belong in the register cache. */
/* NOTE: cagney/2003-06-07: The functions generic_target_write_pc(),
- write_pc_pid(), write_pc(), and deprecated_read_fp(), all need to
- be replaced by something that does not rely on global state. But
- what? */
+ write_pc_pid() and write_pc(), all need to be replaced by something
+ that does not rely on global state. But what? */
CORE_ADDR
read_pc_pid (ptid_t ptid)
internal_error (__FILE__, __LINE__, "read_sp: Unable to find SP");
}
-void
-deprecated_write_sp (CORE_ADDR val)
-{
- gdb_assert (SP_REGNUM >= 0);
- write_register (SP_REGNUM, val);
-}
-
-CORE_ADDR
-deprecated_read_fp (void)
-{
- if (DEPRECATED_FP_REGNUM >= 0)
- return read_register (DEPRECATED_FP_REGNUM);
- else
- internal_error (__FILE__, __LINE__, "deprecated_read_fp");
-}
-
static void
reg_flush_command (char *command, int from_tty)
{
{
current_regcache = regcache_xmalloc (current_gdbarch);
current_regcache->readonly_p = 0;
- deprecated_registers = deprecated_grub_regcache_for_registers (current_regcache);
- deprecated_register_valid = current_regcache->register_valid_p;
}
static void
{
regcache_descr_handle = gdbarch_data_register_post_init (init_regcache_descr);
DEPRECATED_REGISTER_GDBARCH_SWAP (current_regcache);
- DEPRECATED_REGISTER_GDBARCH_SWAP (deprecated_registers);
- DEPRECATED_REGISTER_GDBARCH_SWAP (deprecated_register_valid);
deprecated_register_gdbarch_swap (NULL, 0, build_regcache);
observer_attach_target_changed (regcache_observer_target_changed);