summaryrefslogtreecommitdiffstats
path: root/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c
diff options
context:
space:
mode:
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.c15
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;
OpenPOWER on IntegriCloud