[patch][commit] Dynamic Configuration Part 2

Dave Brolley <[email protected]>
Newsgroups gmane.comp.emulators.sid.devel
Message-ID <[email protected]>
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
sid-dynamic-config2.ChangeLog (text/plain, 166 B)
2006-05-11  Dave Brolley  <[email protected]>

	* sidcpuutil.h (cg_profile): Now virtual.
	(cg_profile_jump): Now virtual.
	(dynamic_config): New vritual override.
sid-dynamic-config2.patch.txt (text/plain, 2.3 KB)
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:
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.