static void validate_inferior_registers(int regno)
{
  int i;
  if (regno == -1) {
      for ((i = 0); (i < NUM_GREGS); i++) {
          if (!register_cached(i)) {
            fetch_inferior_registers(i);
          }
      }
      if (!register_cached(ARM_PS_REGNUM)) {
	fetch_inferior_registers(ARM_PS_REGNUM);
      }
  } else if (!register_cached(regno)) {
      fetch_inferior_registers(regno);
  }
}
示例#2
0
static void
validate_inferior_registers (int regno)
{
  int i;
  if (regno == -1)
    {
      for (i = 0; i < NUM_REGS; i++)
        {
          if (!register_cached (i))
            fetch_inferior_registers (i);
        }
    }
  else if (!register_cached (regno))
    {
      fetch_inferior_registers (regno);
    }
}
示例#3
0
/* Get the register value from the given frame and format it for
   the display.  When changep is set, check if the new register value
   has changed with respect to the previous call.  */
static enum tui_status
tui_get_register (struct gdbarch *gdbarch, struct frame_info *frame,
                  struct tui_data_element *data, int regnum, int *changedp)
{
    enum tui_status ret = TUI_FAILURE;

    if (changedp)
        *changedp = FALSE;
    if (target_has_registers)
    {
        gdb_byte buf[MAX_REGISTER_SIZE];

        get_frame_register (frame, regnum, buf);
        /* NOTE: cagney/2003-03-13: This is bogus.  It is refering to
           the register cache and not the frame which could have pulled
           the register value off the stack.  */
        if (register_cached (regnum) >= 0)
        {
            if (changedp)
            {
                int size = register_size (gdbarch, regnum);
                char *old = (char*) data->value;
                int i;

                for (i = 0; i < size; i++)
                    if (buf[i] != old[i])
                    {
                        *changedp = TRUE;
                        old[i] = buf[i];
                    }
            }

            /* Reformat the data content if the value changed.  */
            if (changedp == 0 || *changedp == TRUE)
                tui_register_format (gdbarch, frame, data, regnum);
            ret = TUI_SUCCESS;
        }
    }
    return ret;
}