+2004-04-12 Mark Kettenis <kettenis@gnu.org>
+
+ * vax-tdep.h: Update copyright year. Adjust comments.
+ (VAX_REGISTER_SIZE, VAX_REGISTER_BYTES, VAX_MAX_REGISTER_RAW_SIZE,
+ VAX_MAX_REGISTER_VIRTUAL_SIZE): Remove macros.
+ (vax_regnum): New enum. Replacing...
+ (VAX_AP_REGNUM, VAX_FP_REGNUM, VAX_SP_REGNUM, VAX_PC_REGNUM)
+ (VAX_PS_REGNUM): ... these removed macros.
+ * vax-tdep.c (vax_register_name): Remove prototype.
+ (vax_register_name): Reorganize somewhat. Use ARRAY_SIZE.
+ (vax_register_byte, vax_register_raw_size,
+ vax_register_virtual_size, vax_register_virtual_type): Remove
+ functions.
+ (vax_register_type): New function.
+ (vax_breakpoint_from_pc): Reorganize.
+ (vax_gdbarch_init): Set register_type. Don't set
+ deprecated_register_size, deprecated_register_bytes,
+ deprecated_register_byte, deprecated_register_raw_size,
+ deprecated_max_register_raw_size,
+ deprecated_register_virtual_size,
+ deprecated_max_register_virtual_size and
+ deprecated_register_virtual_type. Add comment on stack direction.
+
2004-04-11 Mark Kettenis <kettenis@gnu.org>
* amd64-tdep.h (amd64_regnum): Add AMD64_CS_REGNUM,
#include "vax-tdep.h"
-static gdbarch_register_name_ftype vax_register_name;
-
static gdbarch_skip_prologue_ftype vax_skip_prologue;
static gdbarch_frame_num_args_ftype vax_frame_num_args;
static gdbarch_deprecated_frame_chain_ftype vax_frame_chain;
static gdbarch_deprecated_push_dummy_frame_ftype vax_push_dummy_frame;
\f
+
+/* Return the name of register REGNUM. */
+
static const char *
-vax_register_name (int regno)
+vax_register_name (int regnum)
{
static char *register_names[] =
{
- "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
- "r8", "r9", "r10", "r11", "ap", "fp", "sp", "pc",
+ "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
+ "r8", "r9", "r10", "r11", "ap", "fp", "sp", "pc",
"ps",
};
- if (regno < 0)
- return (NULL);
- if (regno >= (sizeof(register_names) / sizeof(*register_names)))
- return (NULL);
- return (register_names[regno]);
-}
+ if (regnum >= 0 && regnum < ARRAY_SIZE (register_names))
+ return register_names[regnum];
-static int
-vax_register_byte (int regno)
-{
- return (regno * 4);
+ return NULL;
}
-static int
-vax_register_raw_size (int regno)
-{
- return (4);
-}
-
-static int
-vax_register_virtual_size (int regno)
-{
- return (4);
-}
+/* Return the GDB type object for the "standard" data type of data in
+ register REGNUM. */
static struct type *
-vax_register_virtual_type (int regno)
+vax_register_type (struct gdbarch *gdbarch, int regnum)
{
- return (builtin_type_int);
+ return builtin_type_int;
}
\f
static void
deprecated_write_register_bytes (0, valbuf, TYPE_LENGTH (valtype));
}
\f
+
+/* Use the program counter to determine the contents and size of a
+ breakpoint instruction. Return a pointer to a string of bytes that
+ encode a breakpoint instruction, store the length of the string in
+ *LEN and optionally adjust *PC to point to the correct memory
+ location for inserting the breakpoint. */
+
static const unsigned char *
-vax_breakpoint_from_pc (CORE_ADDR *pcptr, int *lenptr)
+vax_breakpoint_from_pc (CORE_ADDR *pc, int *len)
{
- static const unsigned char vax_breakpoint[] = { 3 };
+ static unsigned char break_insn[] = { 3 };
- *lenptr = sizeof(vax_breakpoint);
- return (vax_breakpoint);
+ *len = sizeof (break_insn);
+ return break_insn;
}
\f
/* Advance PC across any function entry prologue instructions
/* Register info */
set_gdbarch_num_regs (gdbarch, VAX_NUM_REGS);
+ set_gdbarch_register_name (gdbarch, vax_register_name);
+ set_gdbarch_register_type (gdbarch, vax_register_type);
set_gdbarch_sp_regnum (gdbarch, VAX_SP_REGNUM);
set_gdbarch_deprecated_fp_regnum (gdbarch, VAX_FP_REGNUM);
set_gdbarch_pc_regnum (gdbarch, VAX_PC_REGNUM);
set_gdbarch_ps_regnum (gdbarch, VAX_PS_REGNUM);
- set_gdbarch_register_name (gdbarch, vax_register_name);
- set_gdbarch_deprecated_register_size (gdbarch, VAX_REGISTER_SIZE);
- set_gdbarch_deprecated_register_bytes (gdbarch, VAX_REGISTER_BYTES);
- set_gdbarch_deprecated_register_byte (gdbarch, vax_register_byte);
- set_gdbarch_deprecated_register_raw_size (gdbarch, vax_register_raw_size);
- set_gdbarch_deprecated_max_register_raw_size (gdbarch, VAX_MAX_REGISTER_RAW_SIZE);
- set_gdbarch_deprecated_register_virtual_size (gdbarch, vax_register_virtual_size);
- set_gdbarch_deprecated_max_register_virtual_size (gdbarch,
- VAX_MAX_REGISTER_VIRTUAL_SIZE);
- set_gdbarch_deprecated_register_virtual_type (gdbarch, vax_register_virtual_type);
-
/* Frame and stack info */
set_gdbarch_skip_prologue (gdbarch, vax_skip_prologue);
set_gdbarch_deprecated_saved_pc_after_call (gdbarch, vax_saved_pc_after_call);
set_gdbarch_frame_args_skip (gdbarch, 4);
+ /* Stack grows downward. */
set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
/* Return value info */
-/* Common target dependent code for GDB on VAX systems.
- Copyright 2002, 2003 Free Software Foundation, Inc.
+/* Target-dependent code for the VAX.
+
+ Copyright 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
#ifndef VAX_TDEP_H
#define VAX_TDEP_H
-/* Say how long (ordinary) registers are. This is a piece of bogosity
- used in push_word and a few other places; DEPRECATED_REGISTER_RAW_SIZE is the
- real way to know how big a register is. */
-#define VAX_REGISTER_SIZE 4
+/* Register numbers of various important registers. */
+
+enum vax_regnum
+{
+ VAX_AP_REGNUM = 12, /* Argument pointer on user stack. */
+ VAX_FP_REGNUM, /* Address of executing stack frame. */
+ VAX_SP_REGNUM, /* Address of top of stack. */
+ VAX_PC_REGNUM, /* Program counter. */
+ VAX_PS_REGNUM /* Processor status. */
+};
/* Number of machine registers. */
#define VAX_NUM_REGS 17
-/* Total amount of space needed to store our copies of the machine's
- register state. */
-#define VAX_REGISTER_BYTES (VAX_NUM_REGS * 4)
-
-/* Largest value DEPRECATED_REGISTER_RAW_SIZE can have. */
-#define VAX_MAX_REGISTER_RAW_SIZE 4
-
-/* Largest value DEPRECATED_REGISTER_VIRTUAL_SIZE can have. */
-#define VAX_MAX_REGISTER_VIRTUAL_SIZE 4
-
-/* Register numbers of various important registers.
- Note that most of these values are "real" register numbers,
- and correspond to the general registers of the machine,
- and are "phony" register numbers which is too large
- to be an actual register number as far as the user is concerned
- but serves to get the desired value when passed to read_register. */
-
-#define VAX_AP_REGNUM 12 /* argument pointer */
-#define VAX_FP_REGNUM 13 /* Contains address of executing stack frame */
-#define VAX_SP_REGNUM 14 /* Contains address of top of stack */
-#define VAX_PC_REGNUM 15 /* Contains program counter */
-#define VAX_PS_REGNUM 16 /* Contains processor status */
-
-#endif /* VAX_TDEP_H */
+#endif /* vax-tdep.h */