Deleted Added
sdiff udiff text old ( 9436:4a0223da4924 ) new ( 9444:ab47fe7f03f0 )
full compact
1/*
2 * Copyright (c) 2011 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
9 * licensed hereunder. You may use the software subject to the license
10 * terms below provided that you ensure that this notice is replicated

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

328 {
329 if (deallocateContextEvent[tid].scheduled())
330 deallocateContextEvent[tid].squash();
331 }
332
333 /** The tick event used for scheduling CPU ticks. */
334 DeallocateContextEvent deallocateContextEvent[Impl::MaxThreads];
335
336 public:
337 /** Constructs a CPU with the given parameters. */
338 FullO3CPU(DerivO3CPUParams *params);
339 /** Destructor. */
340 ~FullO3CPU();
341
342 /** Registers statistics. */
343 void regStats();

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

411 void activateWhenReady(ThreadID tid);
412
413 /** Add or Remove a Thread Context in the CPU. */
414 void doContextSwitch();
415
416 /** Update The Order In Which We Process Threads. */
417 void updateThreadPriority();
418
419 /** Serialize state. */
420 virtual void serialize(std::ostream &os);
421
422 /** Unserialize from a checkpoint. */
423 virtual void unserialize(Checkpoint *cp, const std::string &section);
424
425 public:
426 /** Executes a syscall.
427 * @todo: Determine if this needs to be virtual.
428 */
429 void syscall(int64_t callnum, ThreadID tid);
430
431 /** Starts draining the CPU's pipeline of all instructions in
432 * order to stop all memory accesses. */
433 unsigned int drain(DrainManager *drain_manager);
434
435 /** Resumes execution after a drain. */
436 void drainResume();
437
438 /** Signals to this CPU that a stage has completed switching out. */
439 void signalDrained();
440
441 /** Switches out this CPU. */
442 virtual void switchOut();
443
444 /** Takes over from another CPU. */
445 virtual void takeOverFrom(BaseCPU *oldCPU);
446
447 /** Get the current instruction sequence number, and increment it. */

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

727 Checker<Impl> *checker;
728
729 /** Pointer to the system. */
730 System *system;
731
732 /** DrainManager to notify when draining has completed. */
733 DrainManager *drainManager;
734
735 /** Counter of how many stages have completed draining. */
736 int drainCount;
737
738 /** Pointers to all of the threads in the CPU. */
739 std::vector<Thread *> thread;
740
741 /** Is there a context switch pending? */
742 bool contextSwitch;
743
744 /** Threads Scheduled to Enter CPU */
745 std::list<int> cpuWaitList;

--- 69 unchanged lines hidden ---