mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-26 22:07:58 +08:00
2003-11-15 Andrew Cagney <cagney@redhat.com>
* mips-tdep.c (struct gdbarch_tdep): Delete member gdb_target_is_mips64. (GDB_TARGET_IS_MIPS64): Delete macro. (mips_gdbarch_init): Do not set tdep's gdb_target_is_mips64. (mips_dump_tdep): Do not print GDB_TARGET_IS_MIPS64. (mips_addr_bits_remove): Simplify.
This commit is contained in:
@ -1,5 +1,12 @@
|
|||||||
2003-11-15 Andrew Cagney <cagney@redhat.com>
|
2003-11-15 Andrew Cagney <cagney@redhat.com>
|
||||||
|
|
||||||
|
* mips-tdep.c (struct gdbarch_tdep): Delete member
|
||||||
|
gdb_target_is_mips64.
|
||||||
|
(GDB_TARGET_IS_MIPS64): Delete macro.
|
||||||
|
(mips_gdbarch_init): Do not set tdep's gdb_target_is_mips64.
|
||||||
|
(mips_dump_tdep): Do not print GDB_TARGET_IS_MIPS64.
|
||||||
|
(mips_addr_bits_remove): Simplify.
|
||||||
|
|
||||||
* mips-tdep.c: Replace DEPRECATED_REGISTER_VIRTUAL_SIZE with
|
* mips-tdep.c: Replace DEPRECATED_REGISTER_VIRTUAL_SIZE with
|
||||||
register_size.
|
register_size.
|
||||||
|
|
||||||
|
@ -134,7 +134,6 @@ struct gdbarch_tdep
|
|||||||
int mips_default_saved_regsize;
|
int mips_default_saved_regsize;
|
||||||
int mips_fp_register_double;
|
int mips_fp_register_double;
|
||||||
int mips_default_stack_argsize;
|
int mips_default_stack_argsize;
|
||||||
int gdb_target_is_mips64;
|
|
||||||
int default_mask_address_p;
|
int default_mask_address_p;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -340,9 +339,7 @@ mips2_fp_compat (void)
|
|||||||
|
|
||||||
/* Indicate that the ABI makes use of double-precision registers
|
/* Indicate that the ABI makes use of double-precision registers
|
||||||
provided by the FPU (rather than combining pairs of registers to
|
provided by the FPU (rather than combining pairs of registers to
|
||||||
form double-precision values). Do not use "TARGET_IS_MIPS64" to
|
form double-precision values). See also MIPS_FPU_TYPE. */
|
||||||
determine if the ABI is using double-precision registers. See also
|
|
||||||
MIPS_FPU_TYPE. */
|
|
||||||
#define FP_REGISTER_DOUBLE (gdbarch_tdep (current_gdbarch)->mips_fp_register_double)
|
#define FP_REGISTER_DOUBLE (gdbarch_tdep (current_gdbarch)->mips_fp_register_double)
|
||||||
|
|
||||||
/* The amount of space reserved on the stack for registers. This is
|
/* The amount of space reserved on the stack for registers. This is
|
||||||
@ -366,8 +363,6 @@ mips_stack_argsize (void)
|
|||||||
return 4;
|
return 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define GDB_TARGET_IS_MIPS64 (gdbarch_tdep (current_gdbarch)->gdb_target_is_mips64 + 0)
|
|
||||||
|
|
||||||
#define MIPS_DEFAULT_MASK_ADDRESS_P (gdbarch_tdep (current_gdbarch)->default_mask_address_p)
|
#define MIPS_DEFAULT_MASK_ADDRESS_P (gdbarch_tdep (current_gdbarch)->default_mask_address_p)
|
||||||
|
|
||||||
#define VM_MIN_ADDRESS (CORE_ADDR)0x400000
|
#define VM_MIN_ADDRESS (CORE_ADDR)0x400000
|
||||||
@ -1784,40 +1779,26 @@ read_next_frame_reg (struct frame_info *fi, int regno)
|
|||||||
static CORE_ADDR
|
static CORE_ADDR
|
||||||
mips_addr_bits_remove (CORE_ADDR addr)
|
mips_addr_bits_remove (CORE_ADDR addr)
|
||||||
{
|
{
|
||||||
if (GDB_TARGET_IS_MIPS64)
|
if (mips_mask_address_p ()
|
||||||
{
|
&& (((ULONGEST) addr) >> 32 == 0xffffffffUL))
|
||||||
if (mips_mask_address_p () && (addr >> 32 == (CORE_ADDR) 0xffffffff))
|
/* This hack is a work-around for existing boards using PMON, the
|
||||||
{
|
simulator, and any other 64-bit targets that doesn't have true
|
||||||
/* This hack is a work-around for existing boards using
|
64-bit addressing. On these targets, the upper 32 bits of
|
||||||
PMON, the simulator, and any other 64-bit targets that
|
addresses are ignored by the hardware. Thus, the PC or SP are
|
||||||
doesn't have true 64-bit addressing. On these targets,
|
likely to have been sign extended to all 1s by instruction
|
||||||
the upper 32 bits of addresses are ignored by the
|
sequences that load 32-bit addresses. For example, a typical
|
||||||
hardware. Thus, the PC or SP are likely to have been
|
piece of code that loads an address is this:
|
||||||
sign extended to all 1s by instruction sequences that
|
|
||||||
load 32-bit addresses. For example, a typical piece of
|
lui $r2, <upper 16 bits>
|
||||||
code that loads an address is this:
|
ori $r2, <lower 16 bits>
|
||||||
lui $r2, <upper 16 bits>
|
|
||||||
ori $r2, <lower 16 bits>
|
But the lui sign-extends the value such that the upper 32 bits
|
||||||
But the lui sign-extends the value such that the upper 32
|
may be all 1s. The workaround is simply to mask off these
|
||||||
bits may be all 1s. The workaround is simply to mask off
|
bits. In the future, gcc may be changed to support true 64-bit
|
||||||
these bits. In the future, gcc may be changed to support
|
addressing, and this masking will have to be disabled. */
|
||||||
true 64-bit addressing, and this masking will have to be
|
return addr &= 0xffffffffUL;
|
||||||
disabled. */
|
else
|
||||||
addr &= (CORE_ADDR) 0xffffffff;
|
return addr;
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (mips_mask_address_p ())
|
|
||||||
{
|
|
||||||
/* FIXME: This is wrong! mips_addr_bits_remove() shouldn't be
|
|
||||||
masking off bits, instead, the actual target should be asking
|
|
||||||
for the address to be converted to a valid pointer. */
|
|
||||||
/* Even when GDB is configured for some 32-bit targets
|
|
||||||
(e.g. mips-elf), BFD is configured to handle 64-bit targets,
|
|
||||||
so CORE_ADDR is 64 bits. So we still have to mask off
|
|
||||||
useless bits from addresses. */
|
|
||||||
addr &= (CORE_ADDR) 0xffffffff;
|
|
||||||
}
|
|
||||||
return addr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* mips_software_single_step() is called just before we want to resume
|
/* mips_software_single_step() is called just before we want to resume
|
||||||
@ -5880,7 +5861,6 @@ mips_gdbarch_init (struct gdbarch_info info,
|
|||||||
tdep->mips_fp_register_double = 0;
|
tdep->mips_fp_register_double = 0;
|
||||||
tdep->mips_last_arg_regnum = A0_REGNUM + 4 - 1;
|
tdep->mips_last_arg_regnum = A0_REGNUM + 4 - 1;
|
||||||
tdep->mips_last_fp_arg_regnum = FPA0_REGNUM + 4 - 1;
|
tdep->mips_last_fp_arg_regnum = FPA0_REGNUM + 4 - 1;
|
||||||
tdep->gdb_target_is_mips64 = 0;
|
|
||||||
tdep->default_mask_address_p = 0;
|
tdep->default_mask_address_p = 0;
|
||||||
set_gdbarch_long_bit (gdbarch, 32);
|
set_gdbarch_long_bit (gdbarch, 32);
|
||||||
set_gdbarch_ptr_bit (gdbarch, 32);
|
set_gdbarch_ptr_bit (gdbarch, 32);
|
||||||
@ -5899,7 +5879,6 @@ mips_gdbarch_init (struct gdbarch_info info,
|
|||||||
tdep->mips_fp_register_double = 1;
|
tdep->mips_fp_register_double = 1;
|
||||||
tdep->mips_last_arg_regnum = A0_REGNUM + 4 - 1;
|
tdep->mips_last_arg_regnum = A0_REGNUM + 4 - 1;
|
||||||
tdep->mips_last_fp_arg_regnum = FPA0_REGNUM + 4 - 1;
|
tdep->mips_last_fp_arg_regnum = FPA0_REGNUM + 4 - 1;
|
||||||
tdep->gdb_target_is_mips64 = 1;
|
|
||||||
tdep->default_mask_address_p = 0;
|
tdep->default_mask_address_p = 0;
|
||||||
set_gdbarch_long_bit (gdbarch, 32);
|
set_gdbarch_long_bit (gdbarch, 32);
|
||||||
set_gdbarch_ptr_bit (gdbarch, 32);
|
set_gdbarch_ptr_bit (gdbarch, 32);
|
||||||
@ -5917,7 +5896,6 @@ mips_gdbarch_init (struct gdbarch_info info,
|
|||||||
tdep->mips_fp_register_double = 0;
|
tdep->mips_fp_register_double = 0;
|
||||||
tdep->mips_last_arg_regnum = A0_REGNUM + 8 - 1;
|
tdep->mips_last_arg_regnum = A0_REGNUM + 8 - 1;
|
||||||
tdep->mips_last_fp_arg_regnum = FPA0_REGNUM + 8 - 1;
|
tdep->mips_last_fp_arg_regnum = FPA0_REGNUM + 8 - 1;
|
||||||
tdep->gdb_target_is_mips64 = 0;
|
|
||||||
tdep->default_mask_address_p = 0;
|
tdep->default_mask_address_p = 0;
|
||||||
set_gdbarch_long_bit (gdbarch, 32);
|
set_gdbarch_long_bit (gdbarch, 32);
|
||||||
set_gdbarch_ptr_bit (gdbarch, 32);
|
set_gdbarch_ptr_bit (gdbarch, 32);
|
||||||
@ -5936,7 +5914,6 @@ mips_gdbarch_init (struct gdbarch_info info,
|
|||||||
tdep->mips_fp_register_double = 1;
|
tdep->mips_fp_register_double = 1;
|
||||||
tdep->mips_last_arg_regnum = A0_REGNUM + 8 - 1;
|
tdep->mips_last_arg_regnum = A0_REGNUM + 8 - 1;
|
||||||
tdep->mips_last_fp_arg_regnum = FPA0_REGNUM + 8 - 1;
|
tdep->mips_last_fp_arg_regnum = FPA0_REGNUM + 8 - 1;
|
||||||
tdep->gdb_target_is_mips64 = 1;
|
|
||||||
tdep->default_mask_address_p = 0;
|
tdep->default_mask_address_p = 0;
|
||||||
set_gdbarch_long_bit (gdbarch, 64);
|
set_gdbarch_long_bit (gdbarch, 64);
|
||||||
set_gdbarch_ptr_bit (gdbarch, 64);
|
set_gdbarch_ptr_bit (gdbarch, 64);
|
||||||
@ -5955,7 +5932,6 @@ mips_gdbarch_init (struct gdbarch_info info,
|
|||||||
tdep->mips_fp_register_double = 1;
|
tdep->mips_fp_register_double = 1;
|
||||||
tdep->mips_last_arg_regnum = A0_REGNUM + 8 - 1;
|
tdep->mips_last_arg_regnum = A0_REGNUM + 8 - 1;
|
||||||
tdep->mips_last_fp_arg_regnum = FPA0_REGNUM + 8 - 1;
|
tdep->mips_last_fp_arg_regnum = FPA0_REGNUM + 8 - 1;
|
||||||
tdep->gdb_target_is_mips64 = 1;
|
|
||||||
tdep->default_mask_address_p = 0;
|
tdep->default_mask_address_p = 0;
|
||||||
set_gdbarch_long_bit (gdbarch, 32);
|
set_gdbarch_long_bit (gdbarch, 32);
|
||||||
set_gdbarch_ptr_bit (gdbarch, 32);
|
set_gdbarch_ptr_bit (gdbarch, 32);
|
||||||
@ -5974,7 +5950,6 @@ mips_gdbarch_init (struct gdbarch_info info,
|
|||||||
tdep->mips_fp_register_double = 1;
|
tdep->mips_fp_register_double = 1;
|
||||||
tdep->mips_last_arg_regnum = A0_REGNUM + 8 - 1;
|
tdep->mips_last_arg_regnum = A0_REGNUM + 8 - 1;
|
||||||
tdep->mips_last_fp_arg_regnum = FPA0_REGNUM + 8 - 1;
|
tdep->mips_last_fp_arg_regnum = FPA0_REGNUM + 8 - 1;
|
||||||
tdep->gdb_target_is_mips64 = 1;
|
|
||||||
tdep->default_mask_address_p = 0;
|
tdep->default_mask_address_p = 0;
|
||||||
set_gdbarch_long_bit (gdbarch, 64);
|
set_gdbarch_long_bit (gdbarch, 64);
|
||||||
set_gdbarch_ptr_bit (gdbarch, 64);
|
set_gdbarch_ptr_bit (gdbarch, 64);
|
||||||
@ -6284,9 +6259,6 @@ mips_dump_tdep (struct gdbarch *current_gdbarch, struct ui_file *file)
|
|||||||
fprintf_unfiltered (file,
|
fprintf_unfiltered (file,
|
||||||
"mips_dump_tdep: FPA0_REGNUM = %d\n",
|
"mips_dump_tdep: FPA0_REGNUM = %d\n",
|
||||||
FPA0_REGNUM);
|
FPA0_REGNUM);
|
||||||
fprintf_unfiltered (file,
|
|
||||||
"mips_dump_tdep: GDB_TARGET_IS_MIPS64 = %d\n",
|
|
||||||
GDB_TARGET_IS_MIPS64);
|
|
||||||
fprintf_unfiltered (file,
|
fprintf_unfiltered (file,
|
||||||
"mips_dump_tdep: HI_REGNUM = %d\n",
|
"mips_dump_tdep: HI_REGNUM = %d\n",
|
||||||
HI_REGNUM);
|
HI_REGNUM);
|
||||||
|
Reference in New Issue
Block a user