2c2
< * Copyright (c) 2011 ARM Limited
---
> * Copyright (c) 2011-2012 ARM Limited
335a336,362
> /**
> * Check if the pipeline has drained and signal the DrainManager.
> *
> * This method checks if a drain has been requested and if the CPU
> * has drained successfully (i.e., there are no instructions in
> * the pipeline). If the CPU has drained, it deschedules the tick
> * event and signals the drain manager.
> *
> * @return False if a drain hasn't been requested or the CPU
> * hasn't drained, true otherwise.
> */
> bool tryDrain();
>
> /**
> * Perform sanity checks after a drain.
> *
> * This method is called from drain() when it has determined that
> * the CPU is fully drained when gem5 is compiled with the NDEBUG
> * macro undefined. The intention of this method is to do more
> * extensive tests than the isDrained() method to weed out any
> * draining bugs.
> */
> void drainSanityCheck() const;
>
> /** Check if a system is in a drained state. */
> bool isDrained() const;
>
418a446,448
> /** Is the CPU draining? */
> bool isDraining() const { return getDrainState() == Drainable::Draining; }
>
438,439c468,475
< /** Signals to this CPU that a stage has completed switching out. */
< void signalDrained();
---
> /**
> * Commit has reached a safe point to drain a thread.
> *
> * Commit calls this method to inform the pipeline that it has
> * reached a point where it is not executed microcode and is about
> * to squash uncommitted instructions to fully drain the pipeline.
> */
> void commitDrained(ThreadID tid);
735,737d770
< /** Counter of how many stages have completed draining. */
< int drainCount;
<