Stop GDB getting confused over r29 and FP. print $r29 and info
authorAndrew Cagney <cagney@redhat.com>
Wed, 27 May 1998 14:13:32 +0000 (14:13 +0000)
committerAndrew Cagney <cagney@redhat.com>
Wed, 27 May 1998 14:13:32 +0000 (14:13 +0000)
registers r29 gave different values.

gdb/ChangeLog
gdb/config/v850/tm-v850.h
gdb/v850-tdep.c

index da78f93696a7021b9593f9e9722a6d97763f0448..f05eb37d552a92475afccc6c59094f0c6da6caec 100644 (file)
@@ -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, 
index c218f00cb737ae2be485affe552212005169ee6f..a53952ecc4b5c68d0e6522f0febe391e9f933c0e 100644 (file)
@@ -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
 
index 1bde62c101d2bb0ff05d9f7dd2015ae441b74341..d6da5f39a8267ab86760b17ecc835273aca0cd65 100644 (file)
@@ -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;