#ifndef CPER_SECTION_GENERIC_H
#define CPER_SECTION_GENERIC_H

#include <json.h>
#include "../edk/Cper.h"

#define GENERIC_PROC_TYPES_KEYS                                                \
	(int[])                                                                \
	{                                                                      \
		0, 1, 2                                                        \
	}
#define GENERIC_PROC_TYPES_VALUES                                              \
	(const char *[])                                                       \
	{                                                                      \
		"IA32/X64", "IA64", "ARM"                                      \
	}
#define GENERIC_ISA_TYPES_KEYS                                                 \
	(int[])                                                                \
	{                                                                      \
		0, 1, 2, 3, 4                                                  \
	}
#define GENERIC_ISA_TYPES_VALUES                                               \
	(const char *[])                                                       \
	{                                                                      \
		"IA32", "IA64", "X64", "ARM A32/T32", "ARM A64"                \
	}
#define GENERIC_ERROR_TYPES_KEYS                                               \
	(int[])                                                                \
	{                                                                      \
		0, 1, 2, 4, 8                                                  \
	}
#define GENERIC_ERROR_TYPES_VALUES                                             \
	(const char *[])                                                       \
	{                                                                      \
		"Unknown", "Cache Error", "TLB Error", "Bus Error",            \
			"Micro-Architectural Error"                            \
	}
#define GENERIC_OPERATION_TYPES_KEYS                                           \
	(int[])                                                                \
	{                                                                      \
		0, 1, 2, 3                                                     \
	}
#define GENERIC_OPERATION_TYPES_VALUES                                         \
	(const char *[])                                                       \
	{                                                                      \
		"Unknown or Generic", "Data Read", "Data Write",               \
			"Instruction Execution"                                \
	}
#define GENERIC_VALIDATION_BITFIELD_NAMES                                      \
	(const char *[])                                                       \
	{                                                                      \
		"processorTypeValid", "processorISAValid",                     \
			"processorErrorTypeValid", "operationValid",           \
			"flagsValid", "levelValid", "cpuVersionValid",         \
			"cpuBrandInfoValid", "cpuIDValid",                     \
			"targetAddressValid", "requestorIDValid",              \
			"responderIDValid", "instructionIPValid"               \
	}
#define GENERIC_FLAGS_BITFIELD_NAMES                                           \
	(const char *[])                                                       \
	{                                                                      \
		"restartable", "preciseIP", "overflow", "corrected"            \
	}

json_object *cper_section_generic_to_ir(void *section);
void ir_section_generic_to_cper(json_object *section, FILE *out);

#endif
