base.cc (8876:44f8e7bb7fdf) base.cc (8887:20ea02da9c53)
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"
57#include "cpu/base.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
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#if USE_CHECKER
70#include "cpu/checker/cpu.hh"
71#endif
72
73// Hack
74#include "sim/stat_control.hh"
75
76using namespace std;
77
78vector<BaseCPU *> BaseCPU::cpuList;
79
80// This variable reflects the max number of threads in any CPU. Be

--- 345 unchanged lines hidden (view full) ---

426 }
427 if (new_dtb_port && !new_dtb_port->isConnected()) {
428 assert(old_dtb_port);
429 Port *peer = old_dtb_port->getPeer();;
430 new_dtb_port->setPeer(peer);
431 peer->setPeer(new_dtb_port);
432 }
433
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
434#if USE_CHECKER
435 Port *old_checker_itb_port, *old_checker_dtb_port;
436 Port *new_checker_itb_port, *new_checker_dtb_port;
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
437
438 CheckerCPU *oldChecker =
439 dynamic_cast<CheckerCPU*>(oldTC->getCheckerCpuPtr());
440 CheckerCPU *newChecker =
441 dynamic_cast<CheckerCPU*>(newTC->getCheckerCpuPtr());
442 old_checker_itb_port = oldChecker->getITBPtr()->getPort();
443 old_checker_dtb_port = oldChecker->getDTBPtr()->getPort();
444 new_checker_itb_port = newChecker->getITBPtr()->getPort();
445 new_checker_dtb_port = newChecker->getDTBPtr()->getPort();
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();
446
442
447 // Move over any table walker ports if they exist for checker
448 if (new_checker_itb_port && !new_checker_itb_port->isConnected()) {
449 assert(old_checker_itb_port);
450 Port *peer = old_checker_itb_port->getPeer();;
451 new_checker_itb_port->setPeer(peer);
452 peer->setPeer(new_checker_itb_port);
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 }
453 }
456 }
454 if (new_checker_dtb_port && !new_checker_dtb_port->isConnected()) {
455 assert(old_checker_dtb_port);
456 Port *peer = old_checker_dtb_port->getPeer();;
457 new_checker_dtb_port->setPeer(peer);
458 peer->setPeer(new_checker_dtb_port);
459 }
460#endif
461
462 }
463
464 interrupts = oldCPU->interrupts;
465 interrupts->setCPU(this);
466
467 if (FullSystem) {
468 for (ThreadID i = 0; i < size; ++i)
469 threadContexts[i]->profileClear();

--- 111 unchanged lines hidden ---
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 ---