From 99f217daf307b3cd963bcbce8eb7b025d58f734e Mon Sep 17 00:00:00 2001 From: Patrick Williams Date: Tue, 31 Jul 2012 10:26:12 -0500 Subject: Support for master winkle. RTC: 44730 Change-Id: Ifaeecc659e1bfd8ded4744dc591fc993471519ba Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/1471 Tested-by: Jenkins Server Reviewed-by: Mark W. Wenning Reviewed-by: A. Patrick Williams III --- src/include/kernel/misc.H | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/include/kernel/misc.H') diff --git a/src/include/kernel/misc.H b/src/include/kernel/misc.H index ebec9cc48..c970c337e 100644 --- a/src/include/kernel/misc.H +++ b/src/include/kernel/misc.H @@ -30,6 +30,8 @@ #include #include +#include +#include namespace KernelMisc { @@ -59,5 +61,32 @@ namespace KernelMisc } return true; } + + /** @class WinkleCore + * + * @brief DeferredWork class for implementing cpu_master_winkle. + */ + class WinkleCore : public ::DeferredWork + { + public: + /** ctor + * + * @param i_caller - Task calling cpu_master_winkle to be + * restored after winkle is complete. + */ + WinkleCore(task_t* i_caller) : + iv_caller(i_caller), iv_timebase(0) {}; + + void masterPreWork(); + void activeMainWork(); + void masterPostWork(); + void nonactiveMainWork(); + + private: + /** Caller of cpu_master_winkle() */ + task_t* iv_caller; + /** Current time-base value for restore after winkle. */ + uint64_t iv_timebase; + }; }; #endif -- cgit v1.2.3