diff --git a/bochs/gui/siminterface.cc b/bochs/gui/siminterface.cc index 3c2669d5e..576794e8e 100644 --- a/bochs/gui/siminterface.cc +++ b/bochs/gui/siminterface.cc @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: siminterface.cc,v 1.136 2006-04-06 20:42:50 vruppert Exp $ +// $Id: siminterface.cc,v 1.137 2006-04-07 12:49:50 vruppert Exp $ ///////////////////////////////////////////////////////////////////////// // // See siminterface.h for description of the siminterface concept. @@ -140,11 +140,11 @@ public: virtual Bit32s parse_user_option(int idx, const char *context, int num_params, char *params []); #if BX_SAVE_RESTORE // save/restore support - virtual bx_bool save_state(const char *checkpoint_name); + virtual bx_bool save_state(const char *checkpoint_path); virtual bx_bool restore_config(); virtual bx_bool restore_logopts(); virtual bx_bool restore_hardware(); -#endif +#endif }; // recursive function to find parameters from the path @@ -835,17 +835,24 @@ Bit32s bx_real_sim_c::parse_user_option(int idx, const char *context, int num_pa } #if BX_SAVE_RESTORE -bx_bool bx_real_sim_c::save_state(const char *checkpoint_name) +bx_bool bx_real_sim_c::save_state(const char *checkpoint_path) { + char config[BX_PATHNAME_LEN]; + + sprintf(config, "%s/config", checkpoint_path); + write_rc(config, 1); // TODO - fprintf(stderr, "save_state (not implemented yet)\n"); + fprintf(stderr, "save_state (not yet complete)\n"); return 0; } bx_bool bx_real_sim_c::restore_config() { - // TODO - fprintf(stderr, "restore_config (not implemented yet)\n"); + char config[BX_PATHNAME_LEN]; + + sprintf(config, "%s/config", get_param_string(BXPN_RESTORE_PATH)->getptr()); + BX_INFO(("restoring '%s'", config)); + read_rc(config); return 0; } diff --git a/bochs/gui/siminterface.h b/bochs/gui/siminterface.h index 4a7777d55..d997a5598 100644 --- a/bochs/gui/siminterface.h +++ b/bochs/gui/siminterface.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: siminterface.h,v 1.182 2006-04-06 20:42:50 vruppert Exp $ +// $Id: siminterface.h,v 1.183 2006-04-07 12:49:50 vruppert Exp $ ///////////////////////////////////////////////////////////////////////// // // Intro to siminterface by Bryce Denney: @@ -1181,7 +1181,7 @@ public: virtual Bit32s parse_user_option(int idx, const char *context, int num_params, char *params []) {return -1;} #if BX_SAVE_RESTORE // save/restore support - virtual bx_bool save_state(const char *checkpoint_name) {return 0;} + virtual bx_bool save_state(const char *checkpoint_path) {return 0;} virtual bx_bool restore_config() {return 0;} virtual bx_bool restore_logopts() {return 0;} virtual bx_bool restore_hardware() {return 0;} diff --git a/bochs/main.cc b/bochs/main.cc index a28b6a7c5..5e97cc6bd 100644 --- a/bochs/main.cc +++ b/bochs/main.cc @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: main.cc,v 1.327 2006-04-06 20:42:50 vruppert Exp $ +// $Id: main.cc,v 1.328 2006-04-07 12:49:50 vruppert Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2002 MandrakeSoft S.A. @@ -655,6 +655,12 @@ int bx_init_main (int argc, char *argv[]) int norcfile = 1; +#if BX_SAVE_RESTORE + if (SIM->get_param_bool(BXPN_RESTORE_FLAG)->get()) { + load_rcfile = 0; + norcfile = 0; + } +#endif if (load_rcfile) { /* parse configuration file and command line arguments */ #ifdef WIN32 @@ -1005,7 +1011,7 @@ int bx_init_hardware() bx_pc_system.Reset(BX_RESET_HARDWARE); #if BX_SAVE_RESTORE if (SIM->get_param_bool(BXPN_RESTORE_FLAG)->get()) { - SIM->restore_hardware(); +// SIM->restore_hardware(); } #endif bx_gui->init_signal_handlers();