base.cc (6670:81e6aa93bc6a) base.cc (7781:a9f9eed35b18)
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;

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

28 * Authors: Steve Reinhardt
29 * Nathan Binkert
30 */
31
32#include <iostream>
33#include <string>
34#include <sstream>
35
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;

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

28 * Authors: Steve Reinhardt
29 * Nathan Binkert
30 */
31
32#include <iostream>
33#include <string>
34#include <sstream>
35
36#include "arch/tlb.hh"
36#include "base/cprintf.hh"
37#include "base/loader/symtab.hh"
38#include "base/misc.hh"
39#include "base/output.hh"
40#include "base/trace.hh"
41#include "cpu/base.hh"
42#include "cpu/cpuevent.hh"
43#include "cpu/thread_context.hh"

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

354 system->replaceThreadContext(newTC, newTC->contextId());
355
356 /* This code no longer works since the zero register (e.g.,
357 * r31 on Alpha) doesn't necessarily contain zero at this
358 * point.
359 if (DTRACE(Context))
360 ThreadContext::compare(oldTC, newTC);
361 */
37#include "base/cprintf.hh"
38#include "base/loader/symtab.hh"
39#include "base/misc.hh"
40#include "base/output.hh"
41#include "base/trace.hh"
42#include "cpu/base.hh"
43#include "cpu/cpuevent.hh"
44#include "cpu/thread_context.hh"

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

355 system->replaceThreadContext(newTC, newTC->contextId());
356
357 /* This code no longer works since the zero register (e.g.,
358 * r31 on Alpha) doesn't necessarily contain zero at this
359 * point.
360 if (DTRACE(Context))
361 ThreadContext::compare(oldTC, newTC);
362 */
363
364 Port *old_itb_port, *old_dtb_port, *new_itb_port, *new_dtb_port;
365 old_itb_port = oldTC->getITBPtr()->getPort();
366 old_dtb_port = oldTC->getDTBPtr()->getPort();
367 new_itb_port = newTC->getITBPtr()->getPort();
368 new_dtb_port = newTC->getDTBPtr()->getPort();
369
370 // Move over any table walker ports if they exist
371 if (new_itb_port && !new_itb_port->isConnected()) {
372 assert(old_itb_port);
373 Port *peer = old_itb_port->getPeer();;
374 new_itb_port->setPeer(peer);
375 peer->setPeer(new_itb_port);
376 }
377 if (new_dtb_port && !new_dtb_port->isConnected()) {
378 assert(old_dtb_port);
379 Port *peer = old_dtb_port->getPeer();;
380 new_dtb_port->setPeer(peer);
381 peer->setPeer(new_dtb_port);
382 }
362 }
363
364#if FULL_SYSTEM
365 interrupts = oldCPU->interrupts;
366 interrupts->setCPU(this);
367
368 for (ThreadID i = 0; i < size; ++i)
369 threadContexts[i]->profileClear();

--- 81 unchanged lines hidden ---
383 }
384
385#if FULL_SYSTEM
386 interrupts = oldCPU->interrupts;
387 interrupts->setCPU(this);
388
389 for (ThreadID i = 0; i < size; ++i)
390 threadContexts[i]->profileClear();

--- 81 unchanged lines hidden ---