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