commit_impl.hh (8662:d4548b381e87) | commit_impl.hh (8733:64a7bf8fa56c) |
---|---|
1/* 2 * Copyright (c) 2010 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 --- 714 unchanged lines hidden (view full) --- 723 DPRINTF(Commit, "Interrupt detected.\n"); 724 725 // Clear the interrupt now that it's going to be handled 726 toIEW->commitInfo[0].clearInterrupt = true; 727 728 assert(!thread[0]->inSyscall); 729 thread[0]->inSyscall = true; 730 | 1/* 2 * Copyright (c) 2010 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 --- 714 unchanged lines hidden (view full) --- 723 DPRINTF(Commit, "Interrupt detected.\n"); 724 725 // Clear the interrupt now that it's going to be handled 726 toIEW->commitInfo[0].clearInterrupt = true; 727 728 assert(!thread[0]->inSyscall); 729 thread[0]->inSyscall = true; 730 |
731#if USE_CHECKER 732 if (cpu->checker) { 733 cpu->checker->handlePendingInt(); 734 } 735#endif 736 |
|
731 // CPU will handle interrupt. 732 cpu->processInterrupts(interrupt); 733 734 thread[0]->inSyscall = false; 735 736 commitStatus[0] = TrapPending; 737 738 // Generate trap squash event. --- 31 unchanged lines hidden (view full) --- 770#endif // FULL_SYSTEM 771 772template <class Impl> 773void 774DefaultCommit<Impl>::commit() 775{ 776 777#if FULL_SYSTEM | 737 // CPU will handle interrupt. 738 cpu->processInterrupts(interrupt); 739 740 thread[0]->inSyscall = false; 741 742 commitStatus[0] = TrapPending; 743 744 // Generate trap squash event. --- 31 unchanged lines hidden (view full) --- 776#endif // FULL_SYSTEM 777 778template <class Impl> 779void 780DefaultCommit<Impl>::commit() 781{ 782 783#if FULL_SYSTEM |
778 // Check for any interrupt that we've already squashed for and start processing it. | 784 // Check for any interrupt that we've already squashed for and 785 // start processing it. |
779 if (interrupt != NoFault) 780 handleInterrupt(); 781 782 // Check if we have a interrupt and get read to handle it 783 if (cpu->checkInterrupts(cpu->tcBase(0))) 784 propagateInterrupt(); 785#endif // FULL_SYSTEM 786 --- 341 unchanged lines hidden (view full) --- 1128 if (iewStage->hasStoresToWB(tid) || inst_num > 0) { 1129 DPRINTF(Commit, "Stores outstanding, fault must wait.\n"); 1130 return false; 1131 } 1132 1133 head_inst->setCompleted(); 1134 1135#if USE_CHECKER | 786 if (interrupt != NoFault) 787 handleInterrupt(); 788 789 // Check if we have a interrupt and get read to handle it 790 if (cpu->checkInterrupts(cpu->tcBase(0))) 791 propagateInterrupt(); 792#endif // FULL_SYSTEM 793 --- 341 unchanged lines hidden (view full) --- 1135 if (iewStage->hasStoresToWB(tid) || inst_num > 0) { 1136 DPRINTF(Commit, "Stores outstanding, fault must wait.\n"); 1137 return false; 1138 } 1139 1140 head_inst->setCompleted(); 1141 1142#if USE_CHECKER |
1136 if (cpu->checker && head_inst->isStore()) { | 1143 if (cpu->checker) { 1144 // Need to check the instruction before its fault is processed |
1137 cpu->checker->verify(head_inst); 1138 } 1139#endif 1140 1141 assert(!thread[tid]->inSyscall); 1142 1143 // Mark that we're in state update mode so that the trap's 1144 // execution doesn't generate extra squashes. --- 353 unchanged lines hidden --- | 1145 cpu->checker->verify(head_inst); 1146 } 1147#endif 1148 1149 assert(!thread[tid]->inSyscall); 1150 1151 // Mark that we're in state update mode so that the trap's 1152 // execution doesn't generate extra squashes. --- 353 unchanged lines hidden --- |