2005-11-23 Andrew Stubbs <andrew.stubbs@st.com>

* sh-tdep.c (do_fv_register_info, do_dr_register_info): Delete function.
	(do_bank_register_info, do_bank_register_info): Likewise.
	(sh_print_pseudo_register, sh_do_fp_register): Likewise.
	(sh_do_register, sh_print_register, sh_print_registers_info): Likewise.
	(sh_gdbarch_init): Remove call to set_gdbarch_print_registers_info().
This commit is contained in:
Andrew Stubbs 2005-11-23 16:30:36 +00:00
parent bad36eacda
commit 7db8399e73
2 changed files with 8 additions and 180 deletions

View File

@ -1,3 +1,11 @@
2005-11-23 Andrew Stubbs <andrew.stubbs@st.com>
* sh-tdep.c (do_fv_register_info, do_dr_register_info): Delete function.
(do_bank_register_info, do_bank_register_info): Likewise.
(sh_print_pseudo_register, sh_do_fp_register): Likewise.
(sh_do_register, sh_print_register, sh_print_registers_info): Likewise.
(sh_gdbarch_init): Remove call to set_gdbarch_print_registers_info().
2005-11-22 Joel Brobecker <brobecker@adacore.com>
* top.c (print_gdb_version): Update copyright year.

View File

@ -1974,184 +1974,6 @@ sh_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache,
}
}
/* Floating point vector of 4 float registers. */
static void
do_fv_register_info (struct gdbarch *gdbarch, struct ui_file *file,
int fv_regnum)
{
int first_fp_reg_num = fv_reg_base_num (fv_regnum);
fprintf_filtered (file, "fv%d\t0x%08x\t0x%08x\t0x%08x\t0x%08x\n",
fv_regnum - FV0_REGNUM,
(int) read_register (first_fp_reg_num),
(int) read_register (first_fp_reg_num + 1),
(int) read_register (first_fp_reg_num + 2),
(int) read_register (first_fp_reg_num + 3));
}
/* Double precision registers. */
static void
do_dr_register_info (struct gdbarch *gdbarch, struct ui_file *file,
int dr_regnum)
{
int first_fp_reg_num = dr_reg_base_num (dr_regnum);
fprintf_filtered (file, "dr%d\t0x%08x%08x\n",
dr_regnum - DR0_REGNUM,
(int) read_register (first_fp_reg_num),
(int) read_register (first_fp_reg_num + 1));
}
static void
do_bank_register_info (struct gdbarch *gdbarch, struct ui_file *file)
{
fprintf_filtered (file, "bank %d\n",
(int) read_register (BANK_REGNUM));
}
static void
sh_print_pseudo_register (struct gdbarch *gdbarch, struct ui_file *file,
int regnum)
{
if (regnum < NUM_REGS || regnum >= NUM_REGS + NUM_PSEUDO_REGS)
internal_error (__FILE__, __LINE__,
_("Invalid pseudo register number %d\n"), regnum);
else if (regnum == PSEUDO_BANK_REGNUM)
do_bank_register_info (gdbarch, file);
else if (regnum >= DR0_REGNUM && regnum <= DR_LAST_REGNUM)
do_dr_register_info (gdbarch, file, regnum);
else if (regnum >= FV0_REGNUM && regnum <= FV_LAST_REGNUM)
do_fv_register_info (gdbarch, file, regnum);
}
static void
sh_do_fp_register (struct gdbarch *gdbarch, struct ui_file *file, int regnum)
{ /* do values for FP (float) regs */
char *raw_buffer;
double flt; /* double extracted from raw hex data */
int inv;
int j;
/* Allocate space for the float. */
raw_buffer = (char *) alloca (register_size (gdbarch, FP0_REGNUM));
/* Get the data in raw format. */
if (!frame_register_read (get_selected_frame (NULL), regnum, raw_buffer))
error (_("can't read register %d (%s)"), regnum, REGISTER_NAME (regnum));
/* Get the register as a number */
flt = unpack_double (builtin_type_float, raw_buffer, &inv);
/* Print the name and some spaces. */
fputs_filtered (REGISTER_NAME (regnum), file);
print_spaces_filtered (15 - strlen (REGISTER_NAME (regnum)), file);
/* Print the value. */
if (inv)
fprintf_filtered (file, "<invalid float>");
else
fprintf_filtered (file, "%-10.9g", flt);
/* Print the fp register as hex. */
fprintf_filtered (file, "\t(raw 0x");
for (j = 0; j < register_size (gdbarch, regnum); j++)
{
int idx = (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG
? j
: register_size (gdbarch, regnum) - 1 - j);
fprintf_filtered (file, "%02x", (unsigned char) raw_buffer[idx]);
}
fprintf_filtered (file, ")");
fprintf_filtered (file, "\n");
}
static void
sh_do_register (struct gdbarch *gdbarch, struct ui_file *file, int regnum)
{
char raw_buffer[MAX_REGISTER_SIZE];
fputs_filtered (REGISTER_NAME (regnum), file);
print_spaces_filtered (15 - strlen (REGISTER_NAME (regnum)), file);
/* Get the data in raw format. */
if (!frame_register_read (get_selected_frame (NULL), regnum, raw_buffer))
fprintf_filtered (file, "*value not available*\n");
val_print (gdbarch_register_type (gdbarch, regnum), raw_buffer, 0, 0,
file, 'x', 1, 0, Val_pretty_default);
fprintf_filtered (file, "\t");
val_print (gdbarch_register_type (gdbarch, regnum), raw_buffer, 0, 0,
file, 0, 1, 0, Val_pretty_default);
fprintf_filtered (file, "\n");
}
static void
sh_print_register (struct gdbarch *gdbarch, struct ui_file *file, int regnum)
{
if (regnum < 0 || regnum >= NUM_REGS + NUM_PSEUDO_REGS)
internal_error (__FILE__, __LINE__,
_("Invalid register number %d\n"), regnum);
else if (regnum >= 0 && regnum < NUM_REGS)
{
if (TYPE_CODE (gdbarch_register_type (gdbarch, regnum)) ==
TYPE_CODE_FLT)
sh_do_fp_register (gdbarch, file, regnum); /* FP regs */
else
sh_do_register (gdbarch, file, regnum); /* All other regs */
}
else if (regnum < NUM_REGS + NUM_PSEUDO_REGS)
{
sh_print_pseudo_register (gdbarch, file, regnum);
}
}
static void
sh_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file,
struct frame_info *frame, int regnum, int fpregs)
{
if (regnum != -1) /* do one specified register */
{
if (*(REGISTER_NAME (regnum)) == '\0')
error (_("Not a valid register for the current processor type"));
sh_print_register (gdbarch, file, regnum);
}
else
/* do all (or most) registers */
{
for (regnum = 0; regnum < NUM_REGS; ++regnum)
{
/* If the register name is empty, it is undefined for this
processor, so don't display anything. */
if (REGISTER_NAME (regnum) == NULL
|| *(REGISTER_NAME (regnum)) == '\0')
continue;
if (TYPE_CODE (gdbarch_register_type (gdbarch, regnum)) ==
TYPE_CODE_FLT)
{
/* true for "INFO ALL-REGISTERS" command */
if (fpregs)
sh_do_fp_register (gdbarch, file, regnum); /* FP regs */
}
else
sh_do_register (gdbarch, file, regnum); /* All other regs */
}
if (regnum == PSEUDO_BANK_REGNUM
&& REGISTER_NAME (regnum)
&& *REGISTER_NAME (regnum))
sh_print_pseudo_register (gdbarch, file, regnum++);
if (fpregs)
while (regnum < NUM_REGS + NUM_PSEUDO_REGS)
{
sh_print_pseudo_register (gdbarch, file, regnum);
regnum++;
}
}
}
static int
sh_dsp_register_sim_regno (int nr)
{
@ -2550,8 +2372,6 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_register_type (gdbarch, sh_default_register_type);
set_gdbarch_print_registers_info (gdbarch, sh_print_registers_info);
set_gdbarch_breakpoint_from_pc (gdbarch, sh_breakpoint_from_pc);
set_gdbarch_print_insn (gdbarch, gdb_print_insn_sh);