1 /* 2 * SPDX-License-Identifier: BSD-3-Clause 3 * SPDX-FileCopyrightText: Copyright TF-RMM Contributors. 4 */ 5 6 #ifndef RSI_LOGGER_H 7 #define RSI_LOGGER_H 8 9 #include <debug.h> 10 11 /* 12 * RSI_LOG_LEVEL debug level is set to one of: 13 * LOG_LEVEL_NONE = 0 14 * LOG_LEVEL_ERROR = 10 15 * LOG_LEVEL_NOTICE = 20 16 * LOG_LEVEL_WARNING = 30 17 * LOG_LEVEL_INFO = 40 18 * LOG_LEVEL_VERBOSE = 50 19 */ 20 #if (RSI_LOG_LEVEL > LOG_LEVEL_NONE) && (RSI_LOG_LEVEL <= LOG_LEVEL) 21 22 void rsi_log_on_exit(unsigned int function_id, unsigned long args[], 23 unsigned long regs[], bool ret_to_rec); 24 25 /* 26 * Store SMC RSI parameters. Takes an array of regs[] of size 27 * of at least 11 elements and sets up the args for RSI log. 28 */ 29 # define RSI_LOG_SET(regs) \ 30 unsigned long rsi_log_args[] = { \ 31 (regs)[1], (regs)[2], (regs)[3], (regs)[4], (regs)[5], \ 32 (regs)[6], (regs)[7], (regs)[8], (regs)[9], (regs)[10] \ 33 } 34 35 /* 36 * Macro prints RSI call function name and its parameters, result values are 37 * printed when 'rec_to_ret' is set to true. 38 */ 39 # define RSI_LOG_EXIT(id, res, rec_to_ret) rsi_log_on_exit(id, rsi_log_args, res, rec_to_ret) 40 41 #else 42 # define RSI_LOG_SET(regs) 43 # define RSI_LOG_EXIT(id, res, rec_to_ret) 44 45 #endif /* (> LOG_LEVEL_NONE) && (<= LOG_LEVEL) */ 46 #endif /* RSI_LOGGER_H */ 47