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 "cpu/base.hh" |
57#include "cpu/checker/cpu.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/full_system.hh" 64#include "sim/process.hh" 65#include "sim/sim_events.hh" 66#include "sim/sim_exit.hh" 67#include "sim/system.hh" 68 |
69// Hack 70#include "sim/stat_control.hh" 71 72using namespace std; 73 74vector<BaseCPU *> BaseCPU::cpuList; 75 76// This variable reflects the max number of threads in any CPU. Be --- 345 unchanged lines hidden (view full) --- 422 } 423 if (new_dtb_port && !new_dtb_port->isConnected()) { 424 assert(old_dtb_port); 425 Port *peer = old_dtb_port->getPeer();; 426 new_dtb_port->setPeer(peer); 427 peer->setPeer(new_dtb_port); 428 } 429 |
430 // Checker whether or not we have to transfer CheckerCPU 431 // objects over in the switch 432 CheckerCPU *oldChecker = oldTC->getCheckerCpuPtr(); 433 CheckerCPU *newChecker = newTC->getCheckerCpuPtr(); 434 if (oldChecker && newChecker) { 435 Port *old_checker_itb_port, *old_checker_dtb_port; 436 Port *new_checker_itb_port, *new_checker_dtb_port; |
437 |
438 old_checker_itb_port = oldChecker->getITBPtr()->getPort(); 439 old_checker_dtb_port = oldChecker->getDTBPtr()->getPort(); 440 new_checker_itb_port = newChecker->getITBPtr()->getPort(); 441 new_checker_dtb_port = newChecker->getDTBPtr()->getPort(); |
442 |
443 // Move over any table walker ports if they exist for checker 444 if (new_checker_itb_port && !new_checker_itb_port->isConnected()) { 445 assert(old_checker_itb_port); 446 Port *peer = old_checker_itb_port->getPeer();; 447 new_checker_itb_port->setPeer(peer); 448 peer->setPeer(new_checker_itb_port); 449 } 450 if (new_checker_dtb_port && !new_checker_dtb_port->isConnected()) { 451 assert(old_checker_dtb_port); 452 Port *peer = old_checker_dtb_port->getPeer();; 453 new_checker_dtb_port->setPeer(peer); 454 peer->setPeer(new_checker_dtb_port); 455 } |
456 } |
457 } 458 459 interrupts = oldCPU->interrupts; 460 interrupts->setCPU(this); 461 462 if (FullSystem) { 463 for (ThreadID i = 0; i < size; ++i) 464 threadContexts[i]->profileClear(); --- 111 unchanged lines hidden --- |