optimize sr params
This commit is contained in:
parent
ab3f2cb6d3
commit
da4722e257
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: cpu.h,v 1.613 2009-10-12 20:50:14 sshwarts Exp $
|
||||
// $Id: cpu.h,v 1.614 2009-10-16 18:29:45 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -1067,11 +1067,11 @@ public: // for now...
|
||||
#if BX_WITH_WX
|
||||
void register_wx_state(void);
|
||||
#endif
|
||||
static Bit64s param_save_handler(void *devptr, bx_param_c *param, Bit64s val);
|
||||
static Bit64s param_restore_handler(void *devptr, bx_param_c *param, Bit64s val);
|
||||
static Bit64s param_save_handler(void *devptr, bx_param_c *param);
|
||||
static void param_restore_handler(void *devptr, bx_param_c *param, Bit64s val);
|
||||
#if !BX_USE_CPU_SMF
|
||||
Bit64s param_save(bx_param_c *param, Bit64s val);
|
||||
Bit64s param_restore(bx_param_c *param, Bit64s val);
|
||||
Bit64s param_save(bx_param_c *param);
|
||||
void param_restore(bx_param_c *param, Bit64s val);
|
||||
#endif
|
||||
|
||||
// <TAG-CLASS-CPU-START>
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: init.cc,v 1.217 2009-08-19 09:59:30 sshwarts Exp $
|
||||
// $Id: init.cc,v 1.218 2009-10-16 18:29:45 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -540,20 +540,21 @@ void BX_CPU_C::register_state(void)
|
||||
BXRS_PARAM_BOOL(cpu, trace, trace);
|
||||
}
|
||||
|
||||
Bit64s BX_CPU_C::param_save_handler(void *devptr, bx_param_c *param, Bit64s val)
|
||||
Bit64s BX_CPU_C::param_save_handler(void *devptr, bx_param_c *param)
|
||||
{
|
||||
#if !BX_USE_CPU_SMF
|
||||
BX_CPU_C *class_ptr = (BX_CPU_C *) devptr;
|
||||
return class_ptr->param_save(param, val);
|
||||
return class_ptr->param_save(param);
|
||||
}
|
||||
|
||||
Bit64s BX_CPU_C::param_save(bx_param_c *param, Bit64s val)
|
||||
Bit64s BX_CPU_C::param_save(bx_param_c *param)
|
||||
{
|
||||
#else
|
||||
UNUSED(devptr);
|
||||
#endif // !BX_USE_CPU_SMF
|
||||
const char *pname, *segname;
|
||||
bx_segment_reg_t *segment = NULL;
|
||||
Bit64s val = 0;
|
||||
|
||||
pname = param->get_name();
|
||||
if (!strcmp(pname, "cpu_version")) {
|
||||
@ -598,14 +599,14 @@ Bit64s BX_CPU_C::param_save(bx_param_c *param, Bit64s val)
|
||||
return val;
|
||||
}
|
||||
|
||||
Bit64s BX_CPU_C::param_restore_handler(void *devptr, bx_param_c *param, Bit64s val)
|
||||
void BX_CPU_C::param_restore_handler(void *devptr, bx_param_c *param, Bit64s val)
|
||||
{
|
||||
#if !BX_USE_CPU_SMF
|
||||
BX_CPU_C *class_ptr = (BX_CPU_C *) devptr;
|
||||
return class_ptr->param_restore(param, val);
|
||||
class_ptr->param_restore(param, val);
|
||||
}
|
||||
|
||||
Bit64s BX_CPU_C::param_restore(bx_param_c *param, Bit64s val)
|
||||
void BX_CPU_C::param_restore(bx_param_c *param, Bit64s val)
|
||||
{
|
||||
#else
|
||||
UNUSED(devptr);
|
||||
@ -664,7 +665,6 @@ Bit64s BX_CPU_C::param_restore(bx_param_c *param, Bit64s val)
|
||||
else {
|
||||
BX_PANIC(("Unknown param %s in param_restore handler !", pname));
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
void BX_CPU_C::after_restore_state(void)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: siminterface.cc,v 1.206 2009-03-29 11:13:49 vruppert Exp $
|
||||
// $Id: siminterface.cc,v 1.207 2009-10-16 18:29:45 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2009 The Bochs Project
|
||||
@ -1412,11 +1412,11 @@ void bx_param_num_c::set_handler(param_event_handler handler)
|
||||
//set (get ());
|
||||
}
|
||||
|
||||
void bx_param_num_c::set_sr_handlers(void *devptr, param_sr_handler save, param_sr_handler restore)
|
||||
void bx_param_num_c::set_sr_handlers(void *devptr, param_save_handler save, param_restore_handler restore)
|
||||
{
|
||||
this->sr_devptr = devptr;
|
||||
this->save_handler = save;
|
||||
this->restore_handler = restore;
|
||||
sr_devptr = devptr;
|
||||
save_handler = save;
|
||||
restore_handler = restore;
|
||||
}
|
||||
|
||||
void bx_param_num_c::set_dependent_list(bx_list_c *l)
|
||||
@ -1428,7 +1428,7 @@ void bx_param_num_c::set_dependent_list(bx_list_c *l)
|
||||
Bit64s bx_param_num_c::get64()
|
||||
{
|
||||
if (save_handler) {
|
||||
return (*save_handler)(sr_devptr, this, val.number);
|
||||
return (*save_handler)(sr_devptr, this);
|
||||
}
|
||||
if (handler) {
|
||||
// the handler can decide what value to return and/or do some side effect
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: siminterface.h,v 1.242 2009-04-26 06:56:27 vruppert Exp $
|
||||
// $Id: siminterface.h,v 1.243 2009-10-16 18:29:45 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2009 The Bochs Project
|
||||
@ -684,7 +684,8 @@ public:
|
||||
};
|
||||
|
||||
typedef Bit64s (*param_event_handler)(class bx_param_c *, int set, Bit64s val);
|
||||
typedef Bit64s (*param_sr_handler)(void *devptr, class bx_param_c *, Bit64s val);
|
||||
typedef Bit64s (*param_save_handler)(void *devptr, class bx_param_c *);
|
||||
typedef void (*param_restore_handler)(void *devptr, class bx_param_c *, Bit64s val);
|
||||
typedef int (*param_enable_handler)(class bx_param_c *, int en);
|
||||
|
||||
class BOCHSAPI bx_param_num_c : public bx_param_c {
|
||||
@ -702,8 +703,8 @@ protected:
|
||||
} val;
|
||||
param_event_handler handler;
|
||||
void *sr_devptr;
|
||||
param_sr_handler save_handler;
|
||||
param_sr_handler restore_handler;
|
||||
param_save_handler save_handler;
|
||||
param_restore_handler restore_handler;
|
||||
param_enable_handler enable_handler;
|
||||
int base;
|
||||
bx_bool is_shadow;
|
||||
@ -721,7 +722,7 @@ public:
|
||||
bx_bool is_shadow = 0);
|
||||
virtual void reset() { val.number = initial_val; }
|
||||
void set_handler(param_event_handler handler);
|
||||
void set_sr_handlers(void *devptr, param_sr_handler save, param_sr_handler restore);
|
||||
void set_sr_handlers(void *devptr, param_save_handler save, param_restore_handler restore);
|
||||
void set_enable_handler(param_enable_handler handler) { enable_handler = handler; }
|
||||
void set_dependent_list(bx_list_c *l);
|
||||
virtual void set_enabled(int enabled);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: pci_ide.cc,v 1.44 2009-08-16 19:59:03 vruppert Exp $
|
||||
// $Id: pci_ide.cc,v 1.45 2009-10-16 18:29:45 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2002 MandrakeSoft S.A.
|
||||
@ -175,19 +175,20 @@ void bx_pci_ide_c::after_restore_state(void)
|
||||
}
|
||||
}
|
||||
|
||||
Bit64s bx_pci_ide_c::param_save_handler(void *devptr, bx_param_c *param, Bit64s val)
|
||||
Bit64s bx_pci_ide_c::param_save_handler(void *devptr, bx_param_c *param)
|
||||
{
|
||||
#if !BX_USE_PIDE_SMF
|
||||
bx_pci_ide_c *class_ptr = (bx_pci_ide_c *) devptr;
|
||||
return class_ptr->param_save(param, val);
|
||||
}
|
||||
|
||||
Bit64s bx_pci_ide_c::param_save(bx_param_c *param, Bit64s val)
|
||||
Bit64s bx_pci_ide_c::param_save(bx_param_c *param)
|
||||
{
|
||||
#else
|
||||
UNUSED(devptr);
|
||||
#endif // !BX_USE_PIDE_SMF
|
||||
int chan = atoi(param->get_parent()->get_name());
|
||||
Bit64s val = 0;
|
||||
if (!strcmp(param->get_name(), "buffer_top")) {
|
||||
val = (Bit32u)(BX_PIDE_THIS s.bmdma[chan].buffer_top - BX_PIDE_THIS s.bmdma[chan].buffer);
|
||||
} else if (!strcmp(param->get_name(), "buffer_idx")) {
|
||||
@ -196,14 +197,14 @@ Bit64s bx_pci_ide_c::param_save(bx_param_c *param, Bit64s val)
|
||||
return val;
|
||||
}
|
||||
|
||||
Bit64s bx_pci_ide_c::param_restore_handler(void *devptr, bx_param_c *param, Bit64s val)
|
||||
void bx_pci_ide_c::param_restore_handler(void *devptr, bx_param_c *param, Bit64s val)
|
||||
{
|
||||
#if !BX_USE_PIDE_SMF
|
||||
bx_pci_ide_c *class_ptr = (bx_pci_ide_c *) devptr;
|
||||
return class_ptr->param_restore(param, val);
|
||||
class_ptr->param_restore(param, val);
|
||||
}
|
||||
|
||||
Bit64s bx_pci_ide_c::param_restore(bx_param_c *param, Bit64s val)
|
||||
void bx_pci_ide_c::param_restore(bx_param_c *param, Bit64s val)
|
||||
{
|
||||
#else
|
||||
UNUSED(devptr);
|
||||
@ -214,7 +215,6 @@ Bit64s bx_pci_ide_c::param_restore(bx_param_c *param, Bit64s val)
|
||||
} else if (!strcmp(param->get_name(), "buffer_idx")) {
|
||||
BX_PIDE_THIS s.bmdma[chan].buffer_idx = BX_PIDE_THIS s.bmdma[chan].buffer + val;
|
||||
}
|
||||
return val;
|
||||
}
|
||||
// save/restore code end
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: pci_ide.h,v 1.14 2009-02-08 09:05:52 vruppert Exp $
|
||||
// $Id: pci_ide.h,v 1.15 2009-10-16 18:29:45 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2004 MandrakeSoft S.A.
|
||||
@ -47,11 +47,11 @@ public:
|
||||
virtual void bmdma_set_irq(Bit8u channel);
|
||||
virtual void register_state(void);
|
||||
virtual void after_restore_state(void);
|
||||
static Bit64s param_save_handler(void *devptr, bx_param_c *param, Bit64s val);
|
||||
static Bit64s param_restore_handler(void *devptr, bx_param_c *param, Bit64s val);
|
||||
static Bit64s param_save_handler(void *devptr, bx_param_c *param);
|
||||
static void param_restore_handler(void *devptr, bx_param_c *param, Bit64s val);
|
||||
#if !BX_USE_PIDE_SMF
|
||||
Bit64s param_save(bx_param_c *param, Bit64s val);
|
||||
Bit64s param_restore(bx_param_c *param, Bit64s val);
|
||||
Bit64s param_save(bx_param_c *param);
|
||||
void param_restore(bx_param_c *param, Bit64s val);
|
||||
#endif
|
||||
|
||||
virtual Bit32u pci_read_handler(Bit8u address, unsigned io_len);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: memory.h,v 1.63 2009-10-16 17:10:36 sshwarts Exp $
|
||||
// $Id: memory.h,v 1.64 2009-10-16 18:29:45 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -123,8 +123,8 @@ public:
|
||||
|
||||
void register_state(void);
|
||||
|
||||
friend Bit64s memory_param_save_handler(void *devptr, bx_param_c *param, Bit64s val);
|
||||
friend Bit64s memory_param_restore_handler(void *devptr, bx_param_c *param, Bit64s val);
|
||||
friend Bit64s memory_param_save_handler(void *devptr, bx_param_c *param);
|
||||
friend void memory_param_restore_handler(void *devptr, bx_param_c *param, Bit64s val);
|
||||
};
|
||||
|
||||
BOCHSAPI extern BX_MEM_C bx_mem;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: misc_mem.cc,v 1.135 2009-10-16 17:21:49 sshwarts Exp $
|
||||
// $Id: misc_mem.cc,v 1.136 2009-10-16 18:29:45 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2002 MandrakeSoft S.A.
|
||||
@ -74,7 +74,7 @@ void BX_MEM_C::init_memory(Bit64u guest, Bit64u host)
|
||||
{
|
||||
unsigned idx;
|
||||
|
||||
BX_DEBUG(("Init $Id: misc_mem.cc,v 1.135 2009-10-16 17:21:49 sshwarts Exp $"));
|
||||
BX_DEBUG(("Init $Id: misc_mem.cc,v 1.136 2009-10-16 18:29:45 sshwarts Exp $"));
|
||||
|
||||
// accept only memory size which is multiply of 1M
|
||||
BX_ASSERT((host & 0xfffff) == 0);
|
||||
@ -153,7 +153,7 @@ void BX_MEM_C::allocate_block(Bit32u block)
|
||||
}
|
||||
}
|
||||
|
||||
Bit64s memory_param_save_handler(void *devptr, bx_param_c *param, Bit64s val)
|
||||
Bit64s memory_param_save_handler(void *devptr, bx_param_c *param)
|
||||
{
|
||||
const char *pname = param->get_name();
|
||||
if (! strncmp(pname, "blk", 3)) {
|
||||
@ -162,16 +162,16 @@ Bit64s memory_param_save_handler(void *devptr, bx_param_c *param, Bit64s val)
|
||||
return -1;
|
||||
}
|
||||
else {
|
||||
val = (Bit32u) (BX_MEM(0)->blocks[blk_index] - BX_MEM(0)->vector);
|
||||
if (val & (BX_MEM_BLOCK_LEN-1)) return -2;
|
||||
return val / BX_MEM_BLOCK_LEN;
|
||||
Bit32u val = (Bit32u) (BX_MEM(0)->blocks[blk_index] - BX_MEM(0)->vector);
|
||||
if ((val & (BX_MEM_BLOCK_LEN-1)) == 0)
|
||||
return val / BX_MEM_BLOCK_LEN;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
Bit64s memory_param_restore_handler(void *devptr, bx_param_c *param, Bit64s val)
|
||||
void memory_param_restore_handler(void *devptr, bx_param_c *param, Bit64s val)
|
||||
{
|
||||
const char *pname = param->get_name();
|
||||
if (! strncmp(pname, "blk", 3)) {
|
||||
@ -181,8 +181,6 @@ Bit64s memory_param_restore_handler(void *devptr, bx_param_c *param, Bit64s val)
|
||||
else
|
||||
BX_MEM(0)->blocks[blk_index] = BX_MEM(0)->vector + val * BX_MEM_BLOCK_LEN;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
void BX_MEM_C::register_state()
|
||||
|
Loading…
x
Reference in New Issue
Block a user