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:
parent
bad36eacda
commit
7db8399e73
@ -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.
|
||||
|
180
gdb/sh-tdep.c
180
gdb/sh-tdep.c
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user