diff options
Diffstat (limited to 'inc/if.h')
-rw-r--r-- | inc/if.h | 18 |
1 files changed, 14 insertions, 4 deletions
@@ -1,5 +1,6 @@ #ifndef IF_H #define IF_H +#include "accessor.h" #include "instrDTO.h" #include "response.h" #include "stage.h" @@ -7,15 +8,24 @@ class IF : public Stage { public: - using Stage::Stage; + /** + * Constructor. + * @param The next stage in the pipeline. + * @return A newly allocated IF object. + */ + IF(Stage *next); - Response advance(InstrDTO &i) override; + Response advance(InstrDTO &next_instr, Response p) override; private: /** - * The name this pipeline stages uses to access storage. + * Performs a fetch only if a current fetch is not pending. Pending means + * that a fetch has completed successfully, but the caller stage in the + * pipeline is not ready to receive it. In this case, `curr_instr` is not + * the nullptr. + * @return STALLED if we are waiting on the storage devices, OK otherwise. */ - const Accessor id = FETCH; + void advance_helper(); }; #endif /* IF_H_INCLUDED */ |