diff options
author | Ali Saidi <Ali.Saidi@ARM.com> | 2013-01-07 13:05:33 -0500 |
---|---|---|
committer | Ali Saidi <Ali.Saidi@ARM.com> | 2013-01-07 13:05:33 -0500 |
commit | 5146a69835bc9ba37fba7d3b0ff72ecaf9b98b74 (patch) | |
tree | 694786d4ffd6384a3736d48e1fd20e29408bf56d /src/cpu/o3/commit_impl.hh | |
parent | 90bd20aae2bc940397628a4598b5b25f2c8549b5 (diff) | |
download | gem5-5146a69835bc9ba37fba7d3b0ff72ecaf9b98b74.tar.xz |
cpu: rename the misleading inSyscall to noSquashFromTC
isSyscall was originally created because during handling of a syscall in SE
mode the threadcontext had to be updated. However, in many places this is used
in FS mode (e.g. fault handlers) and the name doesn't make much sense. The
boolean actually stops gem5 from squashing speculative and non-committed state
when a write to a threadcontext happens, so re-name the variable to something
more appropriate
Diffstat (limited to 'src/cpu/o3/commit_impl.hh')
-rw-r--r-- | src/cpu/o3/commit_impl.hh | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/cpu/o3/commit_impl.hh b/src/cpu/o3/commit_impl.hh index f6c868720..351b4794d 100644 --- a/src/cpu/o3/commit_impl.hh +++ b/src/cpu/o3/commit_impl.hh @@ -559,7 +559,7 @@ DefaultCommit<Impl>::squashFromTrap(ThreadID tid) DPRINTF(Commit, "Squashing from trap, restarting at PC %s\n", pc[tid]); thread[tid]->trapPending = false; - thread[tid]->inSyscall = false; + thread[tid]->noSquashFromTC = false; trapInFlight[tid] = false; trapSquash[tid] = false; @@ -576,7 +576,7 @@ DefaultCommit<Impl>::squashFromTC(ThreadID tid) DPRINTF(Commit, "Squashing from TC, restarting at PC %s\n", pc[tid]); - thread[tid]->inSyscall = false; + thread[tid]->noSquashFromTC = false; assert(!thread[tid]->trapPending); commitStatus[tid] = ROBSquashing; @@ -721,8 +721,8 @@ DefaultCommit<Impl>::handleInterrupt() // Clear the interrupt now that it's going to be handled toIEW->commitInfo[0].clearInterrupt = true; - assert(!thread[0]->inSyscall); - thread[0]->inSyscall = true; + assert(!thread[0]->noSquashFromTC); + thread[0]->noSquashFromTC = true; if (cpu->checker) { cpu->checker->handlePendingInt(); @@ -731,7 +731,7 @@ DefaultCommit<Impl>::handleInterrupt() // CPU will handle interrupt. cpu->processInterrupts(interrupt); - thread[0]->inSyscall = false; + thread[0]->noSquashFromTC = false; commitStatus[0] = TrapPending; @@ -1014,7 +1014,7 @@ DefaultCommit<Impl>::commitInsts() Addr oldpc; // Debug statement. Checks to make sure we're not // currently updating state while handling PC events. - assert(!thread[tid]->inSyscall && !thread[tid]->trapPending); + assert(!thread[tid]->noSquashFromTC && !thread[tid]->trapPending); do { oldpc = pc[tid].instAddr(); cpu->system->pcEventQueue.service(thread[tid]->getTC()); @@ -1140,11 +1140,11 @@ DefaultCommit<Impl>::commitHead(DynInstPtr &head_inst, unsigned inst_num) cpu->checker->verify(head_inst); } - assert(!thread[tid]->inSyscall); + assert(!thread[tid]->noSquashFromTC); // Mark that we're in state update mode so that the trap's // execution doesn't generate extra squashes. - thread[tid]->inSyscall = true; + thread[tid]->noSquashFromTC = true; // Execute the trap. Although it's slightly unrealistic in // terms of timing (as it doesn't wait for the full timing of @@ -1155,7 +1155,7 @@ DefaultCommit<Impl>::commitHead(DynInstPtr &head_inst, unsigned inst_num) cpu->trap(inst_fault, tid, head_inst->staticInst); // Exit state update mode to avoid accidental updating. - thread[tid]->inSyscall = false; + thread[tid]->noSquashFromTC = false; commitStatus[tid] = TrapPending; |