#ifndef morpheo_behavioural_core_multi_ooo_engine_ooo_engine_reexecute_unit_Types_h
#define morpheo_behavioural_core_multi_ooo_engine_ooo_engine_reexecute_unit_Types_h

/*
 * $Id: Types.h 88 2008-12-10 18:31:39Z rosiere $
 *
 * [ Description ]
 * 
 */

#include "Behavioural/include/Types.h"

namespace morpheo {
namespace behavioural {
namespace core {
namespace multi_ooo_engine {
namespace ooo_engine {
namespace reexecute_unit {
  
  typedef enum
    {
      STATE_EMPTY     ,
      STATE_SPR_ACCESS,
      STATE_REEXECUTE 
    } state_t;
  
  typedef struct 
  {
    state_t            state         ;
    Tcontext_t         context_id    ;
    Tcontext_t         front_end_id  ;
    Tpacket_t          packet_id     ;
    Tcontrol_t         spr_wen       ;
    Tcontrol_t         reexecute     ;
    Ttype_t            type          ;
    Toperation_t       operation     ;
    Tgeneral_data_t    address       ;
    Tgeneral_data_t    data          ;
    Tcontrol_t         write_rd      ;
    Tgeneral_address_t num_reg_rd    ;
  } entry_t;
  
  typedef struct
  {
    Tcontrol_t         spr_wen       ;
    Tcontrol_t         reexecute     ;
    Ttype_t            type          ;
    Toperation_t       operation     ;
    Tcontrol_t         write_rd      ;
  } info_t;


}; // end namespace reexecute_unit
}; // end namespace ooo_engine
}; // end namespace multi_ooo_engine
}; // end namespace core

}; // end namespace behavioural
}; // end namespace morpheo              

#endif
