[83] | 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 |
---|