* sh-tdep.h (struct gdbarch_tdep): Remove. Change all register
numbers to enumeration values. * sh-tdep.c: Accomodate above change. (SH_NUM_REGS): Rename from SH_DEFAULT_NUM_REGS. (NUM_PSEUDO_REGS_SH_MEDIA): Remove (sh5 only). (NUM_PSEUDO_REGS_SH_COMPACT): Remove (sh5 only). (IS_ADD_IMM_SP): Rename from IS_ADD_SP. (IS_FPUSH): Rename from IS_FMOV. (sh_extract_struct_value_address): Remove useless comment. (sh_dsp_register_sim_regno): Use register values from sh-tdep.h instead of own local values. (sh_dump_tdep): Remove. (_initialize_sh_tdep): Accomodate removing sh_dump_tdep. * sh3-rom.c (sh3_supply_register): Accomodate sh-tdep.h changes.
This commit is contained in:
parent
34f4a11319
commit
f2ea0907de
4 changed files with 168 additions and 294 deletions
|
@ -1,3 +1,20 @@
|
|||
2003-09-16 Corinna Vinschen <vinschen@redhat.com>
|
||||
|
||||
* sh-tdep.h (struct gdbarch_tdep): Remove. Change all register
|
||||
numbers to enumeration values.
|
||||
* sh-tdep.c: Accomodate above change.
|
||||
(SH_NUM_REGS): Rename from SH_DEFAULT_NUM_REGS.
|
||||
(NUM_PSEUDO_REGS_SH_MEDIA): Remove (sh5 only).
|
||||
(NUM_PSEUDO_REGS_SH_COMPACT): Remove (sh5 only).
|
||||
(IS_ADD_IMM_SP): Rename from IS_ADD_SP.
|
||||
(IS_FPUSH): Rename from IS_FMOV.
|
||||
(sh_extract_struct_value_address): Remove useless comment.
|
||||
(sh_dsp_register_sim_regno): Use register values from sh-tdep.h
|
||||
instead of own local values.
|
||||
(sh_dump_tdep): Remove.
|
||||
(_initialize_sh_tdep): Accomodate removing sh_dump_tdep.
|
||||
* sh3-rom.c (sh3_supply_register): Accomodate sh-tdep.h changes.
|
||||
|
||||
2003-09-15 Andrew Cagney <cagney@redhat.com>
|
||||
|
||||
* doublest.c (convert_floatformat_to_doublest): No longer need to
|
||||
|
|
376
gdb/sh-tdep.c
376
gdb/sh-tdep.c
|
@ -53,7 +53,7 @@
|
|||
|
||||
static void (*sh_show_regs) (void);
|
||||
|
||||
#define SH_DEFAULT_NUM_REGS 59
|
||||
#define SH_NUM_REGS 59
|
||||
|
||||
/* Define other aspects of the stack frame.
|
||||
we keep a copy of the worked out return pc lying around, since it
|
||||
|
@ -256,9 +256,6 @@ sh_sh4_register_name (int reg_nr)
|
|||
return register_names[reg_nr];
|
||||
}
|
||||
|
||||
#define NUM_PSEUDO_REGS_SH_MEDIA 80
|
||||
#define NUM_PSEUDO_REGS_SH_COMPACT 51
|
||||
|
||||
static const unsigned char *
|
||||
sh_breakpoint_from_pc (CORE_ADDR *pcptr, int *lenptr)
|
||||
{
|
||||
|
@ -325,7 +322,7 @@ sh_push_dummy_code (struct gdbarch *gdbarch,
|
|||
|
||||
/* ADD #imm,r15 01111111iiiiiiii
|
||||
r15+imm-->r15 */
|
||||
#define IS_ADD_SP(x) (((x) & 0xff00) == 0x7f00)
|
||||
#define IS_ADD_IMM_SP(x) (((x) & 0xff00) == 0x7f00)
|
||||
|
||||
#define IS_MOV_R3(x) (((x) & 0xff00) == 0x1a00)
|
||||
#define IS_SHLL_R3(x) ((x) == 0x4300)
|
||||
|
@ -337,7 +334,9 @@ sh_push_dummy_code (struct gdbarch *gdbarch,
|
|||
/* FMOV.S FRm,@-Rn Rn-4-->Rn, FRm-->(Rn) 1111nnnnmmmm1011
|
||||
FMOV DRm,@-Rn Rn-8-->Rn, DRm-->(Rn) 1111nnnnmmm01011
|
||||
FMOV XDm,@-Rn Rn-8-->Rn, XDm-->(Rn) 1111nnnnmmm11011 */
|
||||
#define IS_FMOV(x) (((x) & 0xf00f) == 0xf00b)
|
||||
/* CV, 2003-08-28: Only suitable with Rn == SP, therefore name changed to
|
||||
make this entirely clear. */
|
||||
#define IS_FPUSH(x) (((x) & 0xf00f) == 0xf00b)
|
||||
|
||||
/* MOV Rm,Rn Rm-->Rn 0110nnnnmmmm0011
|
||||
MOV.L Rm,@(disp,Rn) Rm-->(dispx4+Rn) 0001nnnnmmmmdddd
|
||||
|
@ -401,8 +400,8 @@ sh_skip_prologue_hard_way (CORE_ADDR start_pc)
|
|||
{
|
||||
int w = read_memory_integer (here, 2);
|
||||
here += 2;
|
||||
if (IS_FMOV (w) || IS_PUSH (w) || IS_STS (w) || IS_MOV_R3 (w)
|
||||
|| IS_ADD_R3SP (w) || IS_ADD_SP (w) || IS_SHLL_R3 (w)
|
||||
if (IS_FPUSH (w) || IS_PUSH (w) || IS_STS (w) || IS_MOV_R3 (w)
|
||||
|| IS_ADD_R3SP (w) || IS_ADD_IMM_SP (w) || IS_SHLL_R3 (w)
|
||||
|| IS_ARG_MOV (w) || IS_MOV_TO_R14 (w))
|
||||
{
|
||||
start_pc = here;
|
||||
|
@ -536,7 +535,7 @@ sh_nofp_frame_init_saved_regs (struct frame_info *fi)
|
|||
int depth;
|
||||
int pc;
|
||||
int opc;
|
||||
int insn;
|
||||
int inst;
|
||||
int r3_val = 0;
|
||||
char *dummy_regs = deprecated_generic_find_dummy_frame (get_frame_pc (fi),
|
||||
get_frame_base (fi));
|
||||
|
@ -563,7 +562,7 @@ sh_nofp_frame_init_saved_regs (struct frame_info *fi)
|
|||
|
||||
depth = 0;
|
||||
|
||||
/* Loop around examining the prologue insns until we find something
|
||||
/* Loop around examining the prologue inst until we find something
|
||||
that does not appear to be part of the prologue. But give up
|
||||
after 20 of them, since we're getting silly then. */
|
||||
|
||||
|
@ -576,38 +575,38 @@ sh_nofp_frame_init_saved_regs (struct frame_info *fi)
|
|||
|
||||
for (opc = pc + (2 * 28); pc < opc; pc += 2)
|
||||
{
|
||||
insn = read_memory_integer (pc, 2);
|
||||
inst = read_memory_integer (pc, 2);
|
||||
/* See where the registers will be saved to */
|
||||
if (IS_PUSH (insn))
|
||||
if (IS_PUSH (inst))
|
||||
{
|
||||
rn = GET_PUSHED_REG (insn);
|
||||
rn = GET_PUSHED_REG (inst);
|
||||
where[rn] = depth;
|
||||
depth += 4;
|
||||
}
|
||||
else if (IS_STS (insn))
|
||||
else if (IS_STS (inst))
|
||||
{
|
||||
where[PR_REGNUM] = depth;
|
||||
/* If we're storing the pr then this isn't a leaf */
|
||||
get_frame_extra_info (fi)->leaf_function = 0;
|
||||
depth += 4;
|
||||
}
|
||||
else if (IS_MOV_R3 (insn))
|
||||
else if (IS_MOV_R3 (inst))
|
||||
{
|
||||
r3_val = ((insn & 0xff) ^ 0x80) - 0x80;
|
||||
r3_val = ((inst & 0xff) ^ 0x80) - 0x80;
|
||||
}
|
||||
else if (IS_SHLL_R3 (insn))
|
||||
else if (IS_SHLL_R3 (inst))
|
||||
{
|
||||
r3_val <<= 1;
|
||||
}
|
||||
else if (IS_ADD_R3SP (insn))
|
||||
else if (IS_ADD_R3SP (inst))
|
||||
{
|
||||
depth += -r3_val;
|
||||
}
|
||||
else if (IS_ADD_SP (insn))
|
||||
else if (IS_ADD_IMM_SP (inst))
|
||||
{
|
||||
depth -= ((insn & 0xff) ^ 0x80) - 0x80;
|
||||
depth -= ((inst & 0xff) ^ 0x80) - 0x80;
|
||||
}
|
||||
else if (IS_MOV_SP_FP (insn))
|
||||
else if (IS_MOV_SP_FP (inst))
|
||||
break;
|
||||
#if 0 /* This used to just stop when it found an instruction that
|
||||
was not considered part of the prologue. Now, we just
|
||||
|
@ -655,7 +654,7 @@ fv_reg_base_num (int fv_regnum)
|
|||
int fp_regnum;
|
||||
|
||||
fp_regnum = FP0_REGNUM +
|
||||
(fv_regnum - gdbarch_tdep (current_gdbarch)->FV0_REGNUM) * 4;
|
||||
(fv_regnum - FV0_REGNUM) * 4;
|
||||
return fp_regnum;
|
||||
}
|
||||
|
||||
|
@ -666,7 +665,7 @@ dr_reg_base_num (int dr_regnum)
|
|||
int fp_regnum;
|
||||
|
||||
fp_regnum = FP0_REGNUM +
|
||||
(dr_regnum - gdbarch_tdep (current_gdbarch)->DR0_REGNUM) * 2;
|
||||
(dr_regnum - DR0_REGNUM) * 2;
|
||||
return fp_regnum;
|
||||
}
|
||||
|
||||
|
@ -679,10 +678,9 @@ sh_fp_frame_init_saved_regs (struct frame_info *fi)
|
|||
int depth;
|
||||
int pc;
|
||||
int opc;
|
||||
int insn;
|
||||
int inst;
|
||||
int r3_val = 0;
|
||||
char *dummy_regs = deprecated_generic_find_dummy_frame (get_frame_pc (fi), get_frame_base (fi));
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
|
||||
|
||||
if (get_frame_saved_regs (fi) == NULL)
|
||||
frame_saved_regs_zalloc (fi);
|
||||
|
@ -706,7 +704,7 @@ sh_fp_frame_init_saved_regs (struct frame_info *fi)
|
|||
|
||||
depth = 0;
|
||||
|
||||
/* Loop around examining the prologue insns until we find something
|
||||
/* Loop around examining the prologue inst until we find something
|
||||
that does not appear to be part of the prologue. But give up
|
||||
after 20 of them, since we're getting silly then. */
|
||||
|
||||
|
@ -719,40 +717,40 @@ sh_fp_frame_init_saved_regs (struct frame_info *fi)
|
|||
|
||||
for (opc = pc + (2 * 28); pc < opc; pc += 2)
|
||||
{
|
||||
insn = read_memory_integer (pc, 2);
|
||||
inst = read_memory_integer (pc, 2);
|
||||
/* See where the registers will be saved to */
|
||||
if (IS_PUSH (insn))
|
||||
if (IS_PUSH (inst))
|
||||
{
|
||||
rn = GET_PUSHED_REG (insn);
|
||||
rn = GET_PUSHED_REG (inst);
|
||||
where[rn] = depth;
|
||||
depth += 4;
|
||||
}
|
||||
else if (IS_STS (insn))
|
||||
else if (IS_STS (inst))
|
||||
{
|
||||
where[PR_REGNUM] = depth;
|
||||
/* If we're storing the pr then this isn't a leaf */
|
||||
get_frame_extra_info (fi)->leaf_function = 0;
|
||||
depth += 4;
|
||||
}
|
||||
else if (IS_MOV_R3 (insn))
|
||||
else if (IS_MOV_R3 (inst))
|
||||
{
|
||||
r3_val = ((insn & 0xff) ^ 0x80) - 0x80;
|
||||
r3_val = ((inst & 0xff) ^ 0x80) - 0x80;
|
||||
}
|
||||
else if (IS_SHLL_R3 (insn))
|
||||
else if (IS_SHLL_R3 (inst))
|
||||
{
|
||||
r3_val <<= 1;
|
||||
}
|
||||
else if (IS_ADD_R3SP (insn))
|
||||
else if (IS_ADD_R3SP (inst))
|
||||
{
|
||||
depth += -r3_val;
|
||||
}
|
||||
else if (IS_ADD_SP (insn))
|
||||
else if (IS_ADD_IMM_SP (inst))
|
||||
{
|
||||
depth -= ((insn & 0xff) ^ 0x80) - 0x80;
|
||||
depth -= ((inst & 0xff) ^ 0x80) - 0x80;
|
||||
}
|
||||
else if (IS_FMOV (insn))
|
||||
else if (IS_FPUSH (inst))
|
||||
{
|
||||
if (read_register (tdep->FPSCR_REGNUM) & FPSCR_SZ)
|
||||
if (read_register (FPSCR_REGNUM) & FPSCR_SZ)
|
||||
{
|
||||
depth += 8;
|
||||
}
|
||||
|
@ -761,7 +759,7 @@ sh_fp_frame_init_saved_regs (struct frame_info *fi)
|
|||
depth += 4;
|
||||
}
|
||||
}
|
||||
else if (IS_MOV_SP_FP (insn))
|
||||
else if (IS_MOV_SP_FP (inst))
|
||||
break;
|
||||
#if 0 /* This used to just stop when it found an instruction that
|
||||
was not considered part of the prologue. Now, we just
|
||||
|
@ -842,7 +840,6 @@ static CORE_ADDR
|
|||
sh_extract_struct_value_address (struct regcache *regcache)
|
||||
{
|
||||
ULONGEST addr;
|
||||
/*FIXME: Is R0 really correct here? Not STRUCT_RETURN_REGNUM? */
|
||||
regcache_cooked_read_unsigned (regcache, STRUCT_RETURN_REGNUM, &addr);
|
||||
return addr;
|
||||
}
|
||||
|
@ -959,7 +956,6 @@ sh_push_dummy_call_fpu (struct gdbarch *gdbarch,
|
|||
char valbuf[4];
|
||||
int len;
|
||||
int odd_sized_struct;
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
|
||||
/* first force sp to a 4-byte alignment */
|
||||
sp = sh_frame_align (gdbarch, sp);
|
||||
|
@ -1070,7 +1066,6 @@ sh_push_dummy_call_nofpu (struct gdbarch *gdbarch,
|
|||
char valbuf[4];
|
||||
int len;
|
||||
int odd_sized_struct;
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
|
||||
/* first force sp to a 4-byte alignment */
|
||||
sp = sh_frame_align (gdbarch, sp);
|
||||
|
@ -1240,8 +1235,6 @@ sh3e_sh4_store_return_value (struct type *type, struct regcache *regcache,
|
|||
static void
|
||||
sh_generic_show_regs (void)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
|
||||
|
||||
printf_filtered ("PC=%s SR=%08lx PR=%08lx MACH=%08lx MACHL=%08lx\n",
|
||||
paddr (read_register (PC_REGNUM)),
|
||||
(long) read_register (SR_REGNUM),
|
||||
|
@ -1276,8 +1269,6 @@ sh_generic_show_regs (void)
|
|||
static void
|
||||
sh3_show_regs (void)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
|
||||
|
||||
printf_filtered ("PC=%s SR=%08lx PR=%08lx MACH=%08lx MACHL=%08lx\n",
|
||||
paddr (read_register (PC_REGNUM)),
|
||||
(long) read_register (SR_REGNUM),
|
||||
|
@ -1289,8 +1280,8 @@ sh3_show_regs (void)
|
|||
(long) read_register (GBR_REGNUM),
|
||||
(long) read_register (VBR_REGNUM));
|
||||
printf_filtered (" SSR=%08lx SPC=%08lx",
|
||||
(long) read_register (tdep->SSR_REGNUM),
|
||||
(long) read_register (tdep->SPC_REGNUM));
|
||||
(long) read_register (SSR_REGNUM),
|
||||
(long) read_register (SPC_REGNUM));
|
||||
|
||||
printf_filtered ("\nR0-R7 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
|
||||
(long) read_register (0),
|
||||
|
@ -1327,8 +1318,8 @@ sh2e_show_regs (void)
|
|||
(long) read_register (GBR_REGNUM),
|
||||
(long) read_register (VBR_REGNUM));
|
||||
printf_filtered (" FPUL=%08lx FPSCR=%08lx",
|
||||
(long) read_register (gdbarch_tdep (current_gdbarch)->FPUL_REGNUM),
|
||||
(long) read_register (gdbarch_tdep (current_gdbarch)->FPSCR_REGNUM));
|
||||
(long) read_register (FPUL_REGNUM),
|
||||
(long) read_register (FPSCR_REGNUM));
|
||||
|
||||
printf_filtered ("\nR0-R7 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
|
||||
(long) read_register (0),
|
||||
|
@ -1372,8 +1363,6 @@ sh2e_show_regs (void)
|
|||
static void
|
||||
sh3e_show_regs (void)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
|
||||
|
||||
printf_filtered ("PC=%s SR=%08lx PR=%08lx MACH=%08lx MACHL=%08lx\n",
|
||||
paddr (read_register (PC_REGNUM)),
|
||||
(long) read_register (SR_REGNUM),
|
||||
|
@ -1385,11 +1374,11 @@ sh3e_show_regs (void)
|
|||
(long) read_register (GBR_REGNUM),
|
||||
(long) read_register (VBR_REGNUM));
|
||||
printf_filtered (" SSR=%08lx SPC=%08lx",
|
||||
(long) read_register (tdep->SSR_REGNUM),
|
||||
(long) read_register (tdep->SPC_REGNUM));
|
||||
(long) read_register (SSR_REGNUM),
|
||||
(long) read_register (SPC_REGNUM));
|
||||
printf_filtered (" FPUL=%08lx FPSCR=%08lx",
|
||||
(long) read_register (tdep->FPUL_REGNUM),
|
||||
(long) read_register (tdep->FPSCR_REGNUM));
|
||||
(long) read_register (FPUL_REGNUM),
|
||||
(long) read_register (FPSCR_REGNUM));
|
||||
|
||||
printf_filtered ("\nR0-R7 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
|
||||
(long) read_register (0),
|
||||
|
@ -1433,8 +1422,6 @@ sh3e_show_regs (void)
|
|||
static void
|
||||
sh3_dsp_show_regs (void)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
|
||||
|
||||
printf_filtered ("PC=%s SR=%08lx PR=%08lx MACH=%08lx MACHL=%08lx\n",
|
||||
paddr (read_register (PC_REGNUM)),
|
||||
(long) read_register (SR_REGNUM),
|
||||
|
@ -1447,11 +1434,11 @@ sh3_dsp_show_regs (void)
|
|||
(long) read_register (VBR_REGNUM));
|
||||
|
||||
printf_filtered (" SSR=%08lx SPC=%08lx",
|
||||
(long) read_register (tdep->SSR_REGNUM),
|
||||
(long) read_register (tdep->SPC_REGNUM));
|
||||
(long) read_register (SSR_REGNUM),
|
||||
(long) read_register (SPC_REGNUM));
|
||||
|
||||
printf_filtered (" DSR=%08lx",
|
||||
(long) read_register (tdep->DSR_REGNUM));
|
||||
(long) read_register (DSR_REGNUM));
|
||||
|
||||
printf_filtered ("\nR0-R7 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
|
||||
(long) read_register (0),
|
||||
|
@ -1473,28 +1460,26 @@ sh3_dsp_show_regs (void)
|
|||
(long) read_register (15));
|
||||
|
||||
printf_filtered ("A0G=%02lx A0=%08lx M0=%08lx X0=%08lx Y0=%08lx RS=%08lx MOD=%08lx\n",
|
||||
(long) read_register (tdep->A0G_REGNUM) & 0xff,
|
||||
(long) read_register (tdep->A0_REGNUM),
|
||||
(long) read_register (tdep->M0_REGNUM),
|
||||
(long) read_register (tdep->X0_REGNUM),
|
||||
(long) read_register (tdep->Y0_REGNUM),
|
||||
(long) read_register (tdep->RS_REGNUM),
|
||||
(long) read_register (tdep->MOD_REGNUM));
|
||||
(long) read_register (A0G_REGNUM) & 0xff,
|
||||
(long) read_register (A0_REGNUM),
|
||||
(long) read_register (M0_REGNUM),
|
||||
(long) read_register (X0_REGNUM),
|
||||
(long) read_register (Y0_REGNUM),
|
||||
(long) read_register (RS_REGNUM),
|
||||
(long) read_register (MOD_REGNUM));
|
||||
printf_filtered ("A1G=%02lx A1=%08lx M1=%08lx X1=%08lx Y1=%08lx RE=%08lx\n",
|
||||
(long) read_register (tdep->A1G_REGNUM) & 0xff,
|
||||
(long) read_register (tdep->A1_REGNUM),
|
||||
(long) read_register (tdep->M1_REGNUM),
|
||||
(long) read_register (tdep->X1_REGNUM),
|
||||
(long) read_register (tdep->Y1_REGNUM),
|
||||
(long) read_register (tdep->RE_REGNUM));
|
||||
(long) read_register (A1G_REGNUM) & 0xff,
|
||||
(long) read_register (A1_REGNUM),
|
||||
(long) read_register (M1_REGNUM),
|
||||
(long) read_register (X1_REGNUM),
|
||||
(long) read_register (Y1_REGNUM),
|
||||
(long) read_register (RE_REGNUM));
|
||||
}
|
||||
|
||||
static void
|
||||
sh4_show_regs (void)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
|
||||
|
||||
int pr = read_register (tdep->FPSCR_REGNUM) & 0x80000;
|
||||
int pr = read_register (FPSCR_REGNUM) & 0x80000;
|
||||
printf_filtered ("PC=%s SR=%08lx PR=%08lx MACH=%08lx MACHL=%08lx\n",
|
||||
paddr (read_register (PC_REGNUM)),
|
||||
(long) read_register (SR_REGNUM),
|
||||
|
@ -1506,11 +1491,11 @@ sh4_show_regs (void)
|
|||
(long) read_register (GBR_REGNUM),
|
||||
(long) read_register (VBR_REGNUM));
|
||||
printf_filtered (" SSR=%08lx SPC=%08lx",
|
||||
(long) read_register (tdep->SSR_REGNUM),
|
||||
(long) read_register (tdep->SPC_REGNUM));
|
||||
(long) read_register (SSR_REGNUM),
|
||||
(long) read_register (SPC_REGNUM));
|
||||
printf_filtered (" FPUL=%08lx FPSCR=%08lx",
|
||||
(long) read_register (tdep->FPUL_REGNUM),
|
||||
(long) read_register (tdep->FPSCR_REGNUM));
|
||||
(long) read_register (FPUL_REGNUM),
|
||||
(long) read_register (FPSCR_REGNUM));
|
||||
|
||||
printf_filtered ("\nR0-R7 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
|
||||
(long) read_register (0),
|
||||
|
@ -1558,8 +1543,6 @@ sh4_show_regs (void)
|
|||
static void
|
||||
sh_dsp_show_regs (void)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
|
||||
|
||||
printf_filtered ("PC=%s SR=%08lx PR=%08lx MACH=%08lx MACHL=%08lx\n",
|
||||
paddr (read_register (PC_REGNUM)),
|
||||
(long) read_register (SR_REGNUM),
|
||||
|
@ -1572,7 +1555,7 @@ sh_dsp_show_regs (void)
|
|||
(long) read_register (VBR_REGNUM));
|
||||
|
||||
printf_filtered (" DSR=%08lx",
|
||||
(long) read_register (tdep->DSR_REGNUM));
|
||||
(long) read_register (DSR_REGNUM));
|
||||
|
||||
printf_filtered ("\nR0-R7 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
|
||||
(long) read_register (0),
|
||||
|
@ -1594,20 +1577,20 @@ sh_dsp_show_regs (void)
|
|||
(long) read_register (15));
|
||||
|
||||
printf_filtered ("A0G=%02lx A0=%08lx M0=%08lx X0=%08lx Y0=%08lx RS=%08lx MOD=%08lx\n",
|
||||
(long) read_register (tdep->A0G_REGNUM) & 0xff,
|
||||
(long) read_register (tdep->A0_REGNUM),
|
||||
(long) read_register (tdep->M0_REGNUM),
|
||||
(long) read_register (tdep->X0_REGNUM),
|
||||
(long) read_register (tdep->Y0_REGNUM),
|
||||
(long) read_register (tdep->RS_REGNUM),
|
||||
(long) read_register (tdep->MOD_REGNUM));
|
||||
(long) read_register (A0G_REGNUM) & 0xff,
|
||||
(long) read_register (A0_REGNUM),
|
||||
(long) read_register (M0_REGNUM),
|
||||
(long) read_register (X0_REGNUM),
|
||||
(long) read_register (Y0_REGNUM),
|
||||
(long) read_register (RS_REGNUM),
|
||||
(long) read_register (MOD_REGNUM));
|
||||
printf_filtered ("A1G=%02lx A1=%08lx M1=%08lx X1=%08lx Y1=%08lx RE=%08lx\n",
|
||||
(long) read_register (tdep->A1G_REGNUM) & 0xff,
|
||||
(long) read_register (tdep->A1_REGNUM),
|
||||
(long) read_register (tdep->M1_REGNUM),
|
||||
(long) read_register (tdep->X1_REGNUM),
|
||||
(long) read_register (tdep->Y1_REGNUM),
|
||||
(long) read_register (tdep->RE_REGNUM));
|
||||
(long) read_register (A1G_REGNUM) & 0xff,
|
||||
(long) read_register (A1_REGNUM),
|
||||
(long) read_register (M1_REGNUM),
|
||||
(long) read_register (X1_REGNUM),
|
||||
(long) read_register (Y1_REGNUM),
|
||||
(long) read_register (RE_REGNUM));
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1622,11 +1605,9 @@ sh_show_regs_command (char *args, int from_tty)
|
|||
static struct type *
|
||||
sh_sh3e_register_type (struct gdbarch *gdbarch, int reg_nr)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
|
||||
|
||||
if ((reg_nr >= FP0_REGNUM
|
||||
&& (reg_nr <= tdep->FP_LAST_REGNUM))
|
||||
|| (reg_nr == tdep->FPUL_REGNUM))
|
||||
&& (reg_nr <= FP_LAST_REGNUM))
|
||||
|| (reg_nr == FPUL_REGNUM))
|
||||
return builtin_type_float;
|
||||
else
|
||||
return builtin_type_int;
|
||||
|
@ -1644,17 +1625,15 @@ sh_sh4_build_float_register_type (int high)
|
|||
static struct type *
|
||||
sh_sh4_register_type (struct gdbarch *gdbarch, int reg_nr)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
|
||||
if ((reg_nr >= FP0_REGNUM
|
||||
&& (reg_nr <= tdep->FP_LAST_REGNUM))
|
||||
|| (reg_nr == tdep->FPUL_REGNUM))
|
||||
&& (reg_nr <= FP_LAST_REGNUM))
|
||||
|| (reg_nr == FPUL_REGNUM))
|
||||
return builtin_type_float;
|
||||
else if (reg_nr >= tdep->DR0_REGNUM
|
||||
&& reg_nr <= tdep->DR_LAST_REGNUM)
|
||||
else if (reg_nr >= DR0_REGNUM
|
||||
&& reg_nr <= DR_LAST_REGNUM)
|
||||
return builtin_type_double;
|
||||
else if (reg_nr >= tdep->FV0_REGNUM
|
||||
&& reg_nr <= tdep->FV_LAST_REGNUM)
|
||||
else if (reg_nr >= FV0_REGNUM
|
||||
&& reg_nr <= FV_LAST_REGNUM)
|
||||
return sh_sh4_build_float_register_type (3);
|
||||
else
|
||||
return builtin_type_int;
|
||||
|
@ -1696,10 +1675,8 @@ static void
|
|||
sh_sh4_register_convert_to_virtual (int regnum, struct type *type,
|
||||
char *from, char *to)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
|
||||
|
||||
if (regnum >= tdep->DR0_REGNUM
|
||||
&& regnum <= tdep->DR_LAST_REGNUM)
|
||||
if (regnum >= DR0_REGNUM
|
||||
&& regnum <= DR_LAST_REGNUM)
|
||||
{
|
||||
DOUBLEST val;
|
||||
floatformat_to_doublest (&floatformat_ieee_double_littlebyte_bigword, from, &val);
|
||||
|
@ -1713,10 +1690,8 @@ static void
|
|||
sh_sh4_register_convert_to_raw (struct type *type, int regnum,
|
||||
const void *from, void *to)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
|
||||
|
||||
if (regnum >= tdep->DR0_REGNUM
|
||||
&& regnum <= tdep->DR_LAST_REGNUM)
|
||||
if (regnum >= DR0_REGNUM
|
||||
&& regnum <= DR_LAST_REGNUM)
|
||||
{
|
||||
DOUBLEST val = extract_typed_floating (from, type);
|
||||
floatformat_from_doublest (&floatformat_ieee_double_littlebyte_bigword, &val, to);
|
||||
|
@ -1731,10 +1706,9 @@ sh_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache,
|
|||
{
|
||||
int base_regnum, portion;
|
||||
char temp_buffer[MAX_REGISTER_SIZE];
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
|
||||
if (reg_nr >= tdep->DR0_REGNUM
|
||||
&& reg_nr <= tdep->DR_LAST_REGNUM)
|
||||
if (reg_nr >= DR0_REGNUM
|
||||
&& reg_nr <= DR_LAST_REGNUM)
|
||||
{
|
||||
base_regnum = dr_reg_base_num (reg_nr);
|
||||
|
||||
|
@ -1749,8 +1723,8 @@ sh_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache,
|
|||
gdbarch_register_type (gdbarch, reg_nr),
|
||||
temp_buffer, buffer);
|
||||
}
|
||||
else if (reg_nr >= tdep->FV0_REGNUM
|
||||
&& reg_nr <= tdep->FV_LAST_REGNUM)
|
||||
else if (reg_nr >= FV0_REGNUM
|
||||
&& reg_nr <= FV_LAST_REGNUM)
|
||||
{
|
||||
base_regnum = fv_reg_base_num (reg_nr);
|
||||
|
||||
|
@ -1768,10 +1742,9 @@ sh_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache,
|
|||
{
|
||||
int base_regnum, portion;
|
||||
char temp_buffer[MAX_REGISTER_SIZE];
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
|
||||
if (reg_nr >= tdep->DR0_REGNUM
|
||||
&& reg_nr <= tdep->DR_LAST_REGNUM)
|
||||
if (reg_nr >= DR0_REGNUM
|
||||
&& reg_nr <= DR_LAST_REGNUM)
|
||||
{
|
||||
base_regnum = dr_reg_base_num (reg_nr);
|
||||
|
||||
|
@ -1785,8 +1758,8 @@ sh_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache,
|
|||
(temp_buffer
|
||||
+ register_size (gdbarch, base_regnum) * portion));
|
||||
}
|
||||
else if (reg_nr >= tdep->FV0_REGNUM
|
||||
&& reg_nr <= tdep->FV_LAST_REGNUM)
|
||||
else if (reg_nr >= FV0_REGNUM
|
||||
&& reg_nr <= FV_LAST_REGNUM)
|
||||
{
|
||||
base_regnum = fv_reg_base_num (reg_nr);
|
||||
|
||||
|
@ -1805,7 +1778,7 @@ do_fv_register_info (struct gdbarch *gdbarch, struct ui_file *file,
|
|||
{
|
||||
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 - gdbarch_tdep (gdbarch)->FV0_REGNUM,
|
||||
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),
|
||||
|
@ -1820,7 +1793,7 @@ do_dr_register_info (struct gdbarch *gdbarch, struct ui_file *file,
|
|||
int first_fp_reg_num = dr_reg_base_num (dr_regnum);
|
||||
|
||||
fprintf_filtered (file, "dr%d\t0x%08x%08x\n",
|
||||
dr_regnum - gdbarch_tdep (gdbarch)->DR0_REGNUM,
|
||||
dr_regnum - DR0_REGNUM,
|
||||
(int) read_register (first_fp_reg_num),
|
||||
(int) read_register (first_fp_reg_num + 1));
|
||||
}
|
||||
|
@ -1829,16 +1802,14 @@ static void
|
|||
sh_print_pseudo_register (struct gdbarch *gdbarch, struct ui_file *file,
|
||||
int regnum)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
|
||||
if (regnum < NUM_REGS || regnum >= NUM_REGS + NUM_PSEUDO_REGS)
|
||||
internal_error (__FILE__, __LINE__,
|
||||
"Invalid pseudo register number %d\n", regnum);
|
||||
else if (regnum >= tdep->DR0_REGNUM
|
||||
&& regnum <= tdep->DR_LAST_REGNUM)
|
||||
else if (regnum >= DR0_REGNUM
|
||||
&& regnum <= DR_LAST_REGNUM)
|
||||
do_dr_register_info (gdbarch, file, regnum);
|
||||
else if (regnum >= tdep->FV0_REGNUM
|
||||
&& regnum <= tdep->FV_LAST_REGNUM)
|
||||
else if (regnum >= FV0_REGNUM
|
||||
&& regnum <= FV_LAST_REGNUM)
|
||||
do_fv_register_info (gdbarch, file, regnum);
|
||||
}
|
||||
|
||||
|
@ -1958,7 +1929,7 @@ sh_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file,
|
|||
regnum ++;
|
||||
}
|
||||
else
|
||||
regnum += (gdbarch_tdep (gdbarch)->FP_LAST_REGNUM - FP0_REGNUM); /* skip FP regs */
|
||||
regnum += (FP_LAST_REGNUM - FP0_REGNUM); /* skip FP regs */
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2020,45 +1991,21 @@ sh_linux_svr4_fetch_link_map_offsets (void)
|
|||
}
|
||||
#endif /* SVR4_SHARED_LIBS */
|
||||
|
||||
|
||||
enum
|
||||
{
|
||||
DSP_DSR_REGNUM = 24,
|
||||
DSP_A0G_REGNUM,
|
||||
DSP_A0_REGNUM,
|
||||
DSP_A1G_REGNUM,
|
||||
DSP_A1_REGNUM,
|
||||
DSP_M0_REGNUM,
|
||||
DSP_M1_REGNUM,
|
||||
DSP_X0_REGNUM,
|
||||
DSP_X1_REGNUM,
|
||||
DSP_Y0_REGNUM,
|
||||
DSP_Y1_REGNUM,
|
||||
|
||||
DSP_MOD_REGNUM = 40,
|
||||
|
||||
DSP_RS_REGNUM = 43,
|
||||
DSP_RE_REGNUM,
|
||||
|
||||
DSP_R0_BANK_REGNUM = 51,
|
||||
DSP_R7_BANK_REGNUM = DSP_R0_BANK_REGNUM + 7
|
||||
};
|
||||
|
||||
static int
|
||||
sh_dsp_register_sim_regno (int nr)
|
||||
{
|
||||
if (legacy_register_sim_regno (nr) < 0)
|
||||
return legacy_register_sim_regno (nr);
|
||||
if (nr >= DSP_DSR_REGNUM && nr <= DSP_Y1_REGNUM)
|
||||
return nr - DSP_DSR_REGNUM + SIM_SH_DSR_REGNUM;
|
||||
if (nr == DSP_MOD_REGNUM)
|
||||
if (nr >= DSR_REGNUM && nr <= Y1_REGNUM)
|
||||
return nr - DSR_REGNUM + SIM_SH_DSR_REGNUM;
|
||||
if (nr == MOD_REGNUM)
|
||||
return SIM_SH_MOD_REGNUM;
|
||||
if (nr == DSP_RS_REGNUM)
|
||||
if (nr == RS_REGNUM)
|
||||
return SIM_SH_RS_REGNUM;
|
||||
if (nr == DSP_RE_REGNUM)
|
||||
if (nr == RE_REGNUM)
|
||||
return SIM_SH_RE_REGNUM;
|
||||
if (nr >= DSP_R0_BANK_REGNUM && nr <= DSP_R7_BANK_REGNUM)
|
||||
return nr - DSP_R0_BANK_REGNUM + SIM_SH_R0_BANK_REGNUM;
|
||||
if (nr >= R0_BANK_REGNUM && nr <= R7_BANK_REGNUM)
|
||||
return nr - R0_BANK_REGNUM + SIM_SH_R0_BANK_REGNUM;
|
||||
return nr;
|
||||
}
|
||||
|
||||
|
@ -2068,7 +2015,6 @@ static struct gdbarch *
|
|||
sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
{
|
||||
struct gdbarch *gdbarch;
|
||||
struct gdbarch_tdep *tdep;
|
||||
|
||||
sh_show_regs = sh_generic_show_regs;
|
||||
switch (info.bfd_arch_info->mach)
|
||||
|
@ -2109,40 +2055,12 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
|||
|
||||
/* None found, create a new architecture from the information
|
||||
provided. */
|
||||
tdep = XMALLOC (struct gdbarch_tdep);
|
||||
gdbarch = gdbarch_alloc (&info, tdep);
|
||||
gdbarch = gdbarch_alloc (&info, NULL);
|
||||
|
||||
/* NOTE: cagney/2002-12-06: This can be deleted when this arch is
|
||||
ready to unwind the PC first (see frame.c:get_prev_frame()). */
|
||||
set_gdbarch_deprecated_init_frame_pc (gdbarch, init_frame_pc_default);
|
||||
|
||||
/* Initialize the register numbers that are not common to all the
|
||||
variants to -1, if necessary thse will be overwritten in the case
|
||||
statement below. */
|
||||
tdep->FPUL_REGNUM = -1;
|
||||
tdep->FPSCR_REGNUM = -1;
|
||||
tdep->DSR_REGNUM = -1;
|
||||
tdep->FP_LAST_REGNUM = -1;
|
||||
tdep->A0G_REGNUM = -1;
|
||||
tdep->A0_REGNUM = -1;
|
||||
tdep->A1G_REGNUM = -1;
|
||||
tdep->A1_REGNUM = -1;
|
||||
tdep->M0_REGNUM = -1;
|
||||
tdep->M1_REGNUM = -1;
|
||||
tdep->X0_REGNUM = -1;
|
||||
tdep->X1_REGNUM = -1;
|
||||
tdep->Y0_REGNUM = -1;
|
||||
tdep->Y1_REGNUM = -1;
|
||||
tdep->MOD_REGNUM = -1;
|
||||
tdep->RS_REGNUM = -1;
|
||||
tdep->RE_REGNUM = -1;
|
||||
tdep->SSR_REGNUM = -1;
|
||||
tdep->SPC_REGNUM = -1;
|
||||
tdep->DR0_REGNUM = -1;
|
||||
tdep->DR_LAST_REGNUM = -1;
|
||||
tdep->FV0_REGNUM = -1;
|
||||
tdep->FV_LAST_REGNUM = -1;
|
||||
|
||||
set_gdbarch_short_bit (gdbarch, 2 * TARGET_CHAR_BIT);
|
||||
set_gdbarch_int_bit (gdbarch, 4 * TARGET_CHAR_BIT);
|
||||
set_gdbarch_long_bit (gdbarch, 4 * TARGET_CHAR_BIT);
|
||||
|
@ -2152,7 +2070,7 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
|||
set_gdbarch_long_double_bit (gdbarch, 8 * TARGET_CHAR_BIT);
|
||||
set_gdbarch_ptr_bit (gdbarch, 4 * TARGET_CHAR_BIT);
|
||||
|
||||
set_gdbarch_num_regs (gdbarch, SH_DEFAULT_NUM_REGS);
|
||||
set_gdbarch_num_regs (gdbarch, SH_NUM_REGS);
|
||||
set_gdbarch_sp_regnum (gdbarch, 15);
|
||||
set_gdbarch_deprecated_fp_regnum (gdbarch, 14);
|
||||
set_gdbarch_pc_regnum (gdbarch, 16);
|
||||
|
@ -2223,9 +2141,6 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
|||
set_gdbarch_extract_return_value (gdbarch, sh3e_sh4_extract_return_value);
|
||||
set_gdbarch_push_dummy_call (gdbarch, sh_push_dummy_call_fpu);
|
||||
set_gdbarch_extract_struct_value_address (gdbarch, sh_extract_struct_value_address);
|
||||
tdep->FPUL_REGNUM = 23;
|
||||
tdep->FPSCR_REGNUM = 24;
|
||||
tdep->FP_LAST_REGNUM = 40;
|
||||
|
||||
set_gdbarch_deprecated_frame_init_saved_regs (gdbarch, sh_nofp_frame_init_saved_regs);
|
||||
break;
|
||||
|
@ -2239,20 +2154,6 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
|||
set_gdbarch_extract_return_value (gdbarch, sh_default_extract_return_value);
|
||||
set_gdbarch_push_dummy_call (gdbarch, sh_push_dummy_call_nofpu);
|
||||
set_gdbarch_extract_struct_value_address (gdbarch, sh_extract_struct_value_address);
|
||||
tdep->DSR_REGNUM = 24;
|
||||
tdep->A0G_REGNUM = 25;
|
||||
tdep->A0_REGNUM = 26;
|
||||
tdep->A1G_REGNUM = 27;
|
||||
tdep->A1_REGNUM = 28;
|
||||
tdep->M0_REGNUM = 29;
|
||||
tdep->M1_REGNUM = 30;
|
||||
tdep->X0_REGNUM = 31;
|
||||
tdep->X1_REGNUM = 32;
|
||||
tdep->Y0_REGNUM = 33;
|
||||
tdep->Y1_REGNUM = 34;
|
||||
tdep->MOD_REGNUM = 40;
|
||||
tdep->RS_REGNUM = 43;
|
||||
tdep->RE_REGNUM = 44;
|
||||
|
||||
set_gdbarch_deprecated_frame_init_saved_regs (gdbarch, sh_nofp_frame_init_saved_regs);
|
||||
break;
|
||||
|
@ -2265,8 +2166,6 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
|||
set_gdbarch_extract_return_value (gdbarch, sh_default_extract_return_value);
|
||||
set_gdbarch_push_dummy_call (gdbarch, sh_push_dummy_call_nofpu);
|
||||
set_gdbarch_extract_struct_value_address (gdbarch, sh_extract_struct_value_address);
|
||||
tdep->SSR_REGNUM = 41;
|
||||
tdep->SPC_REGNUM = 42;
|
||||
|
||||
set_gdbarch_deprecated_frame_init_saved_regs (gdbarch, sh_nofp_frame_init_saved_regs);
|
||||
break;
|
||||
|
@ -2283,11 +2182,6 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
|||
set_gdbarch_extract_return_value (gdbarch, sh3e_sh4_extract_return_value);
|
||||
set_gdbarch_push_dummy_call (gdbarch, sh_push_dummy_call_fpu);
|
||||
set_gdbarch_extract_struct_value_address (gdbarch, sh_extract_struct_value_address);
|
||||
tdep->FPUL_REGNUM = 23;
|
||||
tdep->FPSCR_REGNUM = 24;
|
||||
tdep->FP_LAST_REGNUM = 40;
|
||||
tdep->SSR_REGNUM = 41;
|
||||
tdep->SPC_REGNUM = 42;
|
||||
|
||||
set_gdbarch_deprecated_frame_init_saved_regs (gdbarch, sh_fp_frame_init_saved_regs);
|
||||
break;
|
||||
|
@ -2301,22 +2195,6 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
|||
set_gdbarch_extract_return_value (gdbarch, sh_default_extract_return_value);
|
||||
set_gdbarch_push_dummy_call (gdbarch, sh_push_dummy_call_nofpu);
|
||||
set_gdbarch_extract_struct_value_address (gdbarch, sh_extract_struct_value_address);
|
||||
tdep->DSR_REGNUM = 24;
|
||||
tdep->A0G_REGNUM = 25;
|
||||
tdep->A0_REGNUM = 26;
|
||||
tdep->A1G_REGNUM = 27;
|
||||
tdep->A1_REGNUM = 28;
|
||||
tdep->M0_REGNUM = 29;
|
||||
tdep->M1_REGNUM = 30;
|
||||
tdep->X0_REGNUM = 31;
|
||||
tdep->X1_REGNUM = 32;
|
||||
tdep->Y0_REGNUM = 33;
|
||||
tdep->Y1_REGNUM = 34;
|
||||
tdep->MOD_REGNUM = 40;
|
||||
tdep->RS_REGNUM = 43;
|
||||
tdep->RE_REGNUM = 44;
|
||||
tdep->SSR_REGNUM = 41;
|
||||
tdep->SPC_REGNUM = 42;
|
||||
|
||||
set_gdbarch_deprecated_frame_init_saved_regs (gdbarch, sh_nofp_frame_init_saved_regs);
|
||||
break;
|
||||
|
@ -2333,15 +2211,6 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
|||
set_gdbarch_extract_return_value (gdbarch, sh3e_sh4_extract_return_value);
|
||||
set_gdbarch_push_dummy_call (gdbarch, sh_push_dummy_call_fpu);
|
||||
set_gdbarch_extract_struct_value_address (gdbarch, sh_extract_struct_value_address);
|
||||
tdep->FPUL_REGNUM = 23;
|
||||
tdep->FPSCR_REGNUM = 24;
|
||||
tdep->FP_LAST_REGNUM = 40;
|
||||
tdep->SSR_REGNUM = 41;
|
||||
tdep->SPC_REGNUM = 42;
|
||||
tdep->DR0_REGNUM = 59;
|
||||
tdep->DR_LAST_REGNUM = 66;
|
||||
tdep->FV0_REGNUM = 67;
|
||||
tdep->FV_LAST_REGNUM = 70;
|
||||
|
||||
set_gdbarch_deprecated_frame_init_saved_regs (gdbarch, sh_fp_frame_init_saved_regs);
|
||||
break;
|
||||
|
@ -2363,17 +2232,6 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
|||
return gdbarch;
|
||||
}
|
||||
|
||||
static void
|
||||
sh_dump_tdep (struct gdbarch *current_gdbarch, struct ui_file *file)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
|
||||
|
||||
if (tdep == NULL)
|
||||
return;
|
||||
|
||||
/* FIXME: dump the rest of gdbarch_tdep. */
|
||||
}
|
||||
|
||||
extern initialize_file_ftype _initialize_sh_tdep; /* -Wmissing-prototypes */
|
||||
|
||||
void
|
||||
|
@ -2381,7 +2239,7 @@ _initialize_sh_tdep (void)
|
|||
{
|
||||
struct cmd_list_element *c;
|
||||
|
||||
gdbarch_register (bfd_arch_sh, sh_gdbarch_init, sh_dump_tdep);
|
||||
gdbarch_register (bfd_arch_sh, sh_gdbarch_init, NULL);
|
||||
|
||||
add_com ("regs", class_vars, sh_show_regs_command, "Print all registers");
|
||||
}
|
||||
|
|
|
@ -24,52 +24,51 @@
|
|||
|
||||
/* Contributed by Steve Chamberlain sac@cygnus.com */
|
||||
|
||||
struct gdbarch_tdep
|
||||
{
|
||||
int FPUL_REGNUM; /* sh3e, sh4 */
|
||||
int FPSCR_REGNUM; /* sh3e, sh4 */
|
||||
int DSR_REGNUM; /* sh-dsp, sh3-dsp */
|
||||
int FP_LAST_REGNUM; /* sh3e, sh4 */
|
||||
int A0G_REGNUM; /* sh-dsp, sh3-dsp */
|
||||
int A0_REGNUM; /* sh-dsp, sh3-dsp */
|
||||
int A1G_REGNUM; /* sh-dsp, sh3-dsp */
|
||||
int A1_REGNUM; /* sh-dsp, sh3-dsp */
|
||||
int M0_REGNUM; /* sh-dsp, sh3-dsp */
|
||||
int M1_REGNUM; /* sh-dsp, sh3-dsp */
|
||||
int X0_REGNUM; /* sh-dsp, sh3-dsp */
|
||||
int X1_REGNUM; /* sh-dsp, sh3-dsp */
|
||||
int Y0_REGNUM; /* sh-dsp, sh3-dsp */
|
||||
int Y1_REGNUM; /* sh-dsp, sh3-dsp */
|
||||
int MOD_REGNUM; /* sh-dsp, sh3-dsp */
|
||||
int SSR_REGNUM; /* sh3, sh3-dsp, sh3e, sh4 */
|
||||
int SPC_REGNUM; /* sh3, sh3-dsp, sh3e, sh4 */
|
||||
int RS_REGNUM; /* sh-dsp, sh3-dsp */
|
||||
int RE_REGNUM; /* sh-dsp, sh3-dsp */
|
||||
int DR0_REGNUM; /* sh4 */
|
||||
int DR_LAST_REGNUM; /* sh4 */
|
||||
int FV0_REGNUM; /* sh4 */
|
||||
int FV_LAST_REGNUM; /* sh4 */
|
||||
/* FPP stands for Floating Point Pair, to avoid confusion with
|
||||
GDB's FP0_REGNUM, which is the number of the first Floating
|
||||
point register. Unfortunately on the sh5, the floating point
|
||||
registers are called FR, and the floating point pairs are called FP. */
|
||||
};
|
||||
|
||||
/* Registers common to all the SH variants. */
|
||||
/* Registers for all SH variants. Used also by sh3-rom.c. */
|
||||
enum
|
||||
{
|
||||
R0_REGNUM = 0,
|
||||
STRUCT_RETURN_REGNUM = 2,
|
||||
ARG0_REGNUM = 4,
|
||||
ARGLAST_REGNUM = 7,
|
||||
FP_REGNUM = 14,
|
||||
PR_REGNUM = 17,
|
||||
GBR_REGNUM = 18,
|
||||
VBR_REGNUM = 19,
|
||||
MACH_REGNUM = 20,
|
||||
MACL_REGNUM = 21,
|
||||
SR_REGNUM = 22,
|
||||
FPUL_REGNUM = 23,
|
||||
/* Floating point registers */
|
||||
FPSCR_REGNUM = 24,
|
||||
FLOAT_ARG0_REGNUM = 29,
|
||||
FLOAT_ARGLAST_REGNUM = 36
|
||||
FLOAT_ARGLAST_REGNUM = 36,
|
||||
FP_LAST_REGNUM = 40,
|
||||
/* sh3,sh4 registers */
|
||||
SSR_REGNUM = 41,
|
||||
SPC_REGNUM = 42,
|
||||
/* DSP registers */
|
||||
DSR_REGNUM = 24,
|
||||
A0G_REGNUM = 25,
|
||||
A0_REGNUM = 26,
|
||||
A1G_REGNUM = 27,
|
||||
A1_REGNUM = 28,
|
||||
M0_REGNUM = 29,
|
||||
M1_REGNUM = 30,
|
||||
X0_REGNUM = 31,
|
||||
X1_REGNUM = 32,
|
||||
Y0_REGNUM = 33,
|
||||
Y1_REGNUM = 34,
|
||||
MOD_REGNUM = 40,
|
||||
RS_REGNUM = 43,
|
||||
RE_REGNUM = 44,
|
||||
R0_BANK_REGNUM = 51,
|
||||
R7_BANK_REGNUM = 58,
|
||||
/* Floating point pseudo registers */
|
||||
DR0_REGNUM = 59,
|
||||
DR_LAST_REGNUM = 66,
|
||||
FV0_REGNUM = 67,
|
||||
FV_LAST_REGNUM = 70
|
||||
};
|
||||
|
||||
extern gdbarch_init_ftype sh64_gdbarch_init;
|
||||
|
|
|
@ -77,9 +77,9 @@ sh3_supply_register (char *regname, int regnamelen, char *val, int vallen)
|
|||
break;
|
||||
case 'S':
|
||||
if (regname[1] == 'S' && regname[2] == 'R')
|
||||
regno = gdbarch_tdep (current_gdbarch)->SSR_REGNUM;
|
||||
regno = SSR_REGNUM;
|
||||
else if (regname[1] == 'P' && regname[2] == 'C')
|
||||
regno = gdbarch_tdep (current_gdbarch)->SPC_REGNUM;
|
||||
regno = SPC_REGNUM;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue