#ifndef morpheo_behavioural_core_multi_front_end_front_end_prediction_unit_branch_target_buffer_branch_target_buffer_register_Types_h
#define morpheo_behavioural_core_multi_front_end_front_end_prediction_unit_branch_target_buffer_branch_target_buffer_register_Types_h

/*
 * $Id$
 *
 * [ Description ]
 * 
 */

#include "Behavioural/include/Types.h"

namespace morpheo {
namespace behavioural {
namespace core {
namespace multi_front_end {
namespace front_end {
namespace prediction_unit {
namespace branch_target_buffer {
namespace branch_target_buffer_register {

  class btb_entry_t
  {
  public : Tcontrol_t          _val             ;
  public : Tcontext_t          _context         ;
  public : Tcontrol_t          _address_dest_val; // when the decod : address_dest_val = 0 when condition == READ_REGISTER or READ_STACK
  public : Tgeneral_data_t     _address_src     ;
  public : Tgeneral_data_t     _address_dest    ;
  public : Tbranch_condition_t _condition       ;
  public : Tcontrol_t          _last_take       ;
  public : Tcounter_t          _accurate        ;
  };

}; // end namespace branch_target_buffer_register
}; // end namespace branch_target_buffer
}; // end namespace prediction_unit
}; // end namespace front_end
}; // end namespace multi_front_end
}; // end namespace core
}; // end namespace behavioural
}; // end namespace morpheo              

#endif
