aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sim/common/ChangeLog7
-rw-r--r--sim/common/sim-options.c29
-rw-r--r--sim/h8300/ChangeLog8
-rw-r--r--sim/h8300/compile.c54
-rw-r--r--sim/h8300/tconfig.h5
5 files changed, 69 insertions, 34 deletions
diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog
index b740a17..cb1a9a6 100644
--- a/sim/common/ChangeLog
+++ b/sim/common/ChangeLog
@@ -1,5 +1,12 @@
2015-12-24 Mike Frysinger <vapier@gentoo.org>
+ * sim-options.c (OPTION_H8300H, OPTION_H8300S, OPTION_H8300SX):
+ Move to h8300/compile.c.
+ [SIM_H8300] (standard_options): Likewise.
+ (standard_option_handler): Likewise.
+
+2015-12-24 Mike Frysinger <vapier@gentoo.org>
+
* sim-module.c [WITH_WATCHPOINTS] (modules): Always call
sim_watchpoint_install.
diff --git a/sim/common/sim-options.c b/sim/common/sim-options.c
index 5e04573..69655b0 100644
--- a/sim/common/sim-options.c
+++ b/sim/common/sim-options.c
@@ -104,11 +104,6 @@ typedef enum {
OPTION_DEBUG,
OPTION_HELP,
OPTION_VERSION,
-#ifdef SIM_H8300 /* FIXME: Should be movable to h8300 dir. */
- OPTION_H8300H,
- OPTION_H8300S,
- OPTION_H8300SX,
-#endif
OPTION_LOAD_LMA,
OPTION_LOAD_VMA,
OPTION_SYSROOT
@@ -147,18 +142,6 @@ static const OPTION standard_options[] =
'\0', "FILE NAME", "Specify debugging output file",
standard_option_handler },
-#ifdef SIM_H8300 /* FIXME: Should be movable to h8300 dir. */
- { {"h8300h", no_argument, NULL, OPTION_H8300H},
- 'h', NULL, "Indicate the CPU is H8/300H",
- standard_option_handler },
- { {"h8300s", no_argument, NULL, OPTION_H8300S},
- 'S', NULL, "Indicate the CPU is H8S",
- standard_option_handler },
- { {"h8300sx", no_argument, NULL, OPTION_H8300SX},
- 'x', NULL, "Indicate the CPU is H8SX",
- standard_option_handler },
-#endif
-
{ {"do-command", required_argument, NULL, OPTION_DO_COMMAND},
'\0', "COMMAND", ""/*undocumented*/,
standard_option_handler },
@@ -355,18 +338,6 @@ standard_option_handler (SIM_DESC sd, sim_cpu *cpu, int opt,
}
break;
-#ifdef SIM_H8300 /* FIXME: Can be moved to h8300 dir. */
- case OPTION_H8300H:
- set_h8300h (bfd_mach_h8300h);
- break;
- case OPTION_H8300S:
- set_h8300h (bfd_mach_h8300s);
- break;
- case OPTION_H8300SX:
- set_h8300h (bfd_mach_h8300sx);
- break;
-#endif
-
case OPTION_DO_COMMAND:
sim_do_command (sd, arg);
break;
diff --git a/sim/h8300/ChangeLog b/sim/h8300/ChangeLog
index f54d697..d566a65 100644
--- a/sim/h8300/ChangeLog
+++ b/sim/h8300/ChangeLog
@@ -1,5 +1,13 @@
2015-12-24 Mike Frysinger <vapier@gentoo.org>
+ * compile.c (H8300_OPTIONS): New enum from common/sim-options.c.
+ (h8300_option_handler): New func from common/sim-options.c.
+ (h8300_options): New options from common/sim-options.c.
+ (sim_open): Call sim_add_option_table.
+ * tconfig.h: Delete file.
+
+2015-12-24 Mike Frysinger <vapier@gentoo.org>
+
* tconfig.h (SIM_HAVE_SIMCACHE): Delete.
2015-11-21 Mike Frysinger <vapier@gentoo.org>
diff --git a/sim/h8300/compile.c b/sim/h8300/compile.c
index 15d4f53..bc91725 100644
--- a/sim/h8300/compile.c
+++ b/sim/h8300/compile.c
@@ -4813,6 +4813,54 @@ set_h8300h (unsigned long machine)
h8300_normal_mode = 1;
}
+/* H8300-specific options.
+ TODO: These really should be merged into the common model modules. */
+typedef enum {
+ OPTION_H8300H,
+ OPTION_H8300S,
+ OPTION_H8300SX
+} H8300_OPTIONS;
+
+static SIM_RC
+h8300_option_handler (SIM_DESC sd, sim_cpu *cpu ATTRIBUTE_UNUSED, int opt,
+ char *arg, int is_command ATTRIBUTE_UNUSED)
+{
+ switch ((H8300_OPTIONS) opt)
+ {
+ case OPTION_H8300H:
+ set_h8300h (bfd_mach_h8300h);
+ break;
+ case OPTION_H8300S:
+ set_h8300h (bfd_mach_h8300s);
+ break;
+ case OPTION_H8300SX:
+ set_h8300h (bfd_mach_h8300sx);
+ break;
+
+ default:
+ /* We'll actually never get here; the caller handles the error
+ case. */
+ sim_io_eprintf (sd, "Unknown option `%s'\n", arg);
+ return SIM_RC_FAIL;
+ }
+
+ return SIM_RC_OK;
+}
+
+static const OPTION h8300_options[] =
+{
+ { {"h8300h", no_argument, NULL, OPTION_H8300H},
+ 'h', NULL, "Indicate the CPU is H8/300H",
+ h8300_option_handler },
+ { {"h8300s", no_argument, NULL, OPTION_H8300S},
+ 'S', NULL, "Indicate the CPU is H8S",
+ h8300_option_handler },
+ { {"h8300sx", no_argument, NULL, OPTION_H8300SX},
+ 'x', NULL, "Indicate the CPU is H8SX",
+ h8300_option_handler },
+ { {NULL, no_argument, NULL, 0}, '\0', NULL, NULL, NULL, NULL }
+};
+
static sim_cia
h8300_pc_get (sim_cpu *cpu)
{
@@ -4872,6 +4920,12 @@ sim_open (SIM_OPEN_KIND kind,
return 0;
}
+ if (sim_add_option_table (sd, NULL, h8300_options) != SIM_RC_OK)
+ {
+ free_state (sd);
+ return 0;
+ }
+
/* getopt will print the error message so we just have to exit if
this fails. FIXME: Hmmm... in the case of gdb we need getopt
to call print_filtered. */
diff --git a/sim/h8300/tconfig.h b/sim/h8300/tconfig.h
deleted file mode 100644
index 3da84b7..0000000
--- a/sim/h8300/tconfig.h
+++ /dev/null
@@ -1,5 +0,0 @@
-/* h8300 target configuration file. */
-
-/* FIXME: This is a quick hack for run.c so it can support the `-h' option.
- It will eventually be replaced by a more general facility. */
-#define SIM_H8300