base.cc (8711:c7e14f52c682) | base.cc (8733:64a7bf8fa56c) |
---|---|
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 --- 39 unchanged lines hidden (view full) --- 48#include <string> 49 50#include "arch/tlb.hh" 51#include "base/loader/symtab.hh" 52#include "base/cprintf.hh" 53#include "base/misc.hh" 54#include "base/output.hh" 55#include "base/trace.hh" | 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 --- 39 unchanged lines hidden (view full) --- 48#include <string> 49 50#include "arch/tlb.hh" 51#include "base/loader/symtab.hh" 52#include "base/cprintf.hh" 53#include "base/misc.hh" 54#include "base/output.hh" 55#include "base/trace.hh" |
56#include "config/use_checker.hh" |
|
56#include "cpu/base.hh" 57#include "cpu/cpuevent.hh" 58#include "cpu/profile.hh" 59#include "cpu/thread_context.hh" 60#include "debug/SyscallVerbose.hh" 61#include "params/BaseCPU.hh" 62#include "sim/process.hh" 63#include "sim/sim_events.hh" 64#include "sim/sim_exit.hh" 65#include "sim/system.hh" 66 | 57#include "cpu/base.hh" 58#include "cpu/cpuevent.hh" 59#include "cpu/profile.hh" 60#include "cpu/thread_context.hh" 61#include "debug/SyscallVerbose.hh" 62#include "params/BaseCPU.hh" 63#include "sim/process.hh" 64#include "sim/sim_events.hh" 65#include "sim/sim_exit.hh" 66#include "sim/system.hh" 67 |
68#if USE_CHECKER 69#include "cpu/checker/cpu.hh" 70#endif 71 |
|
67// Hack 68#include "sim/stat_control.hh" 69 70using namespace std; 71 72vector<BaseCPU *> BaseCPU::cpuList; 73 74// This variable reflects the max number of threads in any CPU. Be --- 139 unchanged lines hidden (view full) --- 214 functionTracingEnabled = true; 215 } else { 216 typedef EventWrapper<BaseCPU, &BaseCPU::enableFunctionTrace> wrap; 217 Event *event = new wrap(this, true); 218 schedule(event, p->function_trace_start); 219 } 220 } 221#if FULL_SYSTEM | 72// Hack 73#include "sim/stat_control.hh" 74 75using namespace std; 76 77vector<BaseCPU *> BaseCPU::cpuList; 78 79// This variable reflects the max number of threads in any CPU. Be --- 139 unchanged lines hidden (view full) --- 219 functionTracingEnabled = true; 220 } else { 221 typedef EventWrapper<BaseCPU, &BaseCPU::enableFunctionTrace> wrap; 222 Event *event = new wrap(this, true); 223 schedule(event, p->function_trace_start); 224 } 225 } 226#if FULL_SYSTEM |
222 interrupts->setCPU(this); | 227 // Check if CPU model has interrupts connected. The CheckerCPU 228 // cannot take interrupts directly for example. 229 if (interrupts) 230 interrupts->setCPU(this); |
223 224 profileEvent = NULL; 225 if (params()->profile) 226 profileEvent = new ProfileEvent(this, params()->profile); 227#endif 228 tracer = params()->tracer; 229} 230 --- 172 unchanged lines hidden (view full) --- 403 peer->setPeer(new_itb_port); 404 } 405 if (new_dtb_port && !new_dtb_port->isConnected()) { 406 assert(old_dtb_port); 407 Port *peer = old_dtb_port->getPeer();; 408 new_dtb_port->setPeer(peer); 409 peer->setPeer(new_dtb_port); 410 } | 231 232 profileEvent = NULL; 233 if (params()->profile) 234 profileEvent = new ProfileEvent(this, params()->profile); 235#endif 236 tracer = params()->tracer; 237} 238 --- 172 unchanged lines hidden (view full) --- 411 peer->setPeer(new_itb_port); 412 } 413 if (new_dtb_port && !new_dtb_port->isConnected()) { 414 assert(old_dtb_port); 415 Port *peer = old_dtb_port->getPeer();; 416 new_dtb_port->setPeer(peer); 417 peer->setPeer(new_dtb_port); 418 } |
419 420#if USE_CHECKER 421 Port *old_checker_itb_port, *old_checker_dtb_port; 422 Port *new_checker_itb_port, *new_checker_dtb_port; 423 424 CheckerCPU *oldChecker = 425 dynamic_cast<CheckerCPU*>(oldTC->getCheckerCpuPtr()); 426 CheckerCPU *newChecker = 427 dynamic_cast<CheckerCPU*>(newTC->getCheckerCpuPtr()); 428 old_checker_itb_port = oldChecker->getITBPtr()->getPort(); 429 old_checker_dtb_port = oldChecker->getDTBPtr()->getPort(); 430 new_checker_itb_port = newChecker->getITBPtr()->getPort(); 431 new_checker_dtb_port = newChecker->getDTBPtr()->getPort(); 432 433 // Move over any table walker ports if they exist for checker 434 if (new_checker_itb_port && !new_checker_itb_port->isConnected()) { 435 assert(old_checker_itb_port); 436 Port *peer = old_checker_itb_port->getPeer();; 437 new_checker_itb_port->setPeer(peer); 438 peer->setPeer(new_checker_itb_port); 439 } 440 if (new_checker_dtb_port && !new_checker_dtb_port->isConnected()) { 441 assert(old_checker_dtb_port); 442 Port *peer = old_checker_dtb_port->getPeer();; 443 new_checker_dtb_port->setPeer(peer); 444 peer->setPeer(new_checker_dtb_port); 445 } 446#endif 447 |
|
411 } 412 413#if FULL_SYSTEM 414 interrupts = oldCPU->interrupts; 415 interrupts->setCPU(this); 416 417 for (ThreadID i = 0; i < size; ++i) 418 threadContexts[i]->profileClear(); --- 114 unchanged lines hidden --- | 448 } 449 450#if FULL_SYSTEM 451 interrupts = oldCPU->interrupts; 452 interrupts->setCPU(this); 453 454 for (ThreadID i = 0; i < size; ++i) 455 threadContexts[i]->profileClear(); --- 114 unchanged lines hidden --- |