* alpha-tdep.c (alpha_register_byte): New function.

(alpha_register_raw_size): Ditto.
(alpha_register_virtual_size): Ditto.
(alpha_skip_prologue_internal): Renamed from
alpha_skip_prologue.
(alpha_skip_prologue): New version that calls
alpha_skip_prologue_internal.
(alpha_in_lenient_prologue): Use alpha_skip_prologue_internal.
* config/alpha/tm-alpha.h (SKIP_PROLOGUE): Remove
second argument from alpha_skip_prologue.
(REGISTER_BYTE): Use alpha_register_byte.
(REGISTER_RAW_SIZE): Use alpha_register_raw_size.
(REGISTER_VIRTUAL_SIZE): Use alpha_register_virtual_size.
(FRAMELESS_FUNCTION_INVOCATION): Use
generic_frameless_function_invocation_not.
(FRAME_NUM_ARGS): Use frame_num_args_unknown.
(COERCE_FLOAT_TO_DOUBLE): Use standard_coerce_float_to_double.
This commit is contained in:
Jason Thorpe
2002-01-20 01:33:15 +00:00
parent 52d9e61301
commit f8453e34b9
3 changed files with 64 additions and 15 deletions

View File

@@ -1,3 +1,23 @@
2002-01-19 Jason Thorpe <thorpej@wasabisystems.com>
* alpha-tdep.c (alpha_register_byte): New function.
(alpha_register_raw_size): Ditto.
(alpha_register_virtual_size): Ditto.
(alpha_skip_prologue_internal): Renamed from
alpha_skip_prologue.
(alpha_skip_prologue): New version that calls
alpha_skip_prologue_internal.
(alpha_in_lenient_prologue): Use alpha_skip_prologue_internal.
* config/alpha/tm-alpha.h (SKIP_PROLOGUE): Remove
second argument from alpha_skip_prologue.
(REGISTER_BYTE): Use alpha_register_byte.
(REGISTER_RAW_SIZE): Use alpha_register_raw_size.
(REGISTER_VIRTUAL_SIZE): Use alpha_register_virtual_size.
(FRAMELESS_FUNCTION_INVOCATION): Use
generic_frameless_function_invocation_not.
(FRAME_NUM_ARGS): Use frame_num_args_unknown.
(COERCE_FLOAT_TO_DOUBLE): Use standard_coerce_float_to_double.
2002-01-19 Andrew Cagney <ac131313@redhat.com>
* config/mips/xm-news-mips.h: Delete file.

View File

@@ -322,6 +322,24 @@ alpha_register_virtual_type (int regno)
return ((regno >= FP0_REGNUM && regno < (FP0_REGNUM+31))
? builtin_type_double : builtin_type_long);
}
int
alpha_register_byte (int regno)
{
return (regno * 8);
}
int
alpha_register_raw_size (int regno)
{
return 8;
}
int
alpha_register_virtual_size (int regno)
{
return 8;
}
/* Guaranteed to set frame->saved_regs to some values (it never leaves it
@@ -1277,8 +1295,8 @@ alpha_pop_frame (void)
Currently we must not skip more on the alpha, but we might need the
lenient stuff some day. */
CORE_ADDR
alpha_skip_prologue (CORE_ADDR pc, int lenient)
static CORE_ADDR
alpha_skip_prologue_internal (CORE_ADDR pc, int lenient)
{
unsigned long inst;
int offset;
@@ -1350,6 +1368,12 @@ alpha_skip_prologue (CORE_ADDR pc, int lenient)
return pc + offset;
}
CORE_ADDR
alpha_skip_prologue (CORE_ADDR addr)
{
return (alpha_skip_prologue_internal (addr, 0));
}
#if 0
/* Is address PC in the prologue (loosely defined) for function at
STARTADDR? */
@@ -1357,7 +1381,7 @@ alpha_skip_prologue (CORE_ADDR pc, int lenient)
static int
alpha_in_lenient_prologue (CORE_ADDR startaddr, CORE_ADDR pc)
{
CORE_ADDR end_prologue = alpha_skip_prologue (startaddr, 1);
CORE_ADDR end_prologue = alpha_skip_prologue_internal (startaddr, 1);
return pc >= startaddr && pc < end_prologue;
}
#endif

View File

@@ -60,8 +60,8 @@ struct symbol;
/* Advance PC across any function entry prologue instructions
to reach some "real" code. */
#define SKIP_PROLOGUE(pc) (alpha_skip_prologue(pc, 0))
extern CORE_ADDR alpha_skip_prologue (CORE_ADDR addr, int lenient);
#define SKIP_PROLOGUE(pc) alpha_skip_prologue((pc))
extern CORE_ADDR alpha_skip_prologue (CORE_ADDR addr);
/* Immediately after a function call, return the saved pc.
Can't always go through the frames for this because on some machines
@@ -144,17 +144,20 @@ extern int alpha_cannot_store_register (int);
/* Index within `registers' of the first byte of the space for
register N. */
#define REGISTER_BYTE(N) ((N) * 8)
#define REGISTER_BYTE(N) alpha_register_byte ((N))
extern int alpha_register_byte (int);
/* Number of bytes of storage in the actual machine representation
for register N. On Alphas, all regs are 8 bytes. */
#define REGISTER_RAW_SIZE(N) 8
#define REGISTER_RAW_SIZE(N) alpha_register_raw_size ((N))
extern int alpha_register_raw_size (int);
/* Number of bytes of storage in the program's representation
for register N. On Alphas, all regs are 8 bytes. */
#define REGISTER_VIRTUAL_SIZE(N) 8
#define REGISTER_VIRTUAL_SIZE(N) alpha_register_virtual_size ((N))
extern int alpha_register_virtual_size (int);
/* Largest value REGISTER_RAW_SIZE can have. */
@@ -255,11 +258,12 @@ extern CORE_ADDR alpha_frame_chain (struct frame_info *);
by FI does not have a frame on the stack associated with it. */
/* We handle this differently for alpha, and maybe we should not */
#define FRAMELESS_FUNCTION_INVOCATION(FI) (0)
#define FRAMELESS_FUNCTION_INVOCATION(FI) \
generic_frameless_function_invocation_not ((FI))
/* Saved Pc. */
#define FRAME_SAVED_PC(FRAME) (alpha_frame_saved_pc(FRAME))
#define FRAME_SAVED_PC(FRAME) alpha_frame_saved_pc(FRAME)
extern CORE_ADDR alpha_frame_saved_pc (struct frame_info *);
/* The alpha has two different virtual pointers for arguments and locals.
@@ -286,7 +290,7 @@ extern CORE_ADDR alpha_frame_locals_address (struct frame_info *);
/* Return number of args passed to a frame.
Can return -1, meaning no way to tell. */
#define FRAME_NUM_ARGS(fi) (-1)
#define FRAME_NUM_ARGS(fi) frame_num_args_unknown ((fi))
/* Return number of bytes at start of arglist that are not really args. */
@@ -432,7 +436,8 @@ extern struct frame_info *setup_arbitrary_frame (int, CORE_ADDR *);
values are always passed in as doubles. Thus by setting this to 1, both
types of calls will work. */
#define COERCE_FLOAT_TO_DOUBLE(formal, actual) (1)
#define COERCE_FLOAT_TO_DOUBLE(formal, actual) \
standard_coerce_float_to_double ((formal), (actual))
/* Return TRUE if procedure descriptor PROC is a procedure descriptor
that refers to a dynamically generated sigtramp function.