2003-06-01 Andrew Cagney <cagney@redhat.com>

* mips-tdep.c (is_mips16_addr): New function.
	(make_mips16_addr, unmake_mips16_addr): New functions.
	(pc_is_mips16, mips_fetch_instruction): Use.
	(gdb_print_insn_mips, mips_breakpoint_from_pc): Use.
	(gdb_print_insn_mips): Eliminate TM_PRINT_INSN_MACH.
	(mips_dump_tdep): Delete print of TM_PRINT_INSN_MACH,
	UNMAKE_MIPS16_ADDR, MAKE_MIPS16_ADDR, IS_MIPS16_ADDR and
	TARGET_MIPS.
	* config/mips/tm-mips.h: Update copyright.
	(TARGET_MIPS, TM_PRINT_INSN_MACH): Delete.
	(DEPRECATED_REGISTER_SIZE, DEPRECATED_REGISTER_BYTES): Delete.
	(IS_MIPS16_ADDR, MAKE_MIPS16_ADDR, UNMAKE_MIPS16_ADDR): Delete.
	* config/mips/tm-irix6.h (DEPRECATED_REGISTER_BYTES): Delete.
	(TM_PRINT_INSN_MACH): Delete.
	* config/mips/tm-irix5.h (DEPRECATED_REGISTER_BYTES): Delete.
This commit is contained in:
Andrew Cagney 2003-06-01 15:45:57 +00:00
parent 5e04534667
commit 95404a3ece
5 changed files with 46 additions and 57 deletions

View File

@ -1,5 +1,21 @@
2003-06-01 Andrew Cagney <cagney@redhat.com>
* mips-tdep.c (is_mips16_addr): New function.
(make_mips16_addr, unmake_mips16_addr): New functions.
(pc_is_mips16, mips_fetch_instruction): Use.
(gdb_print_insn_mips, mips_breakpoint_from_pc): Use.
(gdb_print_insn_mips): Eliminate TM_PRINT_INSN_MACH.
(mips_dump_tdep): Delete print of TM_PRINT_INSN_MACH,
UNMAKE_MIPS16_ADDR, MAKE_MIPS16_ADDR, IS_MIPS16_ADDR and
TARGET_MIPS.
* config/mips/tm-mips.h: Update copyright.
(TARGET_MIPS, TM_PRINT_INSN_MACH): Delete.
(DEPRECATED_REGISTER_SIZE, DEPRECATED_REGISTER_BYTES): Delete.
(IS_MIPS16_ADDR, MAKE_MIPS16_ADDR, UNMAKE_MIPS16_ADDR): Delete.
* config/mips/tm-irix6.h (DEPRECATED_REGISTER_BYTES): Delete.
(TM_PRINT_INSN_MACH): Delete.
* config/mips/tm-irix5.h (DEPRECATED_REGISTER_BYTES): Delete.
* configure.tgt: Replace mips64*vr4xxx*el-*-elf*,
mips64*vr4xxx*-*-elf*, mips64*vr4300*el-*-elf*,
mips64*vr4300*-*-elf*, mips64*vr4100*el-*-elf*,

View File

@ -30,9 +30,6 @@
* Irix 6 (n32 ABI) has 32-bit GP regs and 64-bit FP regs
*/
#undef DEPRECATED_REGISTER_BYTES
#define DEPRECATED_REGISTER_BYTES (MIPS_NUMREGS * 8 + (NUM_REGS - MIPS_NUMREGS) * MIPS_REGSIZE)
#undef REGISTER_BYTE
#define REGISTER_BYTE(N) \
(((N) < FP0_REGNUM) ? (N) * MIPS_REGSIZE : \

View File

@ -62,9 +62,6 @@
#define FCRIR_REGNUM 70 /* FP implementation/revision */
#undef DEPRECATED_REGISTER_BYTES
#define DEPRECATED_REGISTER_BYTES (MIPS_NUMREGS * 8 + (NUM_REGS - MIPS_NUMREGS) * MIPS_REGSIZE)
#undef REGISTER_BYTE
#define REGISTER_BYTE(N) \
(((N) < FP0_REGNUM) ? (N) * MIPS_REGSIZE : \
@ -96,9 +93,5 @@
#define SIGFRAME_FPREGSAVE_OFF (SIGFRAME_BASE + 2 * 4 + 8 + 32 * 8 + 4)
#define SIGFRAME_REG_SIZE 8
/* Select the disassembler */
#undef TM_PRINT_INSN_MACH
#define TM_PRINT_INSN_MACH bfd_mach_mips8000
/* Undefine those methods which have been multiarched. */
#undef REGISTER_VIRTUAL_TYPE

View File

@ -1,7 +1,7 @@
/* Definitions to make GDB run on a mips box under 4.3bsd.
Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996,
1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
1997, 1998, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
Contributed by Per Bothner (bothner@cs.wisc.edu) at U.Wisconsin
and by Alessandro Forin (af@cs.cmu.edu) at CMU..
@ -45,15 +45,7 @@ extern int mips_step_skips_delay (CORE_ADDR);
#define STEP_SKIPS_DELAY_P (1)
#define STEP_SKIPS_DELAY(pc) (mips_step_skips_delay (pc))
/* Say how long (ordinary) registers are. This is a piece of bogosity
used in push_word and a few other places; REGISTER_RAW_SIZE is the
real way to know how big a register is. */
#define DEPRECATED_REGISTER_SIZE 4
/* The size of a register. This is predefined in tm-mips64.h. We
can't use DEPRECATED_REGISTER_SIZE because that is used for various other
things. */
/* The size of a register. This is predefined in tm-mips64.h. */
#ifndef MIPS_REGSIZE
#define MIPS_REGSIZE 4
@ -103,11 +95,6 @@ extern int mips_step_skips_delay (CORE_ADDR);
#define PRID_REGNUM 89 /* Processor ID */
#define LAST_EMBED_REGNUM 89 /* Last one */
/* Total amount of space needed to store our copies of the machine's
register state, the array `registers'. */
#define DEPRECATED_REGISTER_BYTES (NUM_REGS*MIPS_REGSIZE)
/* Index within `registers' of the first byte of the space for
register N. */
@ -182,10 +169,6 @@ extern void mips_print_extra_frame_info (struct frame_info *frame);
#define SETUP_ARBITRARY_FRAME(argc, argv) setup_arbitrary_frame (argc, argv)
extern struct frame_info *setup_arbitrary_frame (int, CORE_ADDR *);
/* Select the default mips disassembler */
#define TM_PRINT_INSN_MACH 0
/* These are defined in mdebugread.c and are used in mips-tdep.c */
extern CORE_ADDR sigtramp_address, sigtramp_end;
extern void fixup_sigtramp (void);
@ -197,22 +180,12 @@ extern char *mips_read_processor_type (void);
#define IGNORE_HELPER_CALL(pc) mips_ignore_helper (pc)
extern int mips_ignore_helper (CORE_ADDR pc);
#ifndef TARGET_MIPS
#define TARGET_MIPS
#endif
/* Definitions and declarations used by mips-tdep.c and remote-mips.c */
#define MIPS_INSTLEN 4 /* Length of an instruction */
#define MIPS16_INSTLEN 2 /* Length of an instruction on MIPS16 */
#define MIPS_NUMREGS 32 /* Number of integer or float registers */
typedef unsigned long t_inst; /* Integer big enough to hold an instruction */
/* MIPS16 function addresses are odd (bit 0 is set). Here are some
macros to test, set, or clear bit 0 of addresses. */
#define IS_MIPS16_ADDR(addr) ((addr) & 1)
#define MAKE_MIPS16_ADDR(addr) ((addr) | 1)
#define UNMAKE_MIPS16_ADDR(addr) ((addr) & ~1)
#endif /* TM_MIPS_H */
/* Command to set the processor type. */

View File

@ -152,6 +152,27 @@ static const char *mips_saved_regsize_string = size_auto;
#define MIPS_SAVED_REGSIZE (mips_saved_regsize())
/* MIPS16 function addresses are odd (bit 0 is set). Here are some
functions to test, set, or clear bit 0 of addresses. */
static CORE_ADDR
is_mips16_addr (CORE_ADDR addr)
{
return ((addr) & 1);
}
static CORE_ADDR
make_mips16_addr (CORE_ADDR addr)
{
return ((addr) | 1);
}
static CORE_ADDR
unmake_mips16_addr (CORE_ADDR addr)
{
return ((addr) & ~1);
}
/* Return the contents of register REGNUM as a signed integer. */
static LONGEST
@ -789,7 +810,7 @@ pc_is_mips16 (bfd_vma memaddr)
struct minimal_symbol *sym;
/* If bit 0 of the address is set, assume this is a MIPS16 address. */
if (IS_MIPS16_ADDR (memaddr))
if (is_mips16_addr (memaddr))
return 1;
/* A flag indicating that this is a MIPS16 function is stored by elfread.c in
@ -922,7 +943,7 @@ mips_fetch_instruction (CORE_ADDR addr)
if (pc_is_mips16 (addr))
{
instlen = MIPS16_INSTLEN;
addr = UNMAKE_MIPS16_ADDR (addr);
addr = unmake_mips16_addr (addr);
}
else
instlen = MIPS_INSTLEN;
@ -5108,7 +5129,7 @@ gdb_print_insn_mips (bfd_vma memaddr, disassemble_info *info)
the search would fail because the symbol table says the function
starts at an odd address, i.e. 1 byte past the given address. */
memaddr = ADDR_BITS_REMOVE (memaddr);
proc_desc = non_heuristic_proc_desc (MAKE_MIPS16_ADDR (memaddr), NULL);
proc_desc = non_heuristic_proc_desc (make_mips16_addr (memaddr), NULL);
/* Make an attempt to determine if this is a 16-bit function. If
the procedure descriptor exists and the address therein is odd,
@ -5116,10 +5137,10 @@ gdb_print_insn_mips (bfd_vma memaddr, disassemble_info *info)
guess that if the address passed in is odd, it's 16-bits. */
if (proc_desc)
info->mach = pc_is_mips16 (PROC_LOW_ADDR (proc_desc)) ?
bfd_mach_mips16 : TM_PRINT_INSN_MACH;
bfd_mach_mips16 : 0;
else
info->mach = pc_is_mips16 (memaddr) ?
bfd_mach_mips16 : TM_PRINT_INSN_MACH;
bfd_mach_mips16 : 0;
/* Round down the instruction address to the appropriate boundary. */
memaddr &= (info->mach == bfd_mach_mips16 ? ~1 : ~3);
@ -5146,7 +5167,7 @@ mips_breakpoint_from_pc (CORE_ADDR * pcptr, int *lenptr)
if (pc_is_mips16 (*pcptr))
{
static unsigned char mips16_big_breakpoint[] = {0xe8, 0xa5};
*pcptr = UNMAKE_MIPS16_ADDR (*pcptr);
*pcptr = unmake_mips16_addr (*pcptr);
*lenptr = sizeof (mips16_big_breakpoint);
return mips16_big_breakpoint;
}
@ -5176,7 +5197,7 @@ mips_breakpoint_from_pc (CORE_ADDR * pcptr, int *lenptr)
if (pc_is_mips16 (*pcptr))
{
static unsigned char mips16_little_breakpoint[] = {0xa5, 0xe8};
*pcptr = UNMAKE_MIPS16_ADDR (*pcptr);
*pcptr = unmake_mips16_addr (*pcptr);
*lenptr = sizeof (mips16_little_breakpoint);
return mips16_little_breakpoint;
}
@ -6163,8 +6184,6 @@ mips_dump_tdep (struct gdbarch *current_gdbarch, struct ui_file *file)
fprintf_unfiltered (file,
"mips_dump_tdep: IN_SOLIB_RETURN_TRAMPOLINE # %s\n",
XSTRING (IN_SOLIB_RETURN_TRAMPOLINE (PC, NAME)));
fprintf_unfiltered (file,
"mips_dump_tdep: IS_MIPS16_ADDR = FIXME!\n");
fprintf_unfiltered (file,
"mips_dump_tdep: LAST_EMBED_REGNUM = %d\n",
LAST_EMBED_REGNUM);
@ -6186,8 +6205,6 @@ mips_dump_tdep (struct gdbarch *current_gdbarch, struct ui_file *file)
"mips_dump_tdep: MACHINE_CPROC_SP_OFFSET = %d\n",
MACHINE_CPROC_SP_OFFSET);
#endif
fprintf_unfiltered (file,
"mips_dump_tdep: MAKE_MIPS16_ADDR = FIXME!\n");
fprintf_unfiltered (file,
"mips_dump_tdep: MIPS16_INSTLEN = %d\n",
MIPS16_INSTLEN);
@ -6334,11 +6351,6 @@ mips_dump_tdep (struct gdbarch *current_gdbarch, struct ui_file *file)
fprintf_unfiltered (file,
"mips_dump_tdep: TARGET_HAS_HARDWARE_WATCHPOINTS # %s\n",
XSTRING (TARGET_HAS_HARDWARE_WATCHPOINTS));
fprintf_unfiltered (file,
"mips_dump_tdep: TARGET_MIPS = used?\n");
fprintf_unfiltered (file,
"mips_dump_tdep: TM_PRINT_INSN_MACH # %s\n",
XSTRING (TM_PRINT_INSN_MACH));
#ifdef TRACE_CLEAR
fprintf_unfiltered (file,
"mips_dump_tdep: TRACE_CLEAR # %s\n",
@ -6359,8 +6371,6 @@ mips_dump_tdep (struct gdbarch *current_gdbarch, struct ui_file *file)
"mips_dump_tdep: TRACE_SET # %s\n",
XSTRING (TRACE_SET (X,STATE)));
#endif
fprintf_unfiltered (file,
"mips_dump_tdep: UNMAKE_MIPS16_ADDR = function?\n");
#ifdef UNUSED_REGNUM
fprintf_unfiltered (file,
"mips_dump_tdep: UNUSED_REGNUM = %d\n",