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 | |
---|
13 | namespace morpheo { |
---|
14 | namespace behavioural { |
---|
15 | namespace core { |
---|
16 | namespace multi_front_end { |
---|
17 | namespace front_end { |
---|
18 | namespace 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 |
---|