diff options
Diffstat (limited to 'sim/common')
-rw-r--r-- | sim/common/ChangeLog | 23 | ||||
-rw-r--r-- | sim/common/nltvals.def | 24 | ||||
-rw-r--r-- | sim/common/nrun.c | 49 | ||||
-rw-r--r-- | sim/common/sim-base.h | 5 | ||||
-rw-r--r-- | sim/common/sim-hload.c | 10 | ||||
-rw-r--r-- | sim/common/sim-options.c | 30 | ||||
-rw-r--r-- | sim/common/sim-resume.c | 5 |
7 files changed, 91 insertions, 55 deletions
diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog index 5f702b0..3c6a9f0 100644 --- a/sim/common/ChangeLog +++ b/sim/common/ChangeLog @@ -1,3 +1,26 @@ +Sun Jul 11 23:47:20 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * sim-resume.c (sim_resume): Ensure that the siggnal [sic] is only + passed in when sim_resume is first entered - don't re-pass it + after a restart. + +Sun Jul 11 23:34:44 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * sim-options.c (standard_option_handler): Add OPTION_LOAD_VMA and + OPTION_LOAD_LMA but only when is defined. + (standard_options): When SIM_HANDLES_LMA is defined include + options --load-lma and --load-vma. + (standard_install): Initialize STATE_LOAD_AT_LMA_P. + + * sim-base.h (STATE_LOAD_AT_LMA_P): Define. + (struct sim_state_base): Add load_at_lma_p. + * sim-hload.c (sim_load): Replace SIM_HANDLES_LMA with + STATE_LOAD_AT_LMA_P. + +Sun Jul 11 12:03:36 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * nrun.c (main): Re-format loop gnu style. + Wed Jul 7 19:56:03 1999 Andrew Cagney <cagney@b1.cygnus.com> * dv-sockser.c (connected_p): Initialize addrlen. diff --git a/sim/common/nltvals.def b/sim/common/nltvals.def index bed711c..b5e82fc 100644 --- a/sim/common/nltvals.def +++ b/sim/common/nltvals.def @@ -416,27 +416,3 @@ /* end v850 sys target macros */ #endif #endif -#ifdef NL_TARGET_venus -#ifdef sys_defs -/* from syscall.h */ -/* begin venus sys target macros */ - { "SYS_argv", 13 }, - { "SYS_argvlen", 12 }, - { "SYS_chdir", 14 }, - { "SYS_chmod", 16 }, - { "SYS_close", 3 }, - { "SYS_exit", 1 }, - { "SYS_fstat", 10 }, - { "SYS_getpid", 8 }, - { "SYS_kill", 9 }, - { "SYS_lseek", 6 }, - { "SYS_open", 2 }, - { "SYS_read", 4 }, - { "SYS_stat", 15 }, - { "SYS_time", 18 }, - { "SYS_unlink", 7 }, - { "SYS_utime", 17 }, - { "SYS_write", 5 }, -/* end venus sys target macros */ -#endif -#endif diff --git a/sim/common/nrun.c b/sim/common/nrun.c index 2f13b1f..c5b43a2 100644 --- a/sim/common/nrun.c +++ b/sim/common/nrun.c @@ -137,41 +137,44 @@ main (int argc, char **argv) ((reason == sim_stopped) && (STATE_ENVIRONMENT (sd) == OPERATING_ENVIRONMENT))); } - else do + else { + do + { #if defined (HAVE_SIGACTION) && defined (SA_RESTART) - struct sigaction sa, osa; - sa.sa_handler = cntrl_c; - sigemptyset (&sa.sa_mask); - sa.sa_flags = 0; - sigaction (SIGINT, &sa, &osa); - prev_sigint = osa.sa_handler; + struct sigaction sa, osa; + sa.sa_handler = cntrl_c; + sigemptyset (&sa.sa_mask); + sa.sa_flags = 0; + sigaction (SIGINT, &sa, &osa); + prev_sigint = osa.sa_handler; #else - prev_sigint = signal (SIGINT, cntrl_c); + prev_sigint = signal (SIGINT, cntrl_c); #endif - sim_resume (sd, 0, sigrc); - signal (SIGINT, prev_sigint); - sim_stop_reason (sd, &reason, &sigrc); - - if ((reason == sim_stopped) && - (sigrc == sim_signal_to_host (sd, SIM_SIGINT))) - break; /* exit on control-C */ - - /* remain on signals in oe mode */ - } while ((reason == sim_stopped) && - (STATE_ENVIRONMENT (sd) == OPERATING_ENVIRONMENT)); - + sim_resume (sd, 0, sigrc); + signal (SIGINT, prev_sigint); + sim_stop_reason (sd, &reason, &sigrc); + + if ((reason == sim_stopped) && + (sigrc == sim_signal_to_host (sd, SIM_SIGINT))) + break; /* exit on control-C */ + + /* remain on signals in oe mode */ + } while ((reason == sim_stopped) && + (STATE_ENVIRONMENT (sd) == OPERATING_ENVIRONMENT)); + + } /* Print any stats the simulator collected. */ sim_info (sd, 0); - + /* Shutdown the simulator. */ sim_close (sd, 0); - + /* If reason is sim_exited, then sigrc holds the exit code which we want to return. If reason is sim_stopped or sim_signalled, then sigrc holds the signal that the simulator received; we want to return that to indicate failure. */ - + #ifdef SIM_H8300 /* FIXME: Ugh. grep for SLEEP in compile.c */ if (sigrc == SIGILL) abort (); diff --git a/sim/common/sim-base.h b/sim/common/sim-base.h index 3fe01b4..f3af305 100644 --- a/sim/common/sim-base.h +++ b/sim/common/sim-base.h @@ -237,6 +237,11 @@ typedef struct { #endif + /* Should image loads be performed using the LMA or VMA? Older + simulators use the VMA while newer simulators prefer the LMA. */ + int load_at_lma_p; +#define STATE_LOAD_AT_LMA_P(SD) ((SD)->base.load_at_lma_p) + /* Marker for those wanting to do sanity checks. This should remain the last member of this struct to help catch miscompilation errors. */ diff --git a/sim/common/sim-hload.c b/sim/common/sim-hload.c index e4016f4..b8726ba 100644 --- a/sim/common/sim-hload.c +++ b/sim/common/sim-hload.c @@ -45,20 +45,14 @@ sim_load (sd, prog_name, prog_bfd, from_tty) incorrectly write the program sections at LMA interpreted as a virtual address. This is still accommodated for backward compatibility reasons. */ - /* FIXME: The following simulators use this file as of 980313: - m32r, mips, v850 [grep for sim-hload in all Makefile.in's]. - Each of these should be properly using lma. When this is confirmed, - SIM_HANDLES_LMA can go away. */ -#ifndef SIM_HANDLES_LMA -#define SIM_HANDLES_LMA 0 -#endif result_bfd = sim_load_file (sd, STATE_MY_NAME (sd), STATE_CALLBACK (sd), prog_name, STATE_PROG_BFD (sd), STATE_OPEN_KIND (sd) == SIM_OPEN_DEBUG, - SIM_HANDLES_LMA, sim_write); + STATE_LOAD_AT_LMA_P (sd), + sim_write); if (result_bfd == NULL) { bfd_close (STATE_PROG_BFD (sd)); diff --git a/sim/common/sim-options.c b/sim/common/sim-options.c index b49256b..8d0f923 100644 --- a/sim/common/sim-options.c +++ b/sim/common/sim-options.c @@ -111,6 +111,8 @@ typedef enum { #ifdef SIM_H8300 /* FIXME: Should be movable to h8300 dir. */ OPTION_H8300, #endif + OPTION_LOAD_LMA, + OPTION_LOAD_VMA, } STANDARD_OPTIONS; static const OPTION standard_options[] = @@ -182,6 +184,19 @@ static const OPTION standard_options[] = '\0', "BFDNAME", "Specify the object-code format for the object files", standard_option_handler }, +#ifdef SIM_HANDLES_LMA + { {"load-lma", no_argument, NULL, OPTION_LOAD_LMA}, + '\0', NULL, +#if SIM_HANDLES_LMA + "Use VMA or LMA addresses when loading image (default LMA)", +#else + "Use VMA or LMA addresses when loading image (default VMA)", +#endif + standard_option_handler, "load-{lma,vma}" }, + { {"load-vma", no_argument, NULL, OPTION_LOAD_VMA}, + '\0', NULL, "", standard_option_handler, "" }, +#endif + { {NULL, no_argument, NULL, 0}, '\0', NULL, NULL, NULL } }; @@ -394,6 +409,18 @@ standard_option_handler (SIM_DESC sd, sim_cpu *cpu, int opt, break; } + case OPTION_LOAD_LMA: + { + STATE_LOAD_AT_LMA_P (sd) = 1; + break; + } + + case OPTION_LOAD_VMA: + { + STATE_LOAD_AT_LMA_P (sd) = 0; + break; + } + case OPTION_HELP: sim_print_help (sd, is_command); if (STATE_OPEN_KIND (sd) == SIM_OPEN_STANDALONE) @@ -413,6 +440,9 @@ standard_install (SIM_DESC sd) SIM_ASSERT (STATE_MAGIC (sd) == SIM_MAGIC_NUMBER); if (sim_add_option_table (sd, NULL, standard_options) != SIM_RC_OK) return SIM_RC_FAIL; +#ifdef SIM_HANDLES_LMA + STATE_LOAD_AT_LMA_P (sd) = SIM_HANDLES_LMA; +#endif return SIM_RC_OK; } diff --git a/sim/common/sim-resume.c b/sim/common/sim-resume.c index 09b475e..8cf75d5 100644 --- a/sim/common/sim-resume.c +++ b/sim/common/sim-resume.c @@ -70,6 +70,11 @@ sim_resume (SIM_DESC sd, if (next_cpu_nr >= nr_cpus) next_cpu_nr = 0; + /* Only deliver the siggnal ]sic] the first time through - don't + re-deliver any siggnal during a restart. */ + if (jmpval == sim_engine_restart_jmpval) + siggnal = 0; + #ifdef SIM_CPU_EXCEPTION_RESUME { sim_cpu* cpu = STATE_CPU (sd, next_cpu_nr); |