+void vMainConfigureTimerForRunTimeStats( void )\r
+{\r
+const unsigned long ulMax32BitValue = 0xffffffffUL;\r
+\r
+ MSS_TIM64_init( MSS_TIMER_PERIODIC_MODE );\r
+ MSS_TIM64_load_immediate( ulMax32BitValue, ulMax32BitValue );\r
+ MSS_TIM64_start();\r
+}\r
+/*-----------------------------------------------------------*/\r
+unsigned long ulGetRunTimeCounterValue( void )\r
+{\r
+unsigned long long ullCurrentValue;\r
+const unsigned long long ulMax64BitValue = 0xffffffffffffffffULL;\r
+unsigned long *pulHighWord, *pulLowWord;\r
+\r
+ pulHighWord = ( unsigned long * ) &ullCurrentValue;\r
+ pulLowWord = pulHighWord++;\r
+ \r
+ MSS_TIM64_get_current_value( ( uint32_t * ) pulHighWord, ( uint32_t * ) pulLowWord );\r
+ \r
+ /* Convert the down count into an upcount. */\r
+ ullCurrentValue = ulMax64BitValue - ullCurrentValue;\r
+ \r
+ /* Scale to a 32bit number of suitable frequency. */\r
+ ullCurrentValue >>= 13;\r
+\r
+ /* Just return 32 bits. */\r
+ return ( unsigned long ) ullCurrentValue;\r
+}\r
+\r