From bd3fb5b8fb33adb751407a128e1f2240dfb215d9 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Thu, 24 Dec 2015 17:26:54 -0500 Subject: 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. --- sim/h8300/ChangeLog | 8 ++++++++ sim/h8300/compile.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++ sim/h8300/tconfig.h | 5 ----- 3 files changed, 62 insertions(+), 5 deletions(-) delete mode 100644 sim/h8300/tconfig.h (limited to 'sim/h8300') 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 + * 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 + * tconfig.h (SIM_HAVE_SIMCACHE): Delete. 2015-11-21 Mike Frysinger 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 -- cgit v1.1