/* Target dependent code for the NS32000, for GDB.
- Copyright 1986, 1988, 1991, 1992, 1994, 1995, 1998, 1999, 2000, 2001,
- 2002, 2003 Free Software Foundation, Inc.
+
+ Copyright 1986, 1988, 1991, 1992, 1994, 1995, 1998, 1999, 2000,
+ 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
static CORE_ADDR
umax_skip_prologue (CORE_ADDR pc)
{
- register unsigned char op = read_memory_integer (pc, 1);
+ unsigned char op = read_memory_integer (pc, 1);
if (op == 0x82)
{
op = read_memory_integer (pc + 2, 1);
/* In the case of the NS32000 series, the frame's nominal address is the
FP value, and that address is saved at the previous FP value as a
4-byte word. */
-
- if (inside_entry_file (get_frame_pc (frame)))
- return 0;
-
return (read_memory_integer (get_frame_base (frame), 4));
}
sigcontext_addr = read_memory_typed_address
(read_register (SP_REGNUM) + sigcontext_offs, builtin_type_void_data_ptr);
- /* Don't cause a memory_error when accessing sigcontext in case the stack
+ /* Offset to saved PC in sigcontext, from <machine/signal.h>. Don't
+ cause a memory_error when accessing sigcontext in case the stack
layout has changed or the stack is corrupt. */
- target_read_memory (sigcontext_addr + SIGCONTEXT_PC_OFFSET, buf, ptrbytes);
+ target_read_memory (sigcontext_addr + 20, buf, ptrbytes);
return extract_typed_address (buf, builtin_type_void_func_ptr);
}
int localcount;
CORE_ADDR enter_addr, next_addr;
- if (get_frame_saved_regs (frame))
+ if (deprecated_get_frame_saved_regs (frame))
return;
frame_saved_regs_zalloc (frame);
for (regnum = 0; regnum < 8; regnum++)
{
if (regmask & (1 << regnum))
- get_frame_saved_regs (frame)[regnum] = next_addr -= 4;
+ deprecated_get_frame_saved_regs (frame)[regnum] = next_addr -= 4;
}
- get_frame_saved_regs (frame)[SP_REGNUM] = get_frame_base (frame) + 4;
- get_frame_saved_regs (frame)[PC_REGNUM] = get_frame_base (frame) + 4;
- get_frame_saved_regs (frame)[DEPRECATED_FP_REGNUM] = read_memory_integer (get_frame_base (frame), 4);
+ deprecated_get_frame_saved_regs (frame)[SP_REGNUM] = get_frame_base (frame) + 4;
+ deprecated_get_frame_saved_regs (frame)[PC_REGNUM] = get_frame_base (frame) + 4;
+ deprecated_get_frame_saved_regs (frame)[DEPRECATED_FP_REGNUM] = read_memory_integer (get_frame_base (frame), 4);
}
else if (enter_addr == 1)
{
CORE_ADDR sp = read_register (SP_REGNUM);
- get_frame_saved_regs (frame)[PC_REGNUM] = sp;
- get_frame_saved_regs (frame)[SP_REGNUM] = sp + 4;
+ deprecated_get_frame_saved_regs (frame)[PC_REGNUM] = sp;
+ deprecated_get_frame_saved_regs (frame)[SP_REGNUM] = sp + 4;
}
}
DEPRECATED_FRAME_INIT_SAVED_REGS (frame);
for (regnum = 0; regnum < 8; regnum++)
- if (get_frame_saved_regs (frame)[regnum])
+ if (deprecated_get_frame_saved_regs (frame)[regnum])
write_register (regnum,
- read_memory_integer (get_frame_saved_regs (frame)[regnum], 4));
+ read_memory_integer (deprecated_get_frame_saved_regs (frame)[regnum], 4));
write_register (DEPRECATED_FP_REGNUM, read_memory_integer (fp, 4));
write_register (PC_REGNUM, read_memory_integer (fp + 4, 4));
ns32k_extract_return_value (struct type *valtype, char *regbuf, char *valbuf)
{
memcpy (valbuf,
- regbuf + REGISTER_BYTE (TYPE_CODE (valtype) == TYPE_CODE_FLT ?
+ regbuf + DEPRECATED_REGISTER_BYTE (TYPE_CODE (valtype) == TYPE_CODE_FLT ?
FP0_REGNUM : 0), TYPE_LENGTH (valtype));
}
TYPE_LENGTH (valtype));
}
-static CORE_ADDR
-ns32k_extract_struct_value_address (char *regbuf)
-{
- return (extract_unsigned_integer (regbuf + REGISTER_BYTE (0), REGISTER_RAW_SIZE (0)));
-}
-\f
void
ns32k_gdbarch_init_32082 (struct gdbarch *gdbarch)
{
/* NOTE: cagney/2002-12-06: This can be deleted when this arch is
ready to unwind the PC first (see frame.c:get_prev_frame()). */
- set_gdbarch_deprecated_init_frame_pc (gdbarch, init_frame_pc_default);
+ set_gdbarch_deprecated_init_frame_pc (gdbarch, deprecated_init_frame_pc_default);
/* Register info */
ns32k_gdbarch_init_32082 (gdbarch);
set_gdbarch_deprecated_store_struct_return (gdbarch, ns32k_store_struct_return);
set_gdbarch_deprecated_extract_return_value (gdbarch, ns32k_extract_return_value);
set_gdbarch_deprecated_store_return_value (gdbarch, ns32k_store_return_value);
- set_gdbarch_deprecated_extract_struct_value_address (gdbarch,
- ns32k_extract_struct_value_address);
/* Call dummy info */
set_gdbarch_deprecated_push_dummy_frame (gdbarch, ns32k_push_dummy_frame);
set_gdbarch_deprecated_pc_in_call_dummy (gdbarch, deprecated_pc_in_call_dummy_on_stack);
/* Breakpoint info */
- set_gdbarch_decr_pc_after_break (gdbarch, 0);
set_gdbarch_breakpoint_from_pc (gdbarch, ns32k_breakpoint_from_pc);
- /* Misc info */
- set_gdbarch_function_start_offset (gdbarch, 0);
-
/* Should be using push_dummy_call. */
set_gdbarch_deprecated_dummy_write_sp (gdbarch, deprecated_write_sp);