timing.cc (2823:ff50d1693ee5) | timing.cc (2835:d2a977df88de) |
---|---|
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; --- 104 unchanged lines hidden (view full) --- 113 114bool 115TimingSimpleCPU::quiesce(Event *quiesce_event) 116{ 117 // TimingSimpleCPU is ready to quiesce if it's not waiting for 118 // an access to complete. 119 if (status() == Idle || status() == Running || status() == SwitchedOut) { 120 DPRINTF(Config, "Ready to quiesce\n"); | 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; --- 104 unchanged lines hidden (view full) --- 113 114bool 115TimingSimpleCPU::quiesce(Event *quiesce_event) 116{ 117 // TimingSimpleCPU is ready to quiesce if it's not waiting for 118 // an access to complete. 119 if (status() == Idle || status() == Running || status() == SwitchedOut) { 120 DPRINTF(Config, "Ready to quiesce\n"); |
121 changeState(SimObject::QuiescedTiming); | |
122 return false; 123 } else { 124 DPRINTF(Config, "Waiting to quiesce\n"); 125 changeState(SimObject::Quiescing); 126 quiesceEvent = quiesce_event; 127 return true; 128 } 129} --- 73 unchanged lines hidden (view full) --- 203 204 205template <class T> 206Fault 207TimingSimpleCPU::read(Addr addr, T &data, unsigned flags) 208{ 209 // need to fill in CPU & thread IDs here 210 Request *data_read_req = new Request(); | 121 return false; 122 } else { 123 DPRINTF(Config, "Waiting to quiesce\n"); 124 changeState(SimObject::Quiescing); 125 quiesceEvent = quiesce_event; 126 return true; 127 } 128} --- 73 unchanged lines hidden (view full) --- 202 203 204template <class T> 205Fault 206TimingSimpleCPU::read(Addr addr, T &data, unsigned flags) 207{ 208 // need to fill in CPU & thread IDs here 209 Request *data_read_req = new Request(); |
211 | 210 data_read_req->setThreadContext(0,0); //Need CPU/Thread IDS HERE |
212 data_read_req->setVirt(0, addr, sizeof(T), flags, thread->readPC()); 213 214 if (traceData) { 215 traceData->setAddr(data_read_req->getVaddr()); 216 } 217 218 // translate to physical address 219 Fault fault = thread->translateDataReadReq(data_read_req); --- 64 unchanged lines hidden (view full) --- 284 285 286template <class T> 287Fault 288TimingSimpleCPU::write(T data, Addr addr, unsigned flags, uint64_t *res) 289{ 290 // need to fill in CPU & thread IDs here 291 Request *data_write_req = new Request(); | 211 data_read_req->setVirt(0, addr, sizeof(T), flags, thread->readPC()); 212 213 if (traceData) { 214 traceData->setAddr(data_read_req->getVaddr()); 215 } 216 217 // translate to physical address 218 Fault fault = thread->translateDataReadReq(data_read_req); --- 64 unchanged lines hidden (view full) --- 283 284 285template <class T> 286Fault 287TimingSimpleCPU::write(T data, Addr addr, unsigned flags, uint64_t *res) 288{ 289 // need to fill in CPU & thread IDs here 290 Request *data_write_req = new Request(); |
291 data_write_req->setThreadContext(0,0); //Need CPU/Thread IDS HERE |
|
292 data_write_req->setVirt(0, addr, sizeof(T), flags, thread->readPC()); 293 294 // translate to physical address 295 Fault fault = thread->translateDataWriteReq(data_write_req); 296 // Now do the access. 297 if (fault == NoFault) { 298 Packet *data_write_pkt = 299 new Packet(data_write_req, Packet::WriteReq, Packet::Broadcast); --- 67 unchanged lines hidden (view full) --- 367 368void 369TimingSimpleCPU::fetch() 370{ 371 checkForInterrupts(); 372 373 // need to fill in CPU & thread IDs here 374 Request *ifetch_req = new Request(); | 292 data_write_req->setVirt(0, addr, sizeof(T), flags, thread->readPC()); 293 294 // translate to physical address 295 Fault fault = thread->translateDataWriteReq(data_write_req); 296 // Now do the access. 297 if (fault == NoFault) { 298 Packet *data_write_pkt = 299 new Packet(data_write_req, Packet::WriteReq, Packet::Broadcast); --- 67 unchanged lines hidden (view full) --- 367 368void 369TimingSimpleCPU::fetch() 370{ 371 checkForInterrupts(); 372 373 // need to fill in CPU & thread IDs here 374 Request *ifetch_req = new Request(); |
375 ifetch_req->setThreadContext(0,0); //Need CPU/Thread IDS HERE |
|
375 Fault fault = setupFetchRequest(ifetch_req); 376 377 ifetch_pkt = new Packet(ifetch_req, Packet::ReadReq, Packet::Broadcast); 378 ifetch_pkt->dataStatic(&inst); 379 380 if (fault == NoFault) { 381 if (!icachePort.sendTiming(ifetch_pkt)) { 382 // Need to wait for retry --- 242 unchanged lines hidden --- | 376 Fault fault = setupFetchRequest(ifetch_req); 377 378 ifetch_pkt = new Packet(ifetch_req, Packet::ReadReq, Packet::Broadcast); 379 ifetch_pkt->dataStatic(&inst); 380 381 if (fault == NoFault) { 382 if (!icachePort.sendTiming(ifetch_pkt)) { 383 // Need to wait for retry --- 242 unchanged lines hidden --- |