// // writeback.C // // Description: // Implements writeback stage of the AD-MIPS pipeline. // // Version: // $Id$ // // Revision: // $Log$ // // Author: // Brian J. Alliet // Jonathon W. Donaldson // #include "includes.h" void writeback() { int aluwb=0, lmdwb=0; if(writesRD(mem_wb_ir)) { aluwb = RD(mem_wb_ir); } else if(writesRT(mem_wb_ir)) { if(loadsMem(mem_wb_ir)) lmdwb = RT(mem_wb_ir); else aluwb = RT(mem_wb_ir); } else if(writesRA(mem_wb_ir)) { aluwb = RA; //RA defined in globals.h } else if(writesV0(mem_wb_ir)) { aluwb = V0; } if(aluwb) { id_reg_in_bus.IN().pullFrom(mem_wb_aluout); regs[aluwb]->latchFrom(id_reg_in_bus.OUT()); } else if(lmdwb) { id_reg_in_bus.IN().pullFrom(mem_wb_lmd); regs[lmdwb]->latchFrom(id_reg_in_bus.OUT()); } }