cpu.cc (10464:2a0fe8bca031) | cpu.cc (10487:5914229e6b16) |
---|---|
1/* 2 * Copyright (c) 2011-2012, 2014 ARM Limited 3 * Copyright (c) 2013 Advanced Micro Devices, Inc. 4 * All rights reserved 5 * 6 * The license below extends only to copyright in the software and shall 7 * not be construed as granting a license to any other intellectual 8 * property including but not limited to intellectual property relating --- 821 unchanged lines hidden (view full) --- 830 831 // @todo: 2-27-2008: Fix how we free up rename mappings 832 // here to alleviate the case for double-freeing registers 833 // in SMT workloads. 834 835 // Unbind Int Regs from Rename Map 836 for (int ireg = 0; ireg < TheISA::NumIntRegs; ireg++) { 837 PhysRegIndex phys_reg = renameMap[tid].lookup(ireg); | 1/* 2 * Copyright (c) 2011-2012, 2014 ARM Limited 3 * Copyright (c) 2013 Advanced Micro Devices, Inc. 4 * All rights reserved 5 * 6 * The license below extends only to copyright in the software and shall 7 * not be construed as granting a license to any other intellectual 8 * property including but not limited to intellectual property relating --- 821 unchanged lines hidden (view full) --- 830 831 // @todo: 2-27-2008: Fix how we free up rename mappings 832 // here to alleviate the case for double-freeing registers 833 // in SMT workloads. 834 835 // Unbind Int Regs from Rename Map 836 for (int ireg = 0; ireg < TheISA::NumIntRegs; ireg++) { 837 PhysRegIndex phys_reg = renameMap[tid].lookup(ireg); |
838 | |
839 scoreboard.unsetReg(phys_reg); 840 freeList.addReg(phys_reg); 841 } 842 843 // Unbind Float Regs from Rename Map | 838 scoreboard.unsetReg(phys_reg); 839 freeList.addReg(phys_reg); 840 } 841 842 // Unbind Float Regs from Rename Map |
844 int max_reg = TheISA::NumIntRegs + TheISA::NumFloatRegs; 845 for (int freg = TheISA::NumIntRegs; freg < max_reg; freg++) { | 843 int max_reg = TheISA::FP_Reg_Base + TheISA::NumFloatRegs; 844 for (int freg = TheISA::FP_Reg_Base; freg < max_reg; freg++) { |
846 PhysRegIndex phys_reg = renameMap[tid].lookup(freg); | 845 PhysRegIndex phys_reg = renameMap[tid].lookup(freg); |
847 | |
848 scoreboard.unsetReg(phys_reg); 849 freeList.addReg(phys_reg); 850 } 851 852 // Unbind condition-code Regs from Rename Map | 846 scoreboard.unsetReg(phys_reg); 847 freeList.addReg(phys_reg); 848 } 849 850 // Unbind condition-code Regs from Rename Map |
853 max_reg = TheISA::NumIntRegs + TheISA::NumFloatRegs + TheISA::NumCCRegs; 854 for (int creg = TheISA::NumIntRegs + TheISA::NumFloatRegs; 855 creg < max_reg; creg++) { | 851 max_reg = TheISA::CC_Reg_Base + TheISA::NumCCRegs; 852 for (int creg = TheISA::CC_Reg_Base; creg < max_reg; creg++) { |
856 PhysRegIndex phys_reg = renameMap[tid].lookup(creg); | 853 PhysRegIndex phys_reg = renameMap[tid].lookup(creg); |
857 | |
858 scoreboard.unsetReg(phys_reg); 859 freeList.addReg(phys_reg); 860 } 861 862 // Squash Throughout Pipeline 863 DynInstPtr inst = commit.rob->readHeadInst(tid); 864 InstSeqNum squash_seq_num = inst->seqNum; 865 fetch.squash(0, squash_seq_num, inst, tid); --- 821 unchanged lines hidden --- | 854 scoreboard.unsetReg(phys_reg); 855 freeList.addReg(phys_reg); 856 } 857 858 // Squash Throughout Pipeline 859 DynInstPtr inst = commit.rob->readHeadInst(tid); 860 InstSeqNum squash_seq_num = inst->seqNum; 861 fetch.squash(0, squash_seq_num, inst, tid); --- 821 unchanged lines hidden --- |