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

Last change on this file since 101 was 101, checked in by rosiere, 15 years ago

1) Add soc test
2) fix bug (Pc management, Decod and execute, Update prediction ...)

  • 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 101 2009-01-15 17:19:08Z 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_ADDR    , // update address manager
32      CONTEXT_STATE_KO_MISS_WAITEND , // wait end of event (miss (branch, load))
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_ADDR    : return "context_state_ko_miss_addr"   ; break;
63      case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_MISS_WAITEND : return "context_state_ko_miss_waitend"; 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.