/* SPDX-License-Identifier: GPL-2.0 */

#include <linux/trace_events.h>

#include <asm/kvm_hyptrace.h>
#include <asm/kvm_hypevents_defs.h>

#ifndef HYP_EVENT_FILE
# undef __ARM64_KVM_HYPEVENTS_H_
# define  __HYP_EVENT_FILE <asm/kvm_hypevents.h>
#else
# define __HYP_EVENT_FILE __stringify(HYP_EVENT_FILE)
#endif

#define HYP_EVENT(__name, __proto, __struct, __assign, __printk)		\
	HYP_EVENT_FORMAT(__name, __struct);					\
	static void hyp_event_trace_##__name(struct ht_iterator *iter)		\
	{									\
		struct trace_hyp_format_##__name __maybe_unused *__entry =	\
			(struct trace_hyp_format_##__name *)iter->ent;		\
		trace_seq_puts(&iter->seq, #__name);				\
		trace_seq_putc(&iter->seq, ' ');				\
		trace_seq_printf(&iter->seq, __printk);				\
		trace_seq_putc(&iter->seq, '\n');				\
	}
#define HYP_EVENT_MULTI_READ
#include __HYP_EVENT_FILE

#undef he_field
#define he_field(_type, _item)						\
	{								\
		.type = #_type, .name = #_item,				\
		.size = sizeof(_type), .align = __alignof__(_type),	\
		.is_signed = is_signed_type(_type),			\
	},
#undef HYP_EVENT
#define HYP_EVENT(__name, __proto, __struct, __assign, __printk)		\
	static struct trace_event_fields hyp_event_fields_##__name[] = {	\
		__struct							\
		{}								\
	};
#include __HYP_EVENT_FILE

#undef HYP_EVENT
#undef HE_PRINTK
#undef HE_PRINTK_UNKNOWN_FMT
#define __entry REC
#define HE_PRINTK(fmt, args...) "\"" fmt "\", " __stringify(args)
#define HE_PRINTK_UNKNOWN_FMT(fmt, args...) "Unknown"
#define HYP_EVENT(__name, __proto, __struct, __assign, __printk)	\
	static char hyp_event_print_fmt_##__name[] = __printk;		\
	static bool hyp_event_enabled_##__name;				\
	struct hyp_event __section("_hyp_events") hyp_event_##__name = {\
		.name		= #__name,				\
		.enabled	= &hyp_event_enabled_##__name,		\
		.fields		= hyp_event_fields_##__name,		\
		.print_fmt	= hyp_event_print_fmt_##__name,		\
		.trace_func	= hyp_event_trace_##__name,		\
	}
#include __HYP_EVENT_FILE

#undef HYP_EVENT_MULTI_READ
