[PATCH/RFA] h8300 Multiple changes to gdb/sim-stage4

Andrew Volkov Andrew.Volkov@transas.com
Thu May 16 05:16:00 GMT 2002


Splitting after suggestions of Andrew Cagney.

Andrey Volkov

2002-05-15  Andrey Volkov  <avolkov@sources.redhat.com>
	* sim/run: Made h8300s as new target, not h8300h alias.
		     Added new option -S (h8300s target)
	* sim/h8300/compile.c: Ditto.
	* sim/h8300/inst.h: Ditto.

diff -ruN gdb.old/sim/common/run.c gdb/sim/common/run.c
--- gdb.old/sim/common/run.c	Fri Dec 21 03:47:18 2001
+++ gdb/sim/common/run.c	Wed May 15 20:07:51 2002
@@ -115,7 +115,7 @@
      do all argv processing.  */
 
 #ifdef SIM_H8300 /* FIXME: quick hack */
-  while ((i = getopt (ac, av, "a:c:m:op:s:htv")) != EOF) 
+  while ((i = getopt (ac, av, "a:c:m:op:s:hStv")) != EOF) 
 #else
   while ((i = getopt (ac, av, "a:c:m:op:s:tv")) != EOF) 
 #endif
@@ -173,8 +173,11 @@
 	/* FIXME: Quick hack, to be replaced by more general facility.  */
 #ifdef SIM_H8300
       case 'h':
-	set_h8300h (1);
+	set_h8300h (1,0);
 	break;
+      case 'S':
+	set_h8300h (1,1);
+        break;
 #endif
       default:
 	usage ();
@@ -318,7 +321,8 @@
   fprintf (stderr, "-c size         Set simulator cache size to
`size'.\n");
 #endif
 #ifdef SIM_H8300
-  fprintf (stderr, "-h              Executable is for H8/300H or H8/S.\n");
+  fprintf (stderr, "-h              Executable is for h8/300h.\n");
+  fprintf (stderr, "-S              Executable is for h8/300s.\n");
 #endif
   fprintf (stderr, "-m size         Set memory size of simulator, in
bytes.\n");
 #ifdef SIM_HAVE_ENVIRONMENT
diff -ruN gdb.old/sim/common/sim-options.c gdb/sim/common/sim-options.c
--- gdb.old/sim/common/sim-options.c	Sat Nov 25 12:16:22 2000
+++ gdb/sim/common/sim-options.c	Wed May 15 20:11:12 2002
@@ -110,6 +110,7 @@
   OPTION_HELP,
 #ifdef SIM_H8300 /* FIXME: Should be movable to h8300 dir.  */
   OPTION_H8300,
+  OPTION_H8300S,
 #endif
   OPTION_LOAD_LMA,
   OPTION_LOAD_VMA,
@@ -152,7 +153,10 @@
 
 #ifdef SIM_H8300 /* FIXME: Should be movable to h8300 dir.  */
   { {"h8300h", no_argument, NULL, OPTION_H8300},
-      'h', NULL, "Indicate the CPU is h8/300h or h8/300s",
+      'h', NULL, "Indicate the CPU is h8/300h",
+      standard_option_handler },
+  { {"h8300s", no_argument, NULL, OPTION_H8300S},
+      'S', NULL, "Indicate the CPU is h8/300s",
       standard_option_handler },
 #endif
 
@@ -354,7 +358,10 @@
 
 #ifdef SIM_H8300 /* FIXME: Can be moved to h8300 dir.  */
     case OPTION_H8300:
-      set_h8300h (1);
+      set_h8300h (1,0);
+      break;
+    case OPTION_H8300S:
+      set_h8300h (1,1);
       break;
 #endif
 
diff -ruN gdb.old/sim/h8300/compile.c gdb/sim/h8300/compile.c
--- gdb.old/sim/h8300/compile.c	Wed May 15 19:52:44 2002
+++ gdb/sim/h8300/compile.c	Wed May 15 20:15:46 2002
@@ -704,7 +704,9 @@
       init = 1;
       littleendian.i = 1;
 
-      if (h8300hmode)
+      if (h8300smode)
+	memory_size = H8300S_MSIZE;
+      else if (h8300hmode)
 	memory_size = H8300H_MSIZE;
       else
 	memory_size = H8300_MSIZE;
@@ -2008,13 +2010,14 @@
    FLAG is non-zero for the H8/300H.  */
 
 void
-set_h8300h (flag)
-     int flag;
+set_h8300h (h_flag, s_flag)
+     int h_flag, s_flag;
 {
   /* FIXME: Much of the code in sim_load can be moved to sim_open.
      This function being replaced by a sim_open:ARGV configuration
      option.  */
-  h8300hmode = flag;
+  h8300hmode = h_flag;
+  h8300smode = s_flag;
 }
 
 SIM_DESC
@@ -2069,8 +2072,8 @@
       if (bfd_check_format (prog_bfd, bfd_object))
 	{
 	  unsigned long mach = bfd_get_mach (prog_bfd);
-	  set_h8300h (mach == bfd_mach_h8300h
-		      || mach == bfd_mach_h8300s);
+	  set_h8300h (mach == bfd_mach_h8300h || mach == bfd_mach_h8300s,
+		      mach == bfd_mach_h8300s);
 	}
     }
 
@@ -2088,7 +2091,10 @@
      so we just reallocate memory now; this will also allow us to handle
      switching between H8/300 and H8/300H programs without exiting
      gdb.  */
-  if (h8300hmode)
+
+  if (h8300smode)
+    memory_size = H8300S_MSIZE;
+  else if (h8300hmode)
     memory_size = H8300H_MSIZE;
   else
     memory_size = H8300_MSIZE;
diff -ruN gdb.old/sim/h8300/inst.h gdb/sim/h8300/inst.h
--- gdb.old/sim/h8300/inst.h	Fri Apr 16 05:35:02 1999
+++ gdb/sim/h8300/inst.h	Wed May 15 20:21:48 2002
@@ -15,7 +15,13 @@
    can only happen when simulating H8/300H programs).  We make no attempt
    to catch overlapping addresses, wrapped addresses, etc etc.  */
 #define H8300_MSIZE (1<<16)
-#define H8300H_MSIZE (1<<18)
+
+/* avolkov: 
+   Next 2 macros are ugly for any workstation, but while they're work.
+   Memory size MUST be configurable.
+ */
+#define H8300H_MSIZE (1<<18) 
+#define H8300S_MSIZE (1<<24) 
 
 #define CSIZE 1000
 



More information about the Gdb-patches mailing list