1/* 2 * Copyright (c) 2002-2005 The Regents of The University of Michigan 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 83 unchanged lines hidden (view full) --- 92CPUProgressEvent::description() 93{ 94 return "CPU Progress event"; 95} 96 97#if FULL_SYSTEM 98BaseCPU::BaseCPU(Params *p) 99 : MemObject(p->name), clock(p->clock), checkInterrupts(true), |
100 params(p), number_of_threads(p->numberOfThreads), system(p->system), 101 phase(p->phase) |
102#else 103BaseCPU::BaseCPU(Params *p) 104 : MemObject(p->name), clock(p->clock), params(p), |
105 number_of_threads(p->numberOfThreads), system(p->system), 106 phase(p->phase) |
107#endif 108{ 109// currentTick = curTick; 110 DPRINTF(FullCPU, "BaseCPU: Creating object, mem address %#x.\n", this); 111 112 // add self to global list of CPUs 113 cpuList.push_back(this); 114 --- 139 unchanged lines hidden (view full) --- 254 255#if FULL_SYSTEM 256#endif 257} 258 259Tick 260BaseCPU::nextCycle() 261{ |
262 Tick next_tick = curTick - phase + clock - 1; |
263 next_tick -= (next_tick % clock); |
264 next_tick += phase; |
265 return next_tick; 266} 267 268Tick 269BaseCPU::nextCycle(Tick begin_tick) 270{ 271 Tick next_tick = begin_tick; |
272 next_tick -= (next_tick % clock); 273 next_tick += phase; |
274 275 while (next_tick < curTick) 276 next_tick += clock; 277 |
278 assert(next_tick >= curTick); 279 return next_tick; 280} 281 282void 283BaseCPU::registerThreadContexts() 284{ 285 for (int i = 0; i < threadContexts.size(); ++i) { --- 142 unchanged lines hidden --- |