5#ifndef OPENTITAN_SW_DEVICE_LIB_RUNTIME_LOG_H_
6#define OPENTITAN_SW_DEVICE_LIB_RUNTIME_LOG_H_
101extern char _dv_log_offset[];
109#define OT_FAIL_IF_64_BIT_LOG(arg) OT_FAIL_IF_64_BIT(arg, LOG)
119#define OT_CHECK_VALID_LOG_ARGS(...) \
120 OT_VA_FOR_EACH(OT_FAIL_IF_64_BIT_LOG, ##__VA_ARGS__)
132#define LOG(severity, format, ...) \
134 OT_CHECK_VALID_LOG_ARGS(__VA_ARGS__); \
135 if (device_log_bypass_uart_address() != 0) { \
139 section(".logs.fields"))) static const log_fields_t kLogFields = \
140 LOG_MAKE_FIELDS_(severity, format, ##__VA_ARGS__); \
141 base_log_internal_dv((const log_fields_t *)((char *)&kLogFields + \
142 (uintptr_t)&_dv_log_offset), \
143 OT_VA_ARGS_COUNT(format, ##__VA_ARGS__), \
146 static const log_fields_t log_fields = \
147 LOG_MAKE_FIELDS_(severity, format, ##__VA_ARGS__); \
148 base_log_internal_core(&log_fields, ##__VA_ARGS__); \
155#define LOG_MAKE_FIELDS_(_severity, _format, ...) \
157 .severity = _severity, \
158 .file_name = "" __FILE__ "", \
160 .nargs = OT_VA_ARGS_COUNT(_format, ##__VA_ARGS__), \
172#define LOG_INFO(...) LOG(kLogSeverityInfo, __VA_ARGS__)
182#define LOG_WARNING(...) LOG(kLogSeverityWarn, __VA_ARGS__)
192#define LOG_ERROR(...) LOG(kLogSeverityError, __VA_ARGS__)
205#define LOG_FATAL(...) LOG(kLogSeverityFatal, __VA_ARGS__)