summaryrefslogtreecommitdiff
path: root/cpu/beta_cpu/iew.hh
diff options
context:
space:
mode:
Diffstat (limited to 'cpu/beta_cpu/iew.hh')
-rw-r--r--cpu/beta_cpu/iew.hh29
1 files changed, 15 insertions, 14 deletions
diff --git a/cpu/beta_cpu/iew.hh b/cpu/beta_cpu/iew.hh
index 52b9ccdb0..de408ef0c 100644
--- a/cpu/beta_cpu/iew.hh
+++ b/cpu/beta_cpu/iew.hh
@@ -1,13 +1,10 @@
-//Todo: Update with statuses. Create constructor. Fix up time buffer stuff.
-//Will also need a signal heading back at least one stage to rename to say
-//how many empty skid buffer entries there are. Perhaps further back even.
+//Todo: Update with statuses.
//Need to handle delaying writes to the writeback bus if it's full at the
-//given time. Squash properly. Load store queue.
+//given time. Load store queue.
#ifndef __SIMPLE_IEW_HH__
#define __SIMPLE_IEW_HH__
-// To include: time buffer, structs, queue,
#include <queue>
#include "base/timebuf.hh"
@@ -22,16 +19,18 @@ class SimpleIEW
private:
//Typedefs from Impl
typedef typename Impl::ISA ISA;
- typedef typename Impl::DynInst DynInst;
+ typedef typename Impl::CPUPol CPUPol;
+ typedef typename Impl::DynInstPtr DynInstPtr;
typedef typename Impl::FullCPU FullCPU;
typedef typename Impl::Params Params;
- typedef typename Impl::CPUPol::RenameMap RenameMap;
+ typedef typename CPUPol::RenameMap RenameMap;
+ typedef typename CPUPol::LDSTQ LDSTQ;
- typedef typename Impl::TimeStruct TimeStruct;
- typedef typename Impl::IEWStruct IEWStruct;
- typedef typename Impl::RenameStruct RenameStruct;
- typedef typename Impl::IssueStruct IssueStruct;
+ typedef typename CPUPol::TimeStruct TimeStruct;
+ typedef typename CPUPol::IEWStruct IEWStruct;
+ typedef typename CPUPol::RenameStruct RenameStruct;
+ typedef typename CPUPol::IssueStruct IssueStruct;
public:
enum Status {
@@ -51,7 +50,7 @@ class SimpleIEW
public:
void squash();
- void squash(DynInst *inst);
+ void squash(DynInstPtr &inst);
void block();
@@ -70,7 +69,7 @@ class SimpleIEW
void setRenameMap(RenameMap *rm_ptr);
- void wakeDependents(DynInst *inst);
+ void wakeDependents(DynInstPtr &inst);
void tick();
@@ -111,11 +110,13 @@ class SimpleIEW
//Will need internal queue to hold onto instructions coming from
//the rename stage in case of a stall.
/** Skid buffer between rename and IEW. */
- queue<RenameStruct> skidBuffer;
+ std::queue<RenameStruct> skidBuffer;
/** Instruction queue. */
IQ instQueue;
+ LDSTQ ldstQueue;
+
/** Pointer to rename map. Might not want this stage to directly
* access this though...
*/