This is the mail archive of the
sid@sourceware.org
mailing list for the SID project.
[patch][commit] Dynamic Configuration Part 2
- From: Dave Brolley <brolley at redhat dot com>
- To: sid at sources dot redhat dot com
- Date: Thu, 11 May 2006 16:12:01 -0400
- Subject: [patch][commit] Dynamic Configuration Part 2
Hi,
I've committed this patch which is a couple fo tweaks to the dynamic
configuration and profiling interfaces. basic_cpu::cg_profile and
basic_cpu::cg_profile_jump are now virtual to allow for hooks by
inheriting classes. basic_cpu::dynamic_config has been added in order to
force --insn-count=1 when --trace-counter is on. This is needed in order
that total_insn_count is updated after each insn.
Dave
2006-05-11 Dave Brolley <brolley@redhat.com>
* sidcpuutil.h (cg_profile): Now virtual.
(cg_profile_jump): Now virtual.
(dynamic_config): New vritual override.
Index: sid/include/sidcpuutil.h
===================================================================
RCS file: /cvs/src/src/sid/include/sidcpuutil.h,v
retrieving revision 1.34
retrieving revision 1.35
diff -c -p -r1.34 -r1.35
*** sid/include/sidcpuutil.h 27 Mar 2006 20:30:06 -0000 1.34
--- sid/include/sidcpuutil.h 11 May 2006 19:29:51 -0000 1.35
***************
*** 1,6 ****
// sidcpuutil.h - Elements common to CPU models. -*- C++ -*-
! // Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 Red Hat.
// This file is part of SID and is licensed under the GPL.
// See the file COPYING.SID for conditions for redistribution.
--- 1,6 ----
// sidcpuutil.h - Elements common to CPU models. -*- C++ -*-
! // Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Red Hat.
// This file is part of SID and is licensed under the GPL.
// See the file COPYING.SID for conditions for redistribution.
*************** namespace sidutil
*** 354,360 ****
{
this->step_cycles_pin.drive (n);
}
! void cg_profile (sid::host_int_4 caller, sid::host_int_4 callee)
{
last_caller = caller;
last_callee = callee;
--- 354,360 ----
{
this->step_cycles_pin.drive (n);
}
! virtual void cg_profile (sid::host_int_4 caller, sid::host_int_4 callee)
{
last_caller = caller;
last_callee = callee;
*************** namespace sidutil
*** 373,379 ****
<< " ";
}
}
! void cg_profile_jump (sid::host_int_4 caller, sid::host_int_4 callee)
{
last_caller = caller;
last_callee = callee;
--- 373,379 ----
<< " ";
}
}
! virtual void cg_profile_jump (sid::host_int_4 caller, sid::host_int_4 callee)
{
last_caller = caller;
last_callee = callee;
*************** namespace sidutil
*** 647,652 ****
--- 647,664 ----
}
}
+ virtual component::status dynamic_config(const string& spec)
+ {
+ // Call up to the base class
+ component::status s = configurable_component::dynamic_config (spec);
+
+ // Check whether insn-count must be forced to 1
+ if (trace_counter_p)
+ configure ("insn-count=1");
+
+ return s;
+ }
+
// state save/restore: Override these in derived classes, but
// include a call up to this base implementation.
protected: