diff options
Diffstat (limited to 'import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c')
-rw-r--r-- | import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c b/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c index 4669a56b..5cd5051f 100644 --- a/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c +++ b/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c @@ -72,6 +72,10 @@ PkTraceBuffer g_pk_trace_buf = //Needed for buffer extraction in simics for now PkTraceBuffer* g_pk_trace_buf_ptr = &g_pk_trace_buf; +#ifdef PK_TRACE_BUFFER_WRAP_MARKER + uint32_t G_wrap_mask = 0; +#endif + // Creates an 8 byte entry in the trace buffer that includes a timestamp, // a format string hash value and a 16 bit parameter. // @@ -102,6 +106,17 @@ void pk_trace_tiny(uint32_t i_parm) //calculate the offset for the next entry in the cb state.offset = g_pk_trace_buf.state.offset + sizeof(PkTraceTiny); +#ifdef PK_TRACE_BUFFER_WRAP_MARKER + + //insert marker to indicate when circular buffer wraps + if ((state.offset & PK_TRACE_SZ) ^ G_wrap_mask) + { + G_wrap_mask = state.offset & PK_TRACE_SZ; + asm volatile ("tw 0, 31, 31"); + } + +#endif + //update the cb state (tbu and offset) g_pk_trace_buf.state.word64 = state.word64; |