diff options
author | John Gilmore <gnu@cygnus> | 1994-01-12 07:47:14 +0000 |
---|---|---|
committer | John Gilmore <gnu@cygnus> | 1994-01-12 07:47:14 +0000 |
commit | eb5b74ca6c34ae1e26bdc15de021e0deb0d4ba9d (patch) | |
tree | 0f1350c97e0309b0b9e9c2cb1607ad83da1cd62c /gdb/config/a29k/tm-a29k.h | |
parent | a1c91916e89bcd9d0f4b97dda5aab7b5809a18c8 (diff) | |
download | gdb-eb5b74ca6c34ae1e26bdc15de021e0deb0d4ba9d.zip gdb-eb5b74ca6c34ae1e26bdc15de021e0deb0d4ba9d.tar.gz 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/tm-a29k.h')
-rw-r--r-- | gdb/config/a29k/tm-a29k.h | 30 |
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 *)); |