* remote-e7000.c (HARD_BREAKPOINTS): Reenable.
authorSteve Chamberlain <sac@cygnus>
Thu, 24 Nov 1994 05:59:34 +0000 (05:59 +0000)
committerSteve Chamberlain <sac@cygnus>
Thu, 24 Nov 1994 05:59:34 +0000 (05:59 +0000)
(BC_BREAKPOINTS): Disable.
* sh-tdep.c (print_insn): Cope with big and little endian machines.
* sh/sh.mt: Use libsim.a
* sh/tm-sh.h (TARGET_BYTE_ORDER_SELECTABLE): New
(BREAKPOINT): Changed to be byteorder independent.

gdb/ChangeLog
gdb/config/sh/sh.mt
gdb/config/sh/tm-sh.h
gdb/sh-tdep.c

index 0b32c9468589a67ef685025d66226e067cdc331b..bf1d6984602621fe0cfcf6aa02965b20e54ea489 100644 (file)
@@ -1,3 +1,12 @@
+Wed Nov 23 21:43:03 1994  Steve Chamberlain  (sac@jonny.cygnus.com)
+
+       * remote-e7000.c (HARD_BREAKPOINTS): Reenable.
+       (BC_BREAKPOINTS): Disable.
+       * sh-tdep.c (print_insn): Cope with big and little endian machines.
+       * sh/sh.mt: Use libsim.a
+       * sh/tm-sh.h (TARGET_BYTE_ORDER_SELECTABLE): New
+       (BREAKPOINT): Changed to be byteorder independent.
+
 Tue Nov 22 19:13:39 1994  Stan Shebs  (shebs@andros.cygnus.com)
 
        Maintenance commands to report time and space usage.
index cc1312120ebabad62482125341cd73d2c6e103ca..058124483d78e51d86640dd2d05f11be936d6a41 100644 (file)
@@ -1,11 +1,5 @@
 # Target: Hitachi Super-H ICE and simulator
-TDEPFILES= sh-tdep.o remote-sim.o interp.o table.o remote-e7000.o  ser-e7kpc.o
-
+TDEPFILES=  sh-tdep.o remote-sim.o ../sim/sh/libsim.a remote-e7000.o  ser-e7kpc.o
 over: all
-interp.o:
-       cp ../sim/sh/interp.o .
-
-table.o:
-       cp ../sim/sh/table.o .
 
 TM_FILE= tm-sh.h
index 83152eb8f872297aec8c3886777e12615700238f..44310da8975327e3fe35ddee93a9e2c8aba3a60b 100644 (file)
@@ -25,7 +25,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 /* Define the bit, byte, and word ordering of the machine.  */
 
-#define TARGET_BYTE_ORDER BIG_ENDIAN
+#define TARGET_BYTE_ORDER_SELECTABLE
 
 
 /* Offset from address of function to start of its code.
@@ -58,9 +58,8 @@ extern CORE_ADDR sh_skip_prologue ();
 /* Illegal instruction - used by the simulator for breakpoint
    detection */
 
-#define BREAKPOINT {0xc3, 0xff}  /* 0xc3ff is trapa #ff */
-#undef BREAKPOINT
-#define BREAKPOINT {0x00, 0x1b} /* SLEEP */
+#define BREAKPOINT {0xc3, 0xc3}  /* 0xc3c3 is trapa #c3, and it works in big 
+                                   and little endian modes  */
 #define REMOTE_BREAKPOINT { 0xc3, 0x20}
 
 /* If your kernel resets the pc after the trap happens you may need to
index 476246e3cfec7f5db2beb6c0698836107dfc4acc..389b153273b8094d78e53f8527bb866f8aad8779 100644 (file)
@@ -32,6 +32,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include "dis-asm.h"
 #include "../opcodes/sh-opc.h"
 
+
+
 /* Prologue looks like
    [mov.l      <regs>,@-r15]...
    [sts.l      pr,@-r15]
@@ -60,10 +62,10 @@ sh_skip_prologue (start_pc)
   while (IS_STS (w)
         || IS_PUSH (w)
         || IS_MOV_SP_FP (w)
-        || IS_MOV_R3(w)
-        || IS_ADD_R3SP(w)
-        || IS_ADD_SP(w)
-        || IS_SHLL_R3(w))
+        || IS_MOV_R3 (w)
+        || IS_ADD_R3SP (w)
+        || IS_ADD_SP (w)
+        || IS_SHLL_R3 (w))
     {
       start_pc += 2;
       w = read_memory_integer (start_pc, 2);
@@ -83,9 +85,11 @@ print_insn (memaddr, stream)
 
   GDB_INIT_DISASSEMBLE_INFO (info, stream);
 
-  return print_insn_sh (memaddr, &info);
+  if (TARGET_BYTE_ORDER == BIG_ENDIAN)
+    return print_insn_sh (memaddr, &info);
+  else
+    return print_insn_shl (memaddr, &info);
 }
-
 /* Given a GDB frame, determine the address of the calling function's frame.
    This will be used to create a new GDB frame struct, and then
    INIT_EXTRA_FRAME_INFO and INIT_FRAME_PC will be called for the new frame.
@@ -161,20 +165,20 @@ frame_find_saved_regs (fi, fsr)
        }
       else if (IS_MOV_R3 (insn))
        {
-         r3_val = (char)(insn & 0xff);
-         pc+=2;
+         r3_val = (char) (insn & 0xff);
+         pc += 2;
          insn = read_memory_integer (pc, 2);
        }
       else if (IS_SHLL_R3 (insn))
        {
-         r3_val <<=1;
-         pc+=2;
+         r3_val <<= 1;
+         pc += 2;
          insn = read_memory_integer (pc, 2);
        }
       else if (IS_ADD_R3SP (insn))
        {
          depth += -r3_val;
-         pc+=2;
+         pc += 2;
          insn = read_memory_integer (pc, 2);
        }
       else if (IS_ADD_SP (insn))
@@ -221,17 +225,18 @@ frame_find_saved_regs (fi, fsr)
     {
       fi->return_pc = read_register (PR_REGNUM) + 4;
     }
-  else {
-
-    if (fsr->regs[PR_REGNUM])
-      {
-       fi->return_pc = read_memory_integer (fsr->regs[PR_REGNUM], 4) + 4;
-      }
-    else
-      {
-       fi->return_pc = read_register (PR_REGNUM) + 4;
-      }
-  }
+  else
+    {
+
+      if (fsr->regs[PR_REGNUM])
+       {
+         fi->return_pc = read_memory_integer (fsr->regs[PR_REGNUM], 4) + 4;
+       }
+      else
+       {
+         fi->return_pc = read_register (PR_REGNUM) + 4;
+       }
+    }
 }
 
 /* initialize the extra info saved in a FRAME */
@@ -269,7 +274,7 @@ pop_frame ()
        }
     }
 
-  write_register (PC_REGNUM, fi->return_pc);
+  write_register (PC_REGNUM, frame->return_pc);
   write_register (SP_REGNUM, fp + 4);
   flush_cached_frames ();
 }
@@ -281,31 +286,31 @@ show_regs (args, from_tty)
      char *args;
      int from_tty;
 {
-  printf_filtered("PC=%08x SR=%08x PR=%08x MACH=%08x MACHL=%08x\n",
-                 read_register(PC_REGNUM),
-                 read_register(SR_REGNUM),
-                 read_register(PR_REGNUM),
-                 read_register(MACH_REGNUM),
-                 read_register(MACL_REGNUM));
-
-  printf_filtered("R0-R7  %08x %08x %08x %08x %08x %08x %08x %08x\n",
-                 read_register(0),
-                 read_register(1),
-                 read_register(2),
-                 read_register(3),
-                 read_register(4),
-                 read_register(5),
-                 read_register(6),
-                 read_register(7));
-  printf_filtered("R8-R15 %08x %08x %08x %08x %08x %08x %08x %08x\n",
-                 read_register(8),
-                 read_register(9),
-                 read_register(10),
-                 read_register(11),
-                 read_register(12),
-                 read_register(13),
-                 read_register(14),
-                 read_register(15));
+  printf_filtered ("PC=%08x SR=%08x PR=%08x MACH=%08x MACHL=%08x\n",
+                  read_register (PC_REGNUM),
+                  read_register (SR_REGNUM),
+                  read_register (PR_REGNUM),
+                  read_register (MACH_REGNUM),
+                  read_register (MACL_REGNUM));
+
+  printf_filtered ("R0-R7  %08x %08x %08x %08x %08x %08x %08x %08x\n",
+                  read_register (0),
+                  read_register (1),
+                  read_register (2),
+                  read_register (3),
+                  read_register (4),
+                  read_register (5),
+                  read_register (6),
+                  read_register (7));
+  printf_filtered ("R8-R15 %08x %08x %08x %08x %08x %08x %08x %08x\n",
+                  read_register (8),
+                  read_register (9),
+                  read_register (10),
+                  read_register (11),
+                  read_register (12),
+                  read_register (13),
+                  read_register (14),
+                  read_register (15));
 }
 \f
 
@@ -320,5 +325,5 @@ _initialize_sh_tdep ()
                "Set simulated memory size of simulator target.", &setlist),
      &showlist);
 
-  add_com("regs", class_vars, show_regs, "Print all registers");
+  add_com ("regs", class_vars, show_regs, "Print all registers");
 }