* 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:
parent
52d9e61301
commit
f8453e34b9
3 changed files with 64 additions and 15 deletions
|
@ -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>
|
2002-01-19 Andrew Cagney <ac131313@redhat.com>
|
||||||
|
|
||||||
* config/mips/xm-news-mips.h: Delete file.
|
* config/mips/xm-news-mips.h: Delete file.
|
||||||
|
|
|
@ -322,6 +322,24 @@ alpha_register_virtual_type (int regno)
|
||||||
return ((regno >= FP0_REGNUM && regno < (FP0_REGNUM+31))
|
return ((regno >= FP0_REGNUM && regno < (FP0_REGNUM+31))
|
||||||
? builtin_type_double : builtin_type_long);
|
? 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
|
/* 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
|
Currently we must not skip more on the alpha, but we might need the
|
||||||
lenient stuff some day. */
|
lenient stuff some day. */
|
||||||
|
|
||||||
CORE_ADDR
|
static CORE_ADDR
|
||||||
alpha_skip_prologue (CORE_ADDR pc, int lenient)
|
alpha_skip_prologue_internal (CORE_ADDR pc, int lenient)
|
||||||
{
|
{
|
||||||
unsigned long inst;
|
unsigned long inst;
|
||||||
int offset;
|
int offset;
|
||||||
|
@ -1350,6 +1368,12 @@ alpha_skip_prologue (CORE_ADDR pc, int lenient)
|
||||||
return pc + offset;
|
return pc + offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CORE_ADDR
|
||||||
|
alpha_skip_prologue (CORE_ADDR addr)
|
||||||
|
{
|
||||||
|
return (alpha_skip_prologue_internal (addr, 0));
|
||||||
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
/* Is address PC in the prologue (loosely defined) for function at
|
/* Is address PC in the prologue (loosely defined) for function at
|
||||||
STARTADDR? */
|
STARTADDR? */
|
||||||
|
@ -1357,7 +1381,7 @@ alpha_skip_prologue (CORE_ADDR pc, int lenient)
|
||||||
static int
|
static int
|
||||||
alpha_in_lenient_prologue (CORE_ADDR startaddr, CORE_ADDR pc)
|
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;
|
return pc >= startaddr && pc < end_prologue;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -60,15 +60,15 @@ struct symbol;
|
||||||
/* Advance PC across any function entry prologue instructions
|
/* Advance PC across any function entry prologue instructions
|
||||||
to reach some "real" code. */
|
to reach some "real" code. */
|
||||||
|
|
||||||
#define SKIP_PROLOGUE(pc) (alpha_skip_prologue(pc, 0))
|
#define SKIP_PROLOGUE(pc) alpha_skip_prologue((pc))
|
||||||
extern CORE_ADDR alpha_skip_prologue (CORE_ADDR addr, int lenient);
|
extern CORE_ADDR alpha_skip_prologue (CORE_ADDR addr);
|
||||||
|
|
||||||
/* Immediately after a function call, return the saved pc.
|
/* Immediately after a function call, return the saved pc.
|
||||||
Can't always go through the frames for this because on some machines
|
Can't always go through the frames for this because on some machines
|
||||||
the new frame is not set up until the new function executes
|
the new frame is not set up until the new function executes
|
||||||
some instructions. */
|
some instructions. */
|
||||||
|
|
||||||
#define SAVED_PC_AFTER_CALL(frame) alpha_saved_pc_after_call(frame)
|
#define SAVED_PC_AFTER_CALL(frame) alpha_saved_pc_after_call(frame)
|
||||||
extern CORE_ADDR alpha_saved_pc_after_call (struct frame_info *);
|
extern CORE_ADDR alpha_saved_pc_after_call (struct frame_info *);
|
||||||
|
|
||||||
/* Are we currently handling a signal ? */
|
/* Are we currently handling a signal ? */
|
||||||
|
@ -144,17 +144,20 @@ extern int alpha_cannot_store_register (int);
|
||||||
/* 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. */
|
||||||
|
|
||||||
#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
|
/* Number of bytes of storage in the actual machine representation
|
||||||
for register N. On Alphas, all regs are 8 bytes. */
|
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
|
/* Number of bytes of storage in the program's representation
|
||||||
for register N. On Alphas, all regs are 8 bytes. */
|
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. */
|
/* 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. */
|
by FI does not have a frame on the stack associated with it. */
|
||||||
/* We handle this differently for alpha, and maybe we should not */
|
/* 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. */
|
/* 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 *);
|
extern CORE_ADDR alpha_frame_saved_pc (struct frame_info *);
|
||||||
|
|
||||||
/* The alpha has two different virtual pointers for arguments and locals.
|
/* 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.
|
/* Return number of args passed to a frame.
|
||||||
Can return -1, meaning no way to tell. */
|
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. */
|
/* Return number of bytes at start of arglist that are not really args. */
|
||||||
|
|
||||||
|
@ -312,12 +316,12 @@ alpha_push_arguments (int, struct value **, CORE_ADDR, int, CORE_ADDR);
|
||||||
|
|
||||||
/* Push an empty stack frame, to record the current PC, etc. */
|
/* Push an empty stack frame, to record the current PC, etc. */
|
||||||
|
|
||||||
#define PUSH_DUMMY_FRAME alpha_push_dummy_frame()
|
#define PUSH_DUMMY_FRAME alpha_push_dummy_frame()
|
||||||
extern void alpha_push_dummy_frame (void);
|
extern void alpha_push_dummy_frame (void);
|
||||||
|
|
||||||
/* Discard from the stack the innermost frame, restoring all registers. */
|
/* Discard from the stack the innermost frame, restoring all registers. */
|
||||||
|
|
||||||
#define POP_FRAME alpha_pop_frame()
|
#define POP_FRAME alpha_pop_frame()
|
||||||
extern void alpha_pop_frame (void);
|
extern void alpha_pop_frame (void);
|
||||||
|
|
||||||
/* Alpha OSF/1 inhibits execution of code on the stack.
|
/* Alpha OSF/1 inhibits execution of code on the stack.
|
||||||
|
@ -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
|
values are always passed in as doubles. Thus by setting this to 1, both
|
||||||
types of calls will work. */
|
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
|
/* Return TRUE if procedure descriptor PROC is a procedure descriptor
|
||||||
that refers to a dynamically generated sigtramp function.
|
that refers to a dynamically generated sigtramp function.
|
||||||
|
|
Loading…
Reference in a new issue