From ea45efcfe3be7fe4420af3c5ae3b08d5a51becc0 Mon Sep 17 00:00:00 2001 From: Andrew Cagney Date: Wed, 27 May 1998 14:13:32 +0000 Subject: [PATCH] Stop GDB getting confused over r29 and FP. print $r29 and info registers r29 gave different values. --- gdb/ChangeLog | 14 ++++++++++++++ gdb/config/v850/tm-v850.h | 11 ++++++++--- 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 + + * 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 * 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 ,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 ,[sp] */ || (fp_used - && (insn & 0x07ff) == (0x0760 | FP_REGNUM))) /* st.w ,[fp] */ + && (insn & 0x07ff) == (0x0760 | FP_RAW_REGNUM))) /* st.w ,[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; -- 2.7.4