drain.hh (9342:6fec8f26e56d) drain.hh (9346:7a9b5e0335a6)
1/*
2 * Copyright (c) 2012 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 188 unchanged lines hidden (view full) ---

197 /**
198 * Resume execution after a successful drain.
199 *
200 * @note This method is normally only called from the simulation
201 * scripts.
202 */
203 virtual void drainResume();
204
1/*
2 * Copyright (c) 2012 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 188 unchanged lines hidden (view full) ---

197 /**
198 * Resume execution after a successful drain.
199 *
200 * @note This method is normally only called from the simulation
201 * scripts.
202 */
203 virtual void drainResume();
204
205 /**
206 * Write back dirty buffers to memory using functional writes.
207 *
208 * After returning, an object implementing this method should have
209 * written all its dirty data back to memory. This method is
210 * typically used to prepare a system with caches for
211 * checkpointing.
212 */
213 virtual void memWriteback() {};
214
215 /**
216 * Invalidate the contents of memory buffers.
217 *
218 * When the switching to hardware virtualized CPU models, we need
219 * to make sure that we don't have any cached state in the system
220 * that might become stale when we return. This method is used to
221 * flush all such state back to main memory.
222 *
223 * @warn This does <i>not</i> cause any dirty state to be written
224 * back to memory.
225 */
226 virtual void memInvalidate() {};
227
205 State getDrainState() const { return _drainState; }
206
207 protected:
208 void setDrainState(State new_state) { _drainState = new_state; }
209
210
211 private:
212 State _drainState;
213
214};
215
216#endif
228 State getDrainState() const { return _drainState; }
229
230 protected:
231 void setDrainState(State new_state) { _drainState = new_state; }
232
233
234 private:
235 State _drainState;
236
237};
238
239#endif