1/* 2 * Copyright (c) 2001-2006 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; --- 48 unchanged lines hidden (view full) --- 57 58using namespace std; 59 60// constructor 61#if FULL_SYSTEM 62SimpleThread::SimpleThread(BaseCPU *_cpu, int _thread_num, System *_sys, 63 AlphaITB *_itb, AlphaDTB *_dtb, 64 bool use_kernel_stats) |
65 : ThreadState(_cpu, -1, _thread_num), cpu(_cpu), system(_sys), itb(_itb), |
66 dtb(_dtb) 67 68{ 69 tc = new ProxyThreadContext<SimpleThread>(this); 70 71 quiesceEvent = new EndQuiesceEvent(tc); 72 73 regs.clear(); --- 27 unchanged lines hidden (view full) --- 101 virtPort = new VirtualPort(csprintf("%s-%d-vport", 102 cpu->name(), tid)); 103 mem_port = system->physmem->getPort("functional"); 104 mem_port->setPeer(virtPort); 105 virtPort->setPeer(mem_port); 106} 107#else 108SimpleThread::SimpleThread(BaseCPU *_cpu, int _thread_num, |
109 Process *_process, int _asid) 110 : ThreadState(_cpu, -1, _thread_num, _process, _asid), |
111 cpu(_cpu) 112{ |
113 regs.clear(); 114 tc = new ProxyThreadContext<SimpleThread>(this); 115} 116 117#endif 118 119SimpleThread::SimpleThread() 120#if FULL_SYSTEM |
121 : ThreadState(NULL, -1, -1) |
122#else |
123 : ThreadState(NULL, -1, -1, NULL, -1) |
124#endif 125{ 126 tc = new ProxyThreadContext<SimpleThread>(this); 127 regs.clear(); 128} 129 130SimpleThread::~SimpleThread() 131{ --- 186 unchanged lines hidden (view full) --- 318SimpleThread::delVirtPort(VirtualPort *vp) 319{ 320 if (vp != virtPort) { 321 delete vp->getPeer(); 322 delete vp; 323 } 324} 325 |
326#else 327TranslatingPort * 328SimpleThread::getMemPort() 329{ 330 if (port != NULL) 331 return port; |
332 |
333 /* Use this port to for syscall emulation writes to memory. */ 334 Port *dcache_port; 335 port = new TranslatingPort(csprintf("%s-%d-funcport", 336 cpu->name(), tid), 337 process->pTable, false); 338 dcache_port = cpu->getPort("dcache_port"); 339 assert(dcache_port != NULL); 340 dcache_port = dcache_port->getPeer(); 341// mem_port->setPeer(port); 342 port->setPeer(dcache_port); 343 return port; 344} 345 |
346#endif 347 |