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 ---