RubyPort.cc (8161:ebb373fcb206) | RubyPort.cc (8162:5f69f1b0039e) |
---|---|
1/* 2 * Copyright (c) 2009 Advanced Micro Devices, Inc. 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; --- 291 unchanged lines hidden (view full) --- 300 301 port->hitCallback(pkt); 302 303 // 304 // If we had to stall the M5Ports, wake them up because the sequencer 305 // likely has free resources now. 306 // 307 if (waitingOnSequencer) { | 1/* 2 * Copyright (c) 2009 Advanced Micro Devices, Inc. 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; --- 291 unchanged lines hidden (view full) --- 300 301 port->hitCallback(pkt); 302 303 // 304 // If we had to stall the M5Ports, wake them up because the sequencer 305 // likely has free resources now. 306 // 307 if (waitingOnSequencer) { |
308 for (std::list<M5Port*>::iterator i = retryList.begin(); 309 i != retryList.end(); ++i) { 310 (*i)->sendRetry(); 311 (*i)->onRetryList(false); 312 DPRINTF(MemoryAccess, | 308 // 309 // Record the current list of ports to retry on a temporary list before 310 // calling sendRetry on those ports. sendRetry will cause an 311 // immediate retry, which may result in the ports being put back on the 312 // list. Therefore we want to clear the retryList before calling 313 // sendRetry. 314 // 315 std::list<M5Port*> curRetryList(retryList); 316 317 retryList.clear(); 318 waitingOnSequencer = false; 319 320 for (std::list<M5Port*>::iterator i = curRetryList.begin(); 321 i != curRetryList.end(); ++i) { 322 DPRINTF(RubyPort, |
313 "Sequencer may now be free. SendRetry to port %s\n", 314 (*i)->name()); | 323 "Sequencer may now be free. SendRetry to port %s\n", 324 (*i)->name()); |
325 (*i)->onRetryList(false); 326 (*i)->sendRetry(); |
|
315 } | 327 } |
316 retryList.clear(); 317 waitingOnSequencer = false; | |
318 } 319} 320 321void 322RubyPort::M5Port::hitCallback(PacketPtr pkt) 323{ 324 bool needsResponse = pkt->needsResponse(); 325 --- 85 unchanged lines hidden --- | 328 } 329} 330 331void 332RubyPort::M5Port::hitCallback(PacketPtr pkt) 333{ 334 bool needsResponse = pkt->needsResponse(); 335 --- 85 unchanged lines hidden --- |