Wed May 24 15:49:47 1995 Steve Chamberlain <sac@slash.cygnus.com>
authorSteve Chamberlain <sac@cygnus>
Wed, 24 May 1995 23:56:24 +0000 (23:56 +0000)
committerSteve Chamberlain <sac@cygnus>
Wed, 24 May 1995 23:56:24 +0000 (23:56 +0000)
* arm-tdep.c (convert_from_extended, convert_to_extended):
New.
* coffread.c (enter_linenos): Return if linetab 0.
* config/arm/arm.mt (TDEPFILES): Add simulator support.
* config/arm/tm-arm.h (FRAME_FIND_SAVED_REGS): Fix prototypes.

gdb/ChangeLog
gdb/arm-tdep.c
gdb/config/arm/arm.mt

index 95b1c733617a8ed4019c742fc7fbce31f72f028e..de2d32ff387e0cb06b3756751da9665d41c47507 100644 (file)
@@ -1,3 +1,16 @@
+Wed May 24 15:49:47 1995  Steve Chamberlain  <sac@slash.cygnus.com>
+
+       * arm-tdep.c (convert_from_extended, convert_to_extended):
+       New.
+       * coffread.c (enter_linenos): Return if linetab 0.
+       * config/arm/arm.mt (TDEPFILES): Add simulator support.
+       * config/arm/tm-arm.h (FRAME_FIND_SAVED_REGS): Fix prototypes.
+
+Mon May 22 19:37:21 1995  Rob Savoye  <rob@darkstar.cygnus.com>
+
+       * config/idt.mt: replace monitor and array-rom with the new
+       remote-array.
+
 Mon May 22 15:38:25 1995  Stu Grossman  (grossman@cygnus.com)
 
        * remote-nindy.c:  Install Kung patch for PR 6820.  I have no idea
index b4fe1b5693722a841c6cd52dff91fe9cc3fa3bd5..1a8b0277e4662601690173e620be14a8a623a8e9 100644 (file)
@@ -1,28 +1,28 @@
-/* Copyright (C) 1988, 1989 Free Software Foundation, Inc.
+/* Target-dependent code for the Acorn Risc Machine, for GDB, the GNU Debugger.
+   Copyright 1988, 1989, 1991, 1992, 1993, 1995 Free Software Foundation, Inc.
 
 This file is part of GDB.
 
-GDB is free software; you can redistribute it and/or modify
+This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 1, or (at your option)
-any later version.
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
 
-GDB is distributed in the hope that it will be useful,
+This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
-along with GDB; see the file COPYING.  If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+along with this program; if not, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 #include "defs.h"
-#include "param.h"
 #include "frame.h"
 #include "inferior.h"
-#include "arm-opcode.h"
 
-#include <stdio.h>
+#if 0
+#include "gdbcore.h"
 #include <sys/param.h>
 #include <sys/dir.h>
 #include <signal.h>
@@ -33,14 +33,15 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #define N_TXTADDR(hdr) 0x8000
 #define N_DATADDR(hdr) (hdr.a_text + 0x8000)
 
-#include "gdbcore.h"
 #include <sys/user.h>          /* After a.out.h  */
 #include <sys/file.h>
 #include <sys/stat.h>
 
 #include <errno.h>
+#endif
 
 \f
+#if 0
 /* Work with core dump and executable files, for GDB. 
    This code would be in core.c if it weren't machine-dependent. */
 
@@ -157,7 +158,9 @@ exec_file_command (filename, from_tty)
   if (exec_file_display_hook)
     (*exec_file_display_hook) (filename);
 }
+#endif
 
+#if 0
 /* Read from the program's memory (except for inferior processes).
    This function is misnamed, since it only reads, never writes; and
    since it will use the core file and/or executable file as necessary.
@@ -309,7 +312,7 @@ xfer_core_file (memaddr, myaddr, len)
         Actually, we never right.  */
       else
        {
-         bzero (myaddr, i);
+         memset (myaddr, '\0', i);
          returnval = EIO;
        }
 
@@ -319,6 +322,7 @@ xfer_core_file (memaddr, myaddr, len)
     }
   return returnval;
 }
+#endif
 \f
 /* APCS (ARM procedure call standard) defines the following prologue:
 
@@ -336,8 +340,9 @@ CORE_ADDR
 skip_prologue(pc)
 CORE_ADDR pc;
 {
-    union insn_fmt op;
     CORE_ADDR skip_pc = pc;
+#if 0
+    union insn_fmt op;
 
     op.ins = read_memory_integer(skip_pc, 4);
     /* look for the "mov ip,sp" */
@@ -374,9 +379,58 @@ CORE_ADDR pc;
        op.arith.opcode != OPCODE_SUB ||
        op.arith.dest != FP ||
        op.arith.operand1 != SPTEMP) return pc;
+#endif
     return skip_pc + 4;
 }
 
+void
+arm_frame_find_saved_regs (frame_info, saved_regs_addr)
+     struct frame_info *frame_info;
+     struct frame_saved_regs *saved_regs_addr;
+{
+  register int regnum;
+  register int frame;
+  register int next_addr;
+  register int return_data_save;
+  register int saved_register_mask;
+
+  memset (saved_regs_addr, '\0', sizeof (*saved_regs_addr));
+  frame = frame_info->frame;
+  return_data_save = read_memory_integer (frame, 4) & 0x03fffffc - 12;
+  saved_register_mask = read_memory_integer (return_data_save, 4);
+  next_addr = frame - 12;
+  for (regnum = 4; regnum < 10; regnum++)
+    if (saved_register_mask & (1 << regnum))
+      {
+       next_addr -= 4;
+       saved_regs_addr->regs[regnum] = next_addr;
+      }
+  if (read_memory_integer (return_data_save + 4, 4) == 0xed6d7103)
+    {
+      next_addr -= 12;
+      saved_regs_addr->regs[F0_REGNUM + 7] = next_addr;
+    }
+  if (read_memory_integer (return_data_save + 8, 4) == 0xed6d6103)
+    {
+      next_addr -= 12;
+      saved_regs_addr->regs[F0_REGNUM + 6] = next_addr;
+    }
+  if (read_memory_integer (return_data_save + 12, 4) == 0xed6d5103)
+    {
+      next_addr -= 12;
+      saved_regs_addr->regs[F0_REGNUM + 5] = next_addr;
+    }
+  if (read_memory_integer(return_data_save + 16, 4) == 0xed6d4103)
+    {
+      next_addr -= 12;
+      saved_regs_addr->regs[F0_REGNUM + 4] = next_addr;
+    }
+  saved_regs_addr->regs[SP_REGNUM] = next_addr;
+  saved_regs_addr->regs[PC_REGNUM] = frame - 4;
+  saved_regs_addr->regs[PS_REGNUM] = frame - 4;
+  saved_regs_addr->regs[FP_REGNUM] = frame - 12;
+}
+
 static void
 print_fpu_flags(flags)
 int flags;
@@ -404,3 +458,31 @@ arm_float_info()
     fputs("flags: ", stdout);
     print_fpu_flags(status);
 }
+
+void
+_initialize_arm_tdep ()
+{
+  tm_print_insn = print_insn_arm;
+}
+
+
+/* FIXME:  Fill in with the 'right thing', see asm 
+   template in arm-convert.s */
+
+void 
+convert_from_extended (ptr, dbl)
+void *ptr;
+double *dbl;
+{
+  *dbl = *(double*)ptr;
+}
+
+
+void 
+convert_to_extended (dbl, ptr)
+void *ptr;
+double *dbl;
+{
+  *(double*)ptr = *dbl;
+}
+
index e6e3ec9a7085d888c2e2a86415bd721b92a9cac9..b0e4dbe2ae1f3097ff9f3052a90a04d89e371345 100644 (file)
@@ -1,3 +1,3 @@
 # Target: Acorn RISC machine running RISCiX (4.3bsd)
-TDEPFILES= arm-tdep.o
+TDEPFILES= arm-tdep.o remote-sim.o ../sim/arm/libsim.a
 TM_FILE= tm-arm.h