- if cmos image is enabled, save it on exit
This commit is contained in:
parent
b59b3aed31
commit
ef51fd3595
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: cmos.cc,v 1.50 2005-09-18 07:16:28 vruppert Exp $
|
||||
// $Id: cmos.cc,v 1.51 2005-12-04 17:43:09 vruppert Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2002 MandrakeSoft S.A.
|
||||
@ -139,7 +139,7 @@ bx_cmos_c::~bx_cmos_c(void)
|
||||
void
|
||||
bx_cmos_c::init(void)
|
||||
{
|
||||
BX_DEBUG(("Init $Id: cmos.cc,v 1.50 2005-09-18 07:16:28 vruppert Exp $"));
|
||||
BX_DEBUG(("Init $Id: cmos.cc,v 1.51 2005-12-04 17:43:09 vruppert Exp $"));
|
||||
// CMOS RAM & RTC
|
||||
|
||||
DEV_register_ioread_handler(this, read_handler, 0x0070, "CMOS RAM", 1);
|
||||
@ -197,7 +197,6 @@ bx_cmos_c::init(void)
|
||||
|
||||
// load CMOS from image file if requested.
|
||||
if (bx_options.cmosimage.Oenabled->get ()) {
|
||||
// CMOS image file requested
|
||||
int fd, ret;
|
||||
struct stat stat_buf;
|
||||
|
||||
@ -257,8 +256,7 @@ bx_cmos_c::init(void)
|
||||
BX_CMOS_THIS s.timeval_change = 0;
|
||||
}
|
||||
|
||||
void
|
||||
bx_cmos_c::reset(unsigned type)
|
||||
void bx_cmos_c::reset(unsigned type)
|
||||
{
|
||||
BX_CMOS_THIS s.cmos_mem_address = 0;
|
||||
|
||||
@ -278,8 +276,26 @@ bx_cmos_c::reset(unsigned type)
|
||||
BX_CMOS_THIS CRA_change();
|
||||
}
|
||||
|
||||
void
|
||||
bx_cmos_c::CRA_change(void)
|
||||
void bx_cmos_c::save_image(void)
|
||||
{
|
||||
int fd, ret;
|
||||
|
||||
// save CMOS to image file if requested.
|
||||
if (bx_options.cmosimage.Oenabled->get ()) {
|
||||
fd = open(bx_options.cmosimage.Opath->getptr (), O_WRONLY
|
||||
#ifdef O_BINARY
|
||||
| O_BINARY
|
||||
#endif
|
||||
);
|
||||
ret = ::write(fd, (bx_ptr_t) BX_CMOS_THIS s.reg, 128);
|
||||
if (ret != 128) {
|
||||
BX_PANIC(("CMOS: error writing cmos file."));
|
||||
}
|
||||
close(fd);
|
||||
}
|
||||
}
|
||||
|
||||
void bx_cmos_c::CRA_change(void)
|
||||
{
|
||||
Bit8u nibble, dcc;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: cmos.h,v 1.12 2005-09-11 20:03:56 vruppert Exp $
|
||||
// $Id: cmos.h,v 1.13 2005-12-04 17:43:09 vruppert Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2002 MandrakeSoft S.A.
|
||||
@ -42,6 +42,7 @@ public:
|
||||
virtual void init(void);
|
||||
virtual void checksum_cmos(void);
|
||||
virtual void reset(unsigned type);
|
||||
virtual void save_image(void);
|
||||
|
||||
virtual Bit32u get_reg(unsigned reg) {
|
||||
return s.reg[reg];
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: iodev.h,v 1.66 2005-12-02 17:27:19 vruppert Exp $
|
||||
// $Id: iodev.h,v 1.67 2005-12-04 17:43:09 vruppert Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2002 MandrakeSoft S.A.
|
||||
@ -173,12 +173,14 @@ class BOCHSAPI bx_cmos_stub_c : public bx_devmodel_c {
|
||||
STUBFUNC(cmos, set_reg);
|
||||
}
|
||||
virtual time_t get_timeval() {
|
||||
// STUBFUNC(cmos, get_timeval);
|
||||
return 0;
|
||||
}
|
||||
virtual void checksum_cmos(void) {
|
||||
STUBFUNC(cmos, checksum);
|
||||
}
|
||||
virtual void save_image(void) {
|
||||
STUBFUNC(cmos, save_image);
|
||||
}
|
||||
};
|
||||
|
||||
class BOCHSAPI bx_dma_stub_c : public bx_devmodel_c {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: pc_system.cc,v 1.44 2005-10-18 18:07:51 sshwarts Exp $
|
||||
// $Id: pc_system.cc,v 1.45 2005-12-04 17:43:08 vruppert Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2002 MandrakeSoft S.A.
|
||||
@ -221,6 +221,7 @@ Bit8u bx_pc_system_c::IAC(void)
|
||||
|
||||
void bx_pc_system_c::exit(void)
|
||||
{
|
||||
DEV_cmos_save_image();
|
||||
if (DEV_hd_present())
|
||||
DEV_hd_close_harddrive();
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: plugin.h,v 1.44 2005-12-02 17:27:18 vruppert Exp $
|
||||
// $Id: plugin.h,v 1.45 2005-12-04 17:43:09 vruppert Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// This file provides macros and types needed for plugins. It is based on
|
||||
@ -101,6 +101,7 @@ extern "C" {
|
||||
#define DEV_cmos_set_reg(a,b) (bx_devices.pluginCmosDevice->set_reg(a,b))
|
||||
#define DEV_cmos_checksum() (bx_devices.pluginCmosDevice->checksum_cmos())
|
||||
#define DEV_cmos_get_timeval() (bx_devices.pluginCmosDevice->get_timeval())
|
||||
#define DEV_cmos_save_image() (bx_devices.pluginCmosDevice->save_image())
|
||||
|
||||
///////// keyboard macros
|
||||
#define DEV_mouse_motion(dx, dy, state) \
|
||||
|
Loading…
x
Reference in New Issue
Block a user