aboutsummaryrefslogtreecommitdiff
path: root/sim/h8300
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2015-12-24 17:26:54 -0500
committerMike Frysinger <vapier@gentoo.org>2015-12-24 20:11:26 -0500
commitbd3fb5b8fb33adb751407a128e1f2240dfb215d9 (patch)
treed759f0952a9ecdbc4dbd7df8572357e86d87fbee /sim/h8300
parent84e8e361dd3a3dd7314759f7f07927dac401d0e6 (diff)
downloadgdb-bd3fb5b8fb33adb751407a128e1f2240dfb215d9.zip
gdb-bd3fb5b8fb33adb751407a128e1f2240dfb215d9.tar.gz
gdb-bd3fb5b8fb33adb751407a128e1f2240dfb215d9.tar.bz2
sim: h8300: move h8300-specific options out of common code
Register the options in sim_open like other arches to avoid having to hack up the common modules.
Diffstat (limited to 'sim/h8300')
-rw-r--r--sim/h8300/ChangeLog8
-rw-r--r--sim/h8300/compile.c54
-rw-r--r--sim/h8300/tconfig.h5
3 files changed, 62 insertions, 5 deletions
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