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> 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*, * configure.tgt: Replace mips64*vr4xxx*el-*-elf*,
mips64*vr4xxx*-*-elf*, mips64*vr4300*el-*-elf*, mips64*vr4xxx*-*-elf*, mips64*vr4300*el-*-elf*,
mips64*vr4300*-*-elf*, mips64*vr4100*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 * 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 #undef REGISTER_BYTE
#define REGISTER_BYTE(N) \ #define REGISTER_BYTE(N) \
(((N) < FP0_REGNUM) ? (N) * MIPS_REGSIZE : \ (((N) < FP0_REGNUM) ? (N) * MIPS_REGSIZE : \

View File

@ -62,9 +62,6 @@
#define FCRIR_REGNUM 70 /* FP implementation/revision */ #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 #undef REGISTER_BYTE
#define REGISTER_BYTE(N) \ #define REGISTER_BYTE(N) \
(((N) < FP0_REGNUM) ? (N) * MIPS_REGSIZE : \ (((N) < FP0_REGNUM) ? (N) * MIPS_REGSIZE : \
@ -96,9 +93,5 @@
#define SIGFRAME_FPREGSAVE_OFF (SIGFRAME_BASE + 2 * 4 + 8 + 32 * 8 + 4) #define SIGFRAME_FPREGSAVE_OFF (SIGFRAME_BASE + 2 * 4 + 8 + 32 * 8 + 4)
#define SIGFRAME_REG_SIZE 8 #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. */ /* Undefine those methods which have been multiarched. */
#undef REGISTER_VIRTUAL_TYPE #undef REGISTER_VIRTUAL_TYPE

View File

@ -1,7 +1,7 @@
/* Definitions to make GDB run on a mips box under 4.3bsd. /* Definitions to make GDB run on a mips box under 4.3bsd.
Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 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 Contributed by Per Bothner (bothner@cs.wisc.edu) at U.Wisconsin
and by Alessandro Forin (af@cs.cmu.edu) at CMU.. 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_P (1)
#define STEP_SKIPS_DELAY(pc) (mips_step_skips_delay (pc)) #define STEP_SKIPS_DELAY(pc) (mips_step_skips_delay (pc))
/* Say how long (ordinary) registers are. This is a piece of bogosity /* The size of a register. This is predefined in tm-mips64.h. */
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. */
#ifndef MIPS_REGSIZE #ifndef MIPS_REGSIZE
#define MIPS_REGSIZE 4 #define MIPS_REGSIZE 4
@ -103,11 +95,6 @@ extern int mips_step_skips_delay (CORE_ADDR);
#define PRID_REGNUM 89 /* Processor ID */ #define PRID_REGNUM 89 /* Processor ID */
#define LAST_EMBED_REGNUM 89 /* Last one */ #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 /* Index within `registers' of the first byte of the space for
register N. */ 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) #define SETUP_ARBITRARY_FRAME(argc, argv) setup_arbitrary_frame (argc, argv)
extern struct frame_info *setup_arbitrary_frame (int, CORE_ADDR *); 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 */ /* These are defined in mdebugread.c and are used in mips-tdep.c */
extern CORE_ADDR sigtramp_address, sigtramp_end; extern CORE_ADDR sigtramp_address, sigtramp_end;
extern void fixup_sigtramp (void); 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) #define IGNORE_HELPER_CALL(pc) mips_ignore_helper (pc)
extern int mips_ignore_helper (CORE_ADDR 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 */ /* Definitions and declarations used by mips-tdep.c and remote-mips.c */
#define MIPS_INSTLEN 4 /* Length of an instruction */ #define MIPS_INSTLEN 4 /* Length of an instruction */
#define MIPS16_INSTLEN 2 /* Length of an instruction on MIPS16 */ #define MIPS16_INSTLEN 2 /* Length of an instruction on MIPS16 */
#define MIPS_NUMREGS 32 /* Number of integer or float registers */ #define MIPS_NUMREGS 32 /* Number of integer or float registers */
typedef unsigned long t_inst; /* Integer big enough to hold an instruction */ 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 */ #endif /* TM_MIPS_H */
/* Command to set the processor type. */ /* 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()) #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. */ /* Return the contents of register REGNUM as a signed integer. */
static LONGEST static LONGEST
@ -789,7 +810,7 @@ pc_is_mips16 (bfd_vma memaddr)
struct minimal_symbol *sym; struct minimal_symbol *sym;
/* If bit 0 of the address is set, assume this is a MIPS16 address. */ /* 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; return 1;
/* A flag indicating that this is a MIPS16 function is stored by elfread.c in /* 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)) if (pc_is_mips16 (addr))
{ {
instlen = MIPS16_INSTLEN; instlen = MIPS16_INSTLEN;
addr = UNMAKE_MIPS16_ADDR (addr); addr = unmake_mips16_addr (addr);
} }
else else
instlen = MIPS_INSTLEN; 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 the search would fail because the symbol table says the function
starts at an odd address, i.e. 1 byte past the given address. */ starts at an odd address, i.e. 1 byte past the given address. */
memaddr = ADDR_BITS_REMOVE (memaddr); 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 /* Make an attempt to determine if this is a 16-bit function. If
the procedure descriptor exists and the address therein is odd, 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. */ guess that if the address passed in is odd, it's 16-bits. */
if (proc_desc) if (proc_desc)
info->mach = pc_is_mips16 (PROC_LOW_ADDR (proc_desc)) ? info->mach = pc_is_mips16 (PROC_LOW_ADDR (proc_desc)) ?
bfd_mach_mips16 : TM_PRINT_INSN_MACH; bfd_mach_mips16 : 0;
else else
info->mach = pc_is_mips16 (memaddr) ? 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. */ /* Round down the instruction address to the appropriate boundary. */
memaddr &= (info->mach == bfd_mach_mips16 ? ~1 : ~3); 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)) if (pc_is_mips16 (*pcptr))
{ {
static unsigned char mips16_big_breakpoint[] = {0xe8, 0xa5}; static unsigned char mips16_big_breakpoint[] = {0xe8, 0xa5};
*pcptr = UNMAKE_MIPS16_ADDR (*pcptr); *pcptr = unmake_mips16_addr (*pcptr);
*lenptr = sizeof (mips16_big_breakpoint); *lenptr = sizeof (mips16_big_breakpoint);
return 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)) if (pc_is_mips16 (*pcptr))
{ {
static unsigned char mips16_little_breakpoint[] = {0xa5, 0xe8}; static unsigned char mips16_little_breakpoint[] = {0xa5, 0xe8};
*pcptr = UNMAKE_MIPS16_ADDR (*pcptr); *pcptr = unmake_mips16_addr (*pcptr);
*lenptr = sizeof (mips16_little_breakpoint); *lenptr = sizeof (mips16_little_breakpoint);
return 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, fprintf_unfiltered (file,
"mips_dump_tdep: IN_SOLIB_RETURN_TRAMPOLINE # %s\n", "mips_dump_tdep: IN_SOLIB_RETURN_TRAMPOLINE # %s\n",
XSTRING (IN_SOLIB_RETURN_TRAMPOLINE (PC, NAME))); XSTRING (IN_SOLIB_RETURN_TRAMPOLINE (PC, NAME)));
fprintf_unfiltered (file,
"mips_dump_tdep: IS_MIPS16_ADDR = FIXME!\n");
fprintf_unfiltered (file, fprintf_unfiltered (file,
"mips_dump_tdep: LAST_EMBED_REGNUM = %d\n", "mips_dump_tdep: LAST_EMBED_REGNUM = %d\n",
LAST_EMBED_REGNUM); 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", "mips_dump_tdep: MACHINE_CPROC_SP_OFFSET = %d\n",
MACHINE_CPROC_SP_OFFSET); MACHINE_CPROC_SP_OFFSET);
#endif #endif
fprintf_unfiltered (file,
"mips_dump_tdep: MAKE_MIPS16_ADDR = FIXME!\n");
fprintf_unfiltered (file, fprintf_unfiltered (file,
"mips_dump_tdep: MIPS16_INSTLEN = %d\n", "mips_dump_tdep: MIPS16_INSTLEN = %d\n",
MIPS16_INSTLEN); MIPS16_INSTLEN);
@ -6334,11 +6351,6 @@ mips_dump_tdep (struct gdbarch *current_gdbarch, struct ui_file *file)
fprintf_unfiltered (file, fprintf_unfiltered (file,
"mips_dump_tdep: TARGET_HAS_HARDWARE_WATCHPOINTS # %s\n", "mips_dump_tdep: TARGET_HAS_HARDWARE_WATCHPOINTS # %s\n",
XSTRING (TARGET_HAS_HARDWARE_WATCHPOINTS)); 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 #ifdef TRACE_CLEAR
fprintf_unfiltered (file, fprintf_unfiltered (file,
"mips_dump_tdep: TRACE_CLEAR # %s\n", "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", "mips_dump_tdep: TRACE_SET # %s\n",
XSTRING (TRACE_SET (X,STATE))); XSTRING (TRACE_SET (X,STATE)));
#endif #endif
fprintf_unfiltered (file,
"mips_dump_tdep: UNMAKE_MIPS16_ADDR = function?\n");
#ifdef UNUSED_REGNUM #ifdef UNUSED_REGNUM
fprintf_unfiltered (file, fprintf_unfiltered (file,
"mips_dump_tdep: UNUSED_REGNUM = %d\n", "mips_dump_tdep: UNUSED_REGNUM = %d\n",