execute.cc (13632:483aaa00c69c) execute.cc (13646:626670cc6da4)
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

--- 1662 unchanged lines hidden (view full) ---

1671 priority_list = cpu.randomPriority();
1672 break;
1673 default:
1674 panic("Invalid thread policy");
1675 }
1676
1677 for (auto tid : priority_list) {
1678 ExecuteThreadInfo &ex_info = executeInfo[tid];
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

--- 1662 unchanged lines hidden (view full) ---

1671 priority_list = cpu.randomPriority();
1672 break;
1673 default:
1674 panic("Invalid thread policy");
1675 }
1676
1677 for (auto tid : priority_list) {
1678 ExecuteThreadInfo &ex_info = executeInfo[tid];
1679 bool can_commit_insts = !ex_info.inFlightInsts->empty();
1679
1680 bool is_thread_active =
1681 cpu.getContext(tid)->status() == ThreadContext::Active;
1682 bool can_commit_insts = !ex_info.inFlightInsts->empty() &&
1683 is_thread_active;
1684
1680 if (can_commit_insts) {
1681 QueuedInst *head_inflight_inst = &(ex_info.inFlightInsts->front());
1682 MinorDynInstPtr inst = head_inflight_inst->inst;
1683
1684 can_commit_insts = can_commit_insts &&
1685 (!inst->inLSQ || (lsq.findResponse(inst) != NULL));
1686
1687 if (!inst->inLSQ) {

--- 49 unchanged lines hidden (view full) ---

1737 case Enums::Random:
1738 priority_list = cpu.randomPriority();
1739 break;
1740 default:
1741 panic("Invalid thread scheduling policy.");
1742 }
1743
1744 for (auto tid : priority_list) {
1685 if (can_commit_insts) {
1686 QueuedInst *head_inflight_inst = &(ex_info.inFlightInsts->front());
1687 MinorDynInstPtr inst = head_inflight_inst->inst;
1688
1689 can_commit_insts = can_commit_insts &&
1690 (!inst->inLSQ || (lsq.findResponse(inst) != NULL));
1691
1692 if (!inst->inLSQ) {

--- 49 unchanged lines hidden (view full) ---

1742 case Enums::Random:
1743 priority_list = cpu.randomPriority();
1744 break;
1745 default:
1746 panic("Invalid thread scheduling policy.");
1747 }
1748
1749 for (auto tid : priority_list) {
1745 if (getInput(tid)) {
1750 if (cpu.getContext(tid)->status() == ThreadContext::Active &&
1751 getInput(tid)) {
1746 issuePriority = tid;
1747 return tid;
1748 }
1749 }
1750
1751 return InvalidThreadID;
1752}
1753

--- 115 unchanged lines hidden ---
1752 issuePriority = tid;
1753 return tid;
1754 }
1755 }
1756
1757 return InvalidThreadID;
1758}
1759

--- 115 unchanged lines hidden ---