aboutsummaryrefslogtreecommitdiff
path: root/gdb/config/a29k
diff options
context:
space:
mode:
authorJohn Gilmore <gnu@cygnus>1994-01-12 07:47:14 +0000
committerJohn Gilmore <gnu@cygnus>1994-01-12 07:47:14 +0000
commiteb5b74ca6c34ae1e26bdc15de021e0deb0d4ba9d (patch)
tree0f1350c97e0309b0b9e9c2cb1607ad83da1cd62c /gdb/config/a29k
parenta1c91916e89bcd9d0f4b97dda5aab7b5809a18c8 (diff)
downloadfsf-binutils-gdb-eb5b74ca6c34ae1e26bdc15de021e0deb0d4ba9d.zip
fsf-binutils-gdb-eb5b74ca6c34ae1e26bdc15de021e0deb0d4ba9d.tar.gz
fsf-binutils-gdb-eb5b74ca6c34ae1e26bdc15de021e0deb0d4ba9d.tar.bz2
* a29k-tdep.c (init_frame_info): Cast null arg to examine_tag.
(pop_frame): Restore PC2 and LR0 from dummy frames. (push_dummy_frame): Save PC2 and LR0 into dummy frames. (setup_arbitrary_frame): Handle 3 args and set up real frames. * config/a29k/tm-a29k.h (FRAME_NUM_ARGS): Update comments. (DUMMY_FRAME_RSIZE): Add 2 longwords for PC2 and LR0. (SETUP_ARBITRARY_FRAME): Define.
Diffstat (limited to 'gdb/config/a29k')
-rw-r--r--gdb/config/a29k/tm-a29k.h30
1 files changed, 17 insertions, 13 deletions
diff --git a/gdb/config/a29k/tm-a29k.h b/gdb/config/a29k/tm-a29k.h
index cf5fbca..c87b572 100644
--- a/gdb/config/a29k/tm-a29k.h
+++ b/gdb/config/a29k/tm-a29k.h
@@ -1,5 +1,5 @@
-/* Parameters for target machine of AMD 29000, for GDB, the GNU debugger.
- Copyright 1990, 1991, 1993 Free Software Foundation, Inc.
+/* Parameters for target machine AMD 29000, for GDB, the GNU debugger.
+ Copyright 1990, 1991, 1993, 1994 Free Software Foundation, Inc.
Contributed by Cygnus Support. Written by Jim Kingdon.
This file is part of GDB.
@@ -504,16 +504,11 @@ extern CORE_ADDR frame_locals_address ();
/* Return number of args passed to a frame.
Can return -1, meaning no way to tell. */
-/* While we could go the effort of finding the tags word and getting
- the argcount field from it,
- (1) It only counts arguments in registers, i.e. the first 16 words
- of arguments
- (2) It gives the number of arguments the function was declared with
- not how many it was called with (or some variation, like all 16
- words for varadic functions). This makes argcount pretty much
- redundant with -g info, even for varadic functions.
- So don't bother. */
-#define FRAME_NUM_ARGS(numargs, fi) ((numargs) = -1)
+/* We tried going to the effort of finding the tags word and getting
+ the argcount field from it, to support debugging assembler code.
+ Problem was, the "argcount" field never did hold the argument
+ count. */
+#define FRAME_NUM_ARGS(numargs, fi) ((numargs) = -1)
#define FRAME_ARGS_ADDRESS(fi) FRAME_LOCALS_ADDRESS (fi)
@@ -544,6 +539,7 @@ extern CORE_ADDR frame_locals_address ();
|____________|<-msp 0 <-----------mfp_dummy_____| |
| | (at start) | save regs | |
| arg_slop | | pc0,pc1 | |
+ | | | pc2,lr0 sproc | |
| (16 words) | | gr96-gr124 | |
|____________|<-msp 1--after | sr160-sr162 | |
| | PUSH_DUMMY_FRAME| sr128-sr135 | |
@@ -591,7 +587,7 @@ extern CORE_ADDR frame_locals_address ();
#define DUMMY_FRAME_RSIZE \
(4 /* mfp_dummy */ \
- + 2 * 4 /* pc0, pc1 */ \
+ + 4 * 4 /* pc0, pc1, pc2, lr0 */ \
+ DUMMY_SAVE_GREGS * 4 \
+ DUMMY_SAVE_SR160 * 4 \
+ DUMMY_SAVE_SR128 * 4 \
@@ -716,3 +712,11 @@ extern enum a29k_processor_types {
/* Bit 0x400 of the CPS does identify freeze mode, i.e. 29050. */
a29k_freeze_mode
} processor_type;
+
+/* We need three arguments for a general frame specification for the
+ "frame" or "info frame" command. */
+
+#define SETUP_ARBITRARY_FRAME(argc, argv) setup_arbitrary_frame (argc, argv)
+/* FIXME: Depends on equivalence between FRAME and "struct frame_info *",
+ and equivalence between CORE_ADDR and FRAME_ADDR. */
+extern struct frame_info *setup_arbitrary_frame PARAMS ((int, CORE_ADDR *));