execute.cc (10464:2a0fe8bca031) | execute.cc (10527:d0c2ba70dc12) |
---|---|
1/* 2 * Copyright (c) 2013-2014 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 1669 unchanged lines hidden (view full) --- 1678unsigned int 1679Execute::drain() 1680{ 1681 DPRINTF(Drain, "MinorExecute drain\n"); 1682 1683 if (drainState == NotDraining) { 1684 cpu.wakeupOnEvent(Pipeline::ExecuteStageId); 1685 | 1/* 2 * Copyright (c) 2013-2014 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 1669 unchanged lines hidden (view full) --- 1678unsigned int 1679Execute::drain() 1680{ 1681 DPRINTF(Drain, "MinorExecute drain\n"); 1682 1683 if (drainState == NotDraining) { 1684 cpu.wakeupOnEvent(Pipeline::ExecuteStageId); 1685 |
1686 /* Go to DrainCurrentInst if we're not between operations 1687 * this should probably test the LSQ as well. Or maybe 1688 * just always go to DrainCurrentInst anyway */ 1689 if (lastCommitWasEndOfMacroop) | 1686 /* Go to DrainCurrentInst if we're between microops 1687 * or waiting on an unbufferable memory operation. 1688 * Otherwise we can go straight to DrainHaltFetch 1689 */ 1690 if (isInbetweenInsts()) |
1690 setDrainState(DrainHaltFetch); 1691 else 1692 setDrainState(DrainCurrentInst); 1693 } 1694 1695 return (isDrained() ? 0 : 1); 1696} 1697 --- 41 unchanged lines hidden --- | 1691 setDrainState(DrainHaltFetch); 1692 else 1693 setDrainState(DrainCurrentInst); 1694 } 1695 1696 return (isDrained() ? 0 : 1); 1697} 1698 --- 41 unchanged lines hidden --- |