162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright 2014, Michael Ellerman, IBM Corp. 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#ifndef _SELFTESTS_POWERPC_PMU_EBB_TRACE_H 762306a36Sopenharmony_ci#define _SELFTESTS_POWERPC_PMU_EBB_TRACE_H 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#include "utils.h" 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#define TRACE_TYPE_REG 1 1262306a36Sopenharmony_ci#define TRACE_TYPE_COUNTER 2 1362306a36Sopenharmony_ci#define TRACE_TYPE_STRING 3 1462306a36Sopenharmony_ci#define TRACE_TYPE_INDENT 4 1562306a36Sopenharmony_ci#define TRACE_TYPE_OUTDENT 5 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_cistruct trace_entry 1862306a36Sopenharmony_ci{ 1962306a36Sopenharmony_ci u8 type; 2062306a36Sopenharmony_ci u8 length; 2162306a36Sopenharmony_ci u8 data[]; 2262306a36Sopenharmony_ci}; 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_cistruct trace_buffer 2562306a36Sopenharmony_ci{ 2662306a36Sopenharmony_ci u64 size; 2762306a36Sopenharmony_ci bool overflow; 2862306a36Sopenharmony_ci void *tail; 2962306a36Sopenharmony_ci u8 data[]; 3062306a36Sopenharmony_ci}; 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_cistruct trace_buffer *trace_buffer_allocate(u64 size); 3362306a36Sopenharmony_ciint trace_log_reg(struct trace_buffer *tb, u64 reg, u64 value); 3462306a36Sopenharmony_ciint trace_log_counter(struct trace_buffer *tb, u64 value); 3562306a36Sopenharmony_ciint trace_log_string(struct trace_buffer *tb, char *str); 3662306a36Sopenharmony_ciint trace_log_indent(struct trace_buffer *tb); 3762306a36Sopenharmony_ciint trace_log_outdent(struct trace_buffer *tb); 3862306a36Sopenharmony_civoid trace_buffer_print(struct trace_buffer *tb); 3962306a36Sopenharmony_civoid trace_print_location(struct trace_buffer *tb); 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci#endif /* _SELFTESTS_POWERPC_PMU_EBB_TRACE_H */ 42