diff options
author | Andrew Cagney <cagney@redhat.com> | 1998-05-27 14:13:32 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 1998-05-27 14:13:32 +0000 |
commit | ea45efcfe3be7fe4420af3c5ae3b08d5a51becc0 (patch) | |
tree | 418bd3a8f458c0c9af9918fa1fff000d4e7d88c2 /gdb | |
parent | fc23c14efc3b16df6a1c843b683352f1421861cd (diff) | |
download | gdb-ea45efcfe3be7fe4420af3c5ae3b08d5a51becc0.zip gdb-ea45efcfe3be7fe4420af3c5ae3b08d5a51becc0.tar.gz gdb-ea45efcfe3be7fe4420af3c5ae3b08d5a51becc0.tar.bz2 |
Stop GDB getting confused over r29 and FP. print $r29 and info
registers r29 gave different values.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 14 | ||||
-rw-r--r-- | gdb/config/v850/tm-v850.h | 11 | ||||
-rw-r--r-- | gdb/v850-tdep.c | 10 |
3 files changed, 27 insertions, 8 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index da78f93..f05eb37 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,17 @@ +Mon Apr 27 14:37:49 1998 Andrew Cagney <cagney@b1.cygnus.com> + + * config/v850/tm-v850.h (REGISTER_BYTE): FP_REGNUM and + FP_RAW_REGNUM use the same register location. + + * v850-tdep.c (v850_scan_prologue): Use FP_RAW_REGNUM instead of + FP_REGNUM. + (v850_frame_chain): Ditto. + + * config/v850/tm-v850.h (REGISTER_NAMES): Add "fp". + (NUM_REGS): Update. + (FP_REGNUM): Update. + (FP_RAW_REGNUM): Define. + Mon May 25 13:31:27 1998 Keith Seitz <keiths@cygnus.com> * remote.c (remote_open_1): If an error occurs starting the remote, diff --git a/gdb/config/v850/tm-v850.h b/gdb/config/v850/tm-v850.h index c218f00..a53952e 100644 --- a/gdb/config/v850/tm-v850.h +++ b/gdb/config/v850/tm-v850.h @@ -20,7 +20,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define TARGET_BYTE_ORDER LITTLE_ENDIAN -#define NUM_REGS 65 +#define NUM_REGS 66 #define REGISTER_NAMES \ { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", \ @@ -32,7 +32,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ "sr8", "sr9", "sr10", "sr11", "sr12", "sr13", "sr14", "sr15", \ "sr16", "sr17", "sr18", "sr19", "sr20", "sr21", "sr22", "sr23", \ "sr24", "sr25", "sr26", "sr27", "sr28", "sr29", "sr30", "sr31", \ - "pc" } + \ + "pc", "fp" } #define REGISTER_BYTES (NUM_REGS * 4) @@ -51,13 +52,17 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define R12_REGNUM 12 #define SAVE2_START_REGNUM 20 #define SAVE2_END_REGNUM 29 -#define FP_REGNUM 29 #define EP_REGNUM 30 #define SAVE3_START_REGNUM 31 #define SAVE3_END_REGNUM 31 #define RP_REGNUM 31 #define PS_REGNUM 37 #define PC_REGNUM 64 +#define FP_REGNUM 65 +#define FP_RAW_REGNUM 29 + +#define TARGET_READ_FP() read_register (FP_RAW_REGNUM) +#define TARGET_WRITE_FP(VAL) write_register (FP_REGNUM, (VAL)) #define REGISTER_VIRTUAL_TYPE(REG) builtin_type_int diff --git a/gdb/v850-tdep.c b/gdb/v850-tdep.c index 1bde62c..d6da5f3 100644 --- a/gdb/v850-tdep.c +++ b/gdb/v850-tdep.c @@ -180,10 +180,10 @@ v850_scan_prologue (pc, pi) pi->frameoffset += ((insn & 0x1f) ^ 0x10) - 0x10; else if (insn == ((SP_REGNUM << 11) | 0x0600 | SP_REGNUM)) /* addi <imm>,sp,sp */ pi->frameoffset += read_memory_integer (current_pc + 2, 2); - else if (insn == ((FP_REGNUM << 11) | 0x0000 | SP_REGNUM)) /* mov sp,fp */ + else if (insn == ((FP_RAW_REGNUM << 11) | 0x0000 | SP_REGNUM)) /* mov sp,fp */ { fp_used = 1; - pi->framereg = FP_REGNUM; + pi->framereg = FP_RAW_REGNUM; } else if (insn == ((R12_REGNUM << 11) | 0x0640 | R0_REGNUM)) /* movhi hi(const),r0,r12 */ @@ -198,7 +198,7 @@ v850_scan_prologue (pc, pi) ep_used = 0; else if (((insn & 0x07ff) == (0x0760 | SP_REGNUM) /* st.w <reg>,<offset>[sp] */ || (fp_used - && (insn & 0x07ff) == (0x0760 | FP_REGNUM))) /* st.w <reg>,<offset>[fp] */ + && (insn & 0x07ff) == (0x0760 | FP_RAW_REGNUM))) /* st.w <reg>,<offset>[fp] */ && pifsr && (((reg = (insn >> 11) & 0x1f) >= SAVE1_START_REGNUM && reg <= SAVE1_END_REGNUM) || (reg >= SAVE2_START_REGNUM && reg <= SAVE2_END_REGNUM) @@ -324,7 +324,7 @@ v850_frame_chain (fi) /* First, find out who called us */ callers_pc = FRAME_SAVED_PC (fi); /* If caller is a call-dummy, then our FP bears no relation to his FP! */ - fp = v850_find_callers_reg (fi, FP_REGNUM); + fp = v850_find_callers_reg (fi, FP_RAW_REGNUM); if (PC_IN_CALL_DUMMY(callers_pc, fp, fp)) return fp; /* caller is call-dummy: return oldest value of FP */ @@ -337,7 +337,7 @@ v850_frame_chain (fi) if (pi.start_function) return 0; /* Don't chain beyond the start function */ - if (pi.framereg == FP_REGNUM) + if (pi.framereg == FP_RAW_REGNUM) return v850_find_callers_reg (fi, pi.framereg); return fi->frame - pi.frameoffset; |