source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Types.h @ 83

Last change on this file since 83 was 83, checked in by rosiere, 16 years ago

Add component : Context_State (manage miss prediction, exception , decod_enable, synchronisation instruction ...)

  • Property svn:keywords set to Id
File size: 5.3 KB
Line 
1#ifndef morpheo_behavioural_core_multi_front_end_front_end_context_state_Types_h
2#define morpheo_behavioural_core_multi_front_end_front_end_context_state_Types_h
3
4/*
5 * $Id: Types.h 83 2008-05-09 18:00:21Z rosiere $
6 *
7 * [ Description ]
8 *
9 */
10
11#include "Behavioural/include/Types.h"
12
13namespace morpheo {
14namespace behavioural {
15namespace core {
16namespace multi_front_end {
17namespace front_end {
18namespace context_state {
19
20//   NOTES :
21//   - MSYNC : memory model is weakly order. MSYNC can be sequentialize memory access
22//   - PSYNC : Finalize all instruction, to enter in a critic zone
23//   - CSYNC : to flush all structure in the CPU, to change a thread
24
25  typedef enum
26    {
27      CONTEXT_STATE_OK              , // none event
28      CONTEXT_STATE_KO_EXCEP        , // wait end of event (exception)
29      CONTEXT_STATE_KO_EXCEP_ADDR   , // update address manager
30      CONTEXT_STATE_KO_EXCEP_SPR    , // update spr (epc, esr, sr[DSX])
31      CONTEXT_STATE_KO_MISS         , // wait end of event (miss (branch, load))
32      CONTEXT_STATE_KO_MISS_ADDR    , // update address manager
33      CONTEXT_STATE_KO_MSYNC        , // wait completion of all memory operation
34      CONTEXT_STATE_KO_MSYNC_ISSUE  , // issue msync operation
35      CONTEXT_STATE_KO_MSYNC_EXEC   , // wait completion of     msync  operation
36      CONTEXT_STATE_KO_PSYNC        , // wait completion of all        operation and after flush pipeline
37      CONTEXT_STATE_KO_PSYNC_FLUSH  , // wait completion of all
38      CONTEXT_STATE_KO_PSYNC_ADDR   , // wait completion of all
39      CONTEXT_STATE_KO_CSYNC        , // wait completion of all        operation and after flush pipeline and flush ALL units (MMU, cache ...)
40      CONTEXT_STATE_KO_CSYNC_FLUSH  ,
41      CONTEXT_STATE_KO_CSYNC_ADDR   ,
42      CONTEXT_STATE_KO_SPR          , // wait completion of all        operation
43      CONTEXT_STATE_KO_SPR_ISSUE    , // issue spr's access
44      CONTEXT_STATE_KO_SPR_EXEC       // wait completion of all        operation (spr access)
45    } context_state_t;
46
47
48}; // end namespace context_state
49}; // end namespace front_end
50}; // end namespace multi_front_end
51}; // end namespace core
52}; // end namespace behavioural
53
54  template<> inline std::string toString<morpheo::behavioural::core::multi_front_end::front_end::context_state::context_state_t>(const morpheo::behavioural::core::multi_front_end::front_end::context_state::context_state_t& x)
55  {
56    switch (x)
57      {
58      case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_OK              : return "context_state_ok"             ; break;
59      case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_EXCEP        : return "context_state_ko_excep"       ; break;
60      case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_EXCEP_ADDR   : return "context_state_ko_excep_addr"  ; break;
61      case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_EXCEP_SPR    : return "context_state_ko_excep_spr"   ; break;
62      case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_MISS         : return "context_state_ko_miss"        ; break;
63      case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_MISS_ADDR    : return "context_state_ko_miss_addr"   ; break;
64      case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_MSYNC        : return "context_state_ko_msync"       ; break;
65      case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_MSYNC_ISSUE  : return "context_state_ko_msync_issue" ; break;
66      case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_MSYNC_EXEC   : return "context_state_ko_msync_exec"  ; break;
67      case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_PSYNC        : return "context_state_ko_psync"       ; break;
68      case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_PSYNC_FLUSH  : return "context_state_ko_psync_flush" ; break;
69      case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_PSYNC_ADDR   : return "context_state_ko_psync_addr"  ; break;
70      case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_CSYNC        : return "context_state_ko_csync"       ; break;
71      case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_CSYNC_FLUSH  : return "context_state_ko_csync_flush" ; break;
72      case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_CSYNC_ADDR   : return "context_state_ko_csync_addr"  ; break;
73      case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_SPR          : return "context_state_ko_spr"         ; break;
74      case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_SPR_ISSUE    : return "context_state_ko_spr_issue"   ; break;
75      case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_SPR_EXEC     : return "context_state_ko_spr_exec"    ; break;
76      default    : return ""      ; break;
77      }
78  };
79
80}; // end namespace morpheo             
81
82#endif
Note: See TracBrowser for help on using the repository browser.