diff options
Diffstat (limited to 'src')
3 files changed, 13 insertions, 6 deletions
diff --git a/src/import/chips/p9/procedures/ppe/pk/kernel/pk_api.h b/src/import/chips/p9/procedures/ppe/pk/kernel/pk_api.h index 8dd4b54d..d864e96c 100644 --- a/src/import/chips/p9/procedures/ppe/pk/kernel/pk_api.h +++ b/src/import/chips/p9/procedures/ppe/pk/kernel/pk_api.h @@ -995,6 +995,8 @@ void pk_trace_big(uint32_t i_hash_and_count, void pk_trace_binary(uint32_t i_hash_and_size, void* bufp); void pk_trace_set_timebase(PkTimebase timebase); +// set the frequency (hz) of the timebase for trace timestamps +void pk_trace_set_freq(uint32_t i_frequency); /// Cast a pointer to another type, in a way that won't cause warnings diff --git a/src/import/chips/p9/procedures/ppe/pk/kernel/pk_init.c b/src/import/chips/p9/procedures/ppe/pk/kernel/pk_init.c index f7ee9b8c..112dc7ad 100644 --- a/src/import/chips/p9/procedures/ppe/pk/kernel/pk_init.c +++ b/src/import/chips/p9/procedures/ppe/pk/kernel/pk_init.c @@ -150,6 +150,7 @@ pk_initialize(PkAddress kernel_stack, __pk_kernel_stack = kernel_stack; __pk_kernel_stack_size = kernel_stack_size; +#if PK_TRACE_SUPPORT #if PK_TIMER_SUPPORT // Initialize the time queue sentinel as a circular queue, set the next @@ -159,10 +160,10 @@ pk_initialize(PkAddress kernel_stack, __pk_time_queue.cursor = 0; __pk_time_queue.next_timeout = PK_TIMEBASE_MAX; -#if PK_TRACE_SUPPORT +#endif /* PK_TIMER_SUPPORT (timed callback)*/ //set the trace timebase HZ - g_pk_trace_buf.hz = timebase_frequency_hz; + pk_trace_set_freq(timebase_frequency_hz); if(initial_timebase != PK_TIMEBASE_CONTINUES) { @@ -177,7 +178,6 @@ pk_initialize(PkAddress kernel_stack, #endif /* PK_TRACE_SUPPORT */ -#endif /* PK_TIMER_SUPPORT */ #if PK_THREAD_SUPPORT @@ -212,7 +212,7 @@ pk_timebase_freq_set(uint32_t timebase_frequency_hz) pk_set_timebase_rshift(timebase_frequency_hz); #if PK_TRACE_SUPPORT - g_pk_trace_buf.hz = timebase_frequency_hz; + pk_trace_set_freq(timebase_frequency_hz); #endif // Does the initial_timebase need to be reset? return PK_OK; diff --git a/src/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c b/src/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c index a119d52c..6e0019c9 100644 --- a/src/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c +++ b/src/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c @@ -62,7 +62,7 @@ PkTraceBuffer g_pk_trace_buf __attribute__ ((section (".sdata"))) = trace_ppe_hash("PARTIAL TRACE ENTRY. HASH_ID = %d", PK_TRACE_HASH_PREFIX), .size = PK_TRACE_SZ, .max_time_change = PK_TRACE_MTBT, - .hz = 500000000, //default. Actual is set in pk_init.c + .hz = 25000000, //Actula value set by pk_trace_set_freq() .time_adj64 = 0, .state.word64 = 0, .cb = {0} @@ -143,6 +143,7 @@ void pk_trace_timer_callback(void* arg) pk_timer_schedule(&g_pk_trace_timer, PK_TRACE_TIMER_PERIOD); } +#endif // PK_TIMER_SUPPORT (timed callback support) // Use this function to synchronize the timebase between multiple PPEs. // PPE A can send PPE B it's current timebase and then PPE B can set that @@ -154,5 +155,9 @@ void pk_trace_set_timebase(PkTimebase timebase) { g_pk_trace_buf.time_adj64 = timebase - pk_timebase_get(); } -#endif // PK_TIMER_SUPPORT + +void pk_trace_set_freq(uint32_t i_frequency) +{ + g_pk_trace_buf.hz = i_frequency; +} #endif // PK_TRACE_SUPPORT |