#include <string>
#include <vector>
-#include "arch/predecoder.hh"
+#include "arch/decoder.hh"
#include "arch/tlb.hh"
#include "config/the_isa.hh"
#include "cpu/inorder/resources/cache_unit.hh"
{
public:
FetchUnit(std::string res_name, int res_id, int res_width,
- int res_latency, InOrderCPU *_cpu, ThePipeline::Params *params);
+ Cycles res_latency, InOrderCPU *_cpu,
+ ThePipeline::Params *params);
virtual ~FetchUnit();
int res_idx, int slot_num,
unsigned cmd);
- int getSlot(DynInstPtr inst);
-
/** Executes one of the commands from the "Command" enum */
void execute(int slot_num);
+ void trap(const Fault &fault, ThreadID tid, DynInstPtr inst);
+
+ TheISA::Decoder *decoder[ThePipeline::MaxThreads];
+
private:
void squashCacheRequest(CacheReqPtr req_ptr);
void markBlockUsed(std::list<FetchBlock*>::iterator block_it);
+ int blocksInUse();
+
+ void clearFetchBuffer();
+
int instSize;
int fetchBuffSize;
- TheISA::Predecoder predecoder;
-
/** Valid Cache Blocks*/
std::list<FetchBlock*> fetchBuffer;