/* Target dependent code for the Motorola 68000 series.
- Copyright (C) 1990, 1992, 1993, 1994, 1995, 1996, 1999, 2000
+ Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1999, 2000, 2001
Free Software Foundation, Inc.
This file is part of GDB.
#include "value.h"
#include "gdb_string.h"
#include "inferior.h"
+#include "regcache.h"
\f
#define P_LINKL_FP 0x480e
#endif /* USE_PROC_FS */
-#ifdef GET_LONGJMP_TARGET
/* Figure out where the longjmp will land. Slurp the args out of the stack.
We expect the first arg to be a pointer to the jmp_buf structure from which
we extract the pc (JB_PC) that we will land at. The pc is copied into PC.
This routine returns true on success. */
+/* NOTE: cagney/2000-11-08: For this function to be fully multi-arched
+ the macro's JB_PC and JB_ELEMENT_SIZE would need to be moved into
+ the ``struct gdbarch_tdep'' object and then set on a target ISA/ABI
+ dependant basis. */
+
int
-get_longjmp_target (CORE_ADDR *pc)
+m68k_get_longjmp_target (CORE_ADDR *pc)
{
- char buf[TARGET_PTR_BIT / TARGET_CHAR_BIT];
+#if defined (JB_PC) && defined (JB_ELEMENT_SIZE)
+ char *buf;
CORE_ADDR sp, jb_addr;
+ buf = alloca (TARGET_PTR_BIT / TARGET_CHAR_BIT);
sp = read_register (SP_REGNUM);
if (target_read_memory (sp + SP_ARG0, /* Offset of first arg on stack */
*pc = extract_address (buf, TARGET_PTR_BIT / TARGET_CHAR_BIT);
return 1;
+#else
+ internal_error (__FILE__, __LINE__,
+ "m68k_get_longjmp_target: not implemented");
+ return 0;
+#endif
}
-#endif /* GET_LONGJMP_TARGET */
/* Immediately after a function call, return the saved pc before the frame
is setup. For sun3's, we check for the common case of being inside of a