summaryrefslogtreecommitdiff
path: root/kern/system_events.hh
diff options
context:
space:
mode:
authorSteve Reinhardt <stever@eecs.umich.edu>2005-09-24 14:20:29 -0400
committerSteve Reinhardt <stever@eecs.umich.edu>2005-09-24 14:20:29 -0400
commitd60de7122da3a90a0204853f633d34d93dcc622f (patch)
treef924b3f340c67c752efd7648b8e1f7ce7958425d /kern/system_events.hh
parentb15a7aaf5e2099a3d13061c63246bed8378d2e2f (diff)
downloadgem5-d60de7122da3a90a0204853f633d34d93dcc622f.tar.xz
Add functions to System object to set up function-based events,
including automatically fixing up addresses to deal with optionally executed Alpha gp update prolog. SConscript: Remove freebsd_events.cc and linux_events.cc. base/remote_gdb.cc: cpu/pc_event.cc: kern/system_events.cc: kern/system_events.hh: PCEvents now schedule themselves in constructor. cpu/pc_event.hh: PCEvents now schedule themselves in the constructor. Get rid of constructor versions that don't take an address and all the schedule() methods that are now unnecessary. kern/freebsd/freebsd_system.cc: kern/freebsd/freebsd_system.hh: Use new System methods to schedule function-based events. Move FreeBSD-specific function event classes into FreebsdSystem. kern/linux/linux_system.cc: kern/linux/linux_system.hh: Use new System methods to schedule function-based events. Move Linux-specific function event classes into LinuxSystem. kern/tru64/tru64_events.hh: PCEvents now schedule themselves in constructor. Add DebugPrintfrEvent to encapsulate raw setting as new type (to work better with new System function-event method.) kern/tru64/tru64_system.cc: Use new System methods to schedule function-based events. kern/tru64/tru64_system.hh: Add DebugPrintfrEvent to encapsulate raw setting as new type (to work better with new System function-event method.) sim/system.cc: sim/system.hh: Add functions to set up function-based events, including automatically fixing up addresses to deal with optionally executed Alpha gp update prolog. --HG-- extra : convert_revision : c2cf09144297b6602afe755a34a0a2227023783f
Diffstat (limited to 'kern/system_events.hh')
-rw-r--r--kern/system_events.hh25
1 files changed, 13 insertions, 12 deletions
diff --git a/kern/system_events.hh b/kern/system_events.hh
index 94f6efeba..246140a09 100644
--- a/kern/system_events.hh
+++ b/kern/system_events.hh
@@ -29,20 +29,24 @@
#ifndef __SYSTEM_EVENTS_HH__
#define __SYSTEM_EVENTS_HH__
+#include "cpu/pc_event.hh"
+
class System;
class SkipFuncEvent : public PCEvent
{
public:
- SkipFuncEvent(PCEventQueue *q, const std::string &desc)
- : PCEvent(q, desc) {}
+ SkipFuncEvent(PCEventQueue *q, const std::string &desc, Addr addr)
+ : PCEvent(q, desc, addr)
+ {}
virtual void process(ExecContext *xc);
};
class FnEvent : public PCEvent
{
public:
- FnEvent(PCEventQueue *q, const std::string &desc, Stats::MainBin *bin);
+ FnEvent(PCEventQueue *q, const std::string &desc, Addr addr,
+ Stats::MainBin *bin);
virtual void process(ExecContext *xc);
std::string myname() const { return _name; }
@@ -53,12 +57,9 @@ class FnEvent : public PCEvent
class IdleStartEvent : public PCEvent
{
- private:
- System *system;
-
public:
- IdleStartEvent(PCEventQueue *q, const std::string &desc, System *sys)
- : PCEvent(q, desc), system(sys)
+ IdleStartEvent(PCEventQueue *q, const std::string &desc, Addr addr)
+ : PCEvent(q, desc, addr)
{}
virtual void process(ExecContext *xc);
};
@@ -66,8 +67,8 @@ class IdleStartEvent : public PCEvent
class InterruptStartEvent : public PCEvent
{
public:
- InterruptStartEvent(PCEventQueue *q, const std::string &desc)
- : PCEvent(q, desc)
+ InterruptStartEvent(PCEventQueue *q, const std::string &desc, Addr addr)
+ : PCEvent(q, desc, addr)
{}
virtual void process(ExecContext *xc);
};
@@ -75,8 +76,8 @@ class InterruptStartEvent : public PCEvent
class InterruptEndEvent : public PCEvent
{
public:
- InterruptEndEvent(PCEventQueue *q, const std::string &desc)
- : PCEvent(q, desc)
+ InterruptEndEvent(PCEventQueue *q, const std::string &desc, Addr addr)
+ : PCEvent(q, desc, addr)
{}
virtual void process(ExecContext *xc);
};