/* Common target dependent code for GDB on Alpha systems.
- Copyright (C) 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2002, 2003 Free
- Software Foundation, Inc.
+ Copyright (C) 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2002, 2003, 2007
+ Free Software Foundation, Inc.
This file is part of GDB.
#ifndef ALPHA_TDEP_H
#define ALPHA_TDEP_H
+struct regcache;
+
/* Say how long (ordinary) registers are. This is a piece of bogosity
used in push_word and a few other places; register_size() is the
real way to know how big a register is. */
#define ALPHA_V0_REGNUM 0 /* Function integer return value */
#define ALPHA_T7_REGNUM 8 /* Return address register for OSF/1 __add* */
+#define ALPHA_S0_REGNUM 9 /* First saved register */
#define ALPHA_GCC_FP_REGNUM 15 /* Used by gcc as frame register */
#define ALPHA_A0_REGNUM 16 /* Loc of first arg during a subr call */
#define ALPHA_T9_REGNUM 23 /* Return address register for OSF/1 __div* */
#define ALPHA_PC_REGNUM 64 /* Contains program counter */
#define ALPHA_UNIQUE_REGNUM 66 /* PAL_rduniq value */
+/* Instruction size. */
+#define ALPHA_INSN_SIZE 4
+
/* The alpha has two different virtual pointers for arguments and locals.
The virtual argument pointer is pointing to the bottom of the argument
sigtramp unwinders. */
int (*pc_in_sigtramp) (CORE_ADDR pc, char *name);
+ /* If TYPE will be returned in memory, return true. */
+ int (*return_in_memory) (struct type *type);
+
/* Offset of registers in `struct sigcontext'. */
int sc_pc_offset;
int sc_regs_offset;
};
extern unsigned int alpha_read_insn (CORE_ADDR pc);
-extern void alpha_software_single_step (enum target_signal, int);
+extern int alpha_software_single_step (struct frame_info *frame);
extern CORE_ADDR alpha_after_prologue (CORE_ADDR pc);
extern void alpha_mdebug_init_abi (struct gdbarch_info, struct gdbarch *);
extern void alpha_dwarf2_init_abi (struct gdbarch_info, struct gdbarch *);
-extern void alpha_supply_int_regs (int, const void *, const void *,
- const void *);
-extern void alpha_fill_int_regs (int, void *, void *, void *);
-extern void alpha_supply_fp_regs (int, const void *, const void *);
-extern void alpha_fill_fp_regs (int, void *, void *);
+extern void alpha_supply_int_regs (struct regcache *, int, const void *,
+ const void *, const void *);
+extern void alpha_fill_int_regs (const struct regcache *, int,
+ void *, void *, void *);
+extern void alpha_supply_fp_regs (struct regcache *, int,
+ const void *, const void *);
+extern void alpha_fill_fp_regs (const struct regcache *,
+ int, void *, void *);
#endif /* ALPHA_TDEP_H */