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; --- 154 unchanged lines hidden (view full) --- 163 int *counter = new int; 164 *counter = number_of_threads; 165 for (int i = 0; i < number_of_threads; ++i) 166 new CountedExitEvent(comLoadEventQueue[i], 167 "all threads reached the max load count", 168 p->max_loads_all_threads, *counter); 169 } 170 |
171 functionTracingEnabled = false; 172 if (p->functionTrace) { 173 functionTraceStream = simout.find(csprintf("ftrace.%s", name())); 174 currentFunctionStart = currentFunctionEnd = 0; 175 functionEntryTick = p->functionTraceStart; 176 177 if (p->functionTraceStart == 0) { 178 functionTracingEnabled = true; --- 70 unchanged lines hidden (view full) --- 249 } 250 } else if (size == 1) 251 threadContexts[0]->regStats(name()); 252 253#if FULL_SYSTEM 254#endif 255} 256 |
257 |
258void 259BaseCPU::registerThreadContexts() 260{ 261 for (int i = 0; i < threadContexts.size(); ++i) { 262 ThreadContext *tc = threadContexts[i]; 263 264#if FULL_SYSTEM 265 int id = params->cpu_id; --- 38 unchanged lines hidden (view full) --- 304 assert(newTC->getProcessPtr() == oldTC->getProcessPtr()); 305 newTC->getProcessPtr()->replaceThreadContext(newTC, newTC->readCpuId()); 306#endif 307 308// TheISA::compareXCs(oldXC, newXC); 309 } 310 311#if FULL_SYSTEM |
312 interrupts = oldCPU->interrupts; |
313 checkInterrupts = oldCPU->checkInterrupts; 314 315 for (int i = 0; i < threadContexts.size(); ++i) 316 threadContexts[i]->profileClear(); 317 318 // The Sampler must take care of this! 319// if (profileEvent) 320// profileEvent->schedule(curTick); --- 15 unchanged lines hidden (view full) --- 336 } 337 338 schedule(curTick + interval); 339} 340 341void 342BaseCPU::post_interrupt(int int_num, int index) 343{ |
344 checkInterrupts = true; |
345 interrupts.post(int_num, index); |
346} 347 348void 349BaseCPU::clear_interrupt(int int_num, int index) 350{ |
351 interrupts.clear(int_num, index); |
352} 353 354void 355BaseCPU::clear_interrupts() 356{ |
357 interrupts.clear_all(); |
358} 359 360 361void 362BaseCPU::serialize(std::ostream &os) 363{ |
364 interrupts.serialize(os); |
365} 366 367void 368BaseCPU::unserialize(Checkpoint *cp, const std::string §ion) 369{ |
370 interrupts.unserialize(cp, section); |
371} 372 373#endif // FULL_SYSTEM 374 375void 376BaseCPU::traceFunctionsInternal(Addr pc) 377{ 378 if (!debugSymbolTable) --- 25 unchanged lines hidden --- |