Line 219... |
Line 219... |
|
|
/* Number of bytes of storage in the actual machine representation for
|
/* Number of bytes of storage in the actual machine representation for
|
register N. NOTE: This indirectly defines the register size
|
register N. NOTE: This indirectly defines the register size
|
transfered by the GDB protocol. If we have 64bit processor
|
transfered by the GDB protocol. If we have 64bit processor
|
implementation, GPR register raw size is 8B, otherwise 4B. */
|
implementation, GPR register raw size is 8B, otherwise 4B. */
|
#define REGISTER_RAW_SIZE(N) ((OR1K_IS_GPR(N)?((OR1K_64BIT_IMPLEMENTATION)?\
|
#define REGISTER_RAW_SIZE(N) or1k_register_raw_size(N)
|
(8):(4)):(OR1K_SPR_REGSIZE)))
|
extern int or1k_register_raw_size PARAMS ((int regnum));
|
|
|
/* Number of bytes of storage in the program's representation
|
/* Number of bytes of storage in the program's representation
|
for register N. Same as RAW_SIZE. */
|
for register N. Same as RAW_SIZE. */
|
#define REGISTER_VIRTUAL_SIZE(N) TYPE_LENGTH (REGISTER_VIRTUAL_TYPE (N))
|
#define REGISTER_VIRTUAL_SIZE(N) TYPE_LENGTH (REGISTER_VIRTUAL_TYPE (N))
|
|
|
Line 253... |
Line 253... |
/* Should not store into R0. */
|
/* Should not store into R0. */
|
#define CANNOT_STORE_REGISTER(N) ((N) == 0)
|
#define CANNOT_STORE_REGISTER(N) ((N) == 0)
|
|
|
/* 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) * OR1K_SPR_REGSIZE)
|
#define REGISTER_BYTE(N) or1k_register_byte(N)
|
|
extern int or1k_register_byte PARAMS ((int regnum));
|
|
|
/* Total amount of space needed to store our copies of the machine's
|
/* Total amount of space needed to store our copies of the machine's
|
register state, the array `registers'. */
|
register state, the array `registers'. */
|
#define REGISTER_BYTES (NUM_REGS * OR1K_GPR_REGSIZE)
|
#define REGISTER_BYTES ((NUM_GPR_REGS * OR1K_GPR_REGSIZE) + \
|
|
(NUM_VF_REGS * OR1K_VF_REGSIZE) + \
|
|
(3 * OR1K_SPR_REGSIZE ))
|
|
|
extern void or1k_do_registers_info PARAMS ((int, int));
|
extern void or1k_do_registers_info PARAMS ((int, int));
|
#define DO_REGISTERS_INFO(regnum, fp) or1k_do_registers_info(regnum, fp)
|
#define DO_REGISTERS_INFO(regnum, fp) or1k_do_registers_info(regnum, fp)
|
|
|
|
|
Line 307... |
Line 310... |
#define HAVE_NONSTEPPABLE_WATCHPOINT
|
#define HAVE_NONSTEPPABLE_WATCHPOINT
|
|
|
extern int or1k_stopped_by_watchpoint PARAMS ((void));
|
extern int or1k_stopped_by_watchpoint PARAMS ((void));
|
#define STOPPED_BY_WATCHPOINT(w) or1k_stopped_by_watchpoint ()
|
#define STOPPED_BY_WATCHPOINT(w) or1k_stopped_by_watchpoint ()
|
|
|
typedef enum bptype;
|
typedef enum bptype bptype;
|
extern int or1k_can_use_hardware_watchpoint PARAMS ((enum bptype, int));
|
extern int or1k_can_use_hardware_watchpoint PARAMS ((enum bptype, int));
|
#define TARGET_CAN_USE_HARDWARE_WATCHPOINT(bp_type, cnt, ot) \
|
#define TARGET_CAN_USE_HARDWARE_WATCHPOINT(bp_type, cnt, ot) \
|
or1k_can_use_hardware_watchpoint(bp_type, cnt)
|
or1k_can_use_hardware_watchpoint(bp_type, cnt)
|
|
|
|
|
Line 362... |
Line 365... |
#define EXTRACT_STRUCT_VALUE_ADDRESS_P 1
|
#define EXTRACT_STRUCT_VALUE_ADDRESS_P 1
|
#endif
|
#endif
|
|
|
/* 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. */
|
extern CORE_ADDR or1k_skip_prologue PARAMS ((CORE_ADDR addr));
|
extern CORE_ADDR or1k_skip_prologue PARAMS ((CORE_ADDR addr, struct frame_info *fi));
|
#define SKIP_PROLOGUE(pc) (or1k_skip_prologue (pc))
|
#define SKIP_PROLOGUE(pc) (or1k_skip_prologue (pc, NULL))
|
|
|
/* FRAMES */
|
/* FRAMES */
|
|
|
#define FRAME_ARGS_ADDRESS(fi) (fi)->frame
|
#define FRAME_ARGS_ADDRESS(fi) (fi)->frame
|
|
|
Line 376... |
Line 379... |
/* FRAME_CHAIN takes a frame's nominal address
|
/* FRAME_CHAIN takes a frame's nominal address
|
and produces the frame's chain-pointer. */
|
and produces the frame's chain-pointer. */
|
#define FRAME_CHAIN(thisframe) (CORE_ADDR) or1k_frame_chain (thisframe)
|
#define FRAME_CHAIN(thisframe) (CORE_ADDR) or1k_frame_chain (thisframe)
|
extern CORE_ADDR or1k_frame_chain PARAMS ((struct frame_info *));
|
extern CORE_ADDR or1k_frame_chain PARAMS ((struct frame_info *));
|
|
|
|
extern void or1k_init_extra_frame_info (int fromleaf, struct frame_info *);
|
|
#define INIT_EXTRA_FRAME_INFO(fromleaf, fi) or1k_init_extra_frame_info (fromleaf, fi)
|
|
|
/* Discard from the stack the innermost frame, restoring all registers. */
|
/* Discard from the stack the innermost frame, restoring all registers. */
|
extern void or1k_pop_frame PARAMS ((void));
|
extern void or1k_pop_frame PARAMS ((void));
|
#define POP_FRAME or1k_pop_frame()
|
#define POP_FRAME or1k_pop_frame()
|
|
|
|
|