diff -ruN insight-5.0.92.old/sim/common/run.c insight-5.0.92.new/sim/common/run.c --- insight-5.0.92.old/sim/common/run.c Mon Nov 5 18:55:27 2001 +++ insight-5.0.92.new/sim/common/run.c Mon Nov 5 19:24:15 2001 @@ -74,6 +74,10 @@ } } +#ifdef SIM_H8300 + extern void set_h8300h (int, int); +#endif + int main (ac, av) int ac; @@ -115,7 +119,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,7 +177,10 @@ /* 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: @@ -318,7 +325,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/300s.\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 insight-5.0.92.old/sim/common/sim-options.c insight-5.0.92.new/sim/common/sim-options.c --- insight-5.0.92.old/sim/common/sim-options.c Mon Nov 5 18:55:27 2001 +++ insight-5.0.92.new/sim/common/sim-options.c Mon Nov 5 19:24:15 2001 @@ -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 insight-5.0.92.old/sim/h8300/compile.c insight-5.0.92.new/sim/h8300/compile.c --- insight-5.0.92.old/sim/h8300/compile.c Mon Nov 5 19:19:16 2001 +++ insight-5.0.92.new/sim/h8300/compile.c Mon Nov 5 19:24:16 2001 @@ -707,7 +707,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; @@ -2006,13 +2008,15 @@ FLAG is non-zero for the h8/300h. */ void -set_h8300h (flag) - int flag; +set_h8300h (h_flag, s_flag) + int h_flag; + int 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 @@ -2067,8 +2071,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); } } @@ -2086,7 +2090,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 insight-5.0.92.old/sim/h8300/inst.h insight-5.0.92.new/sim/h8300/inst.h --- insight-5.0.92.old/sim/h8300/inst.h Mon Nov 5 18:55:27 2001 +++ insight-5.0.92.new/sim/h8300/inst.h Mon Nov 5 19:24:15 2001 @@ -16,6 +16,7 @@ to catch overlapping addresses, wrapped addresses, etc etc. */ #define H8300_MSIZE (1<<16) #define H8300H_MSIZE (1<<18) +#define H8300S_MSIZE (1<<24) #define CSIZE 1000