xref: /rk3399_ARM-atf/include/common/debug.h (revision 82cb2c1ad9897473743f08437d0a3995bed561b9)
14ecca339SDan Handley /*
251faada7SDouglas Raillard  * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved.
34ecca339SDan Handley  *
4*82cb2c1aSdp-arm  * SPDX-License-Identifier: BSD-3-Clause
54ecca339SDan Handley  */
64ecca339SDan Handley 
74ecca339SDan Handley #ifndef __DEBUG_H__
84ecca339SDan Handley #define __DEBUG_H__
94ecca339SDan Handley 
10289c28a8SDan Handley /* The log output macros print output to the console. These macros produce
11289c28a8SDan Handley  * compiled log output only if the LOG_LEVEL defined in the makefile (or the
12289c28a8SDan Handley  * make command line) is greater or equal than the level required for that
13289c28a8SDan Handley  * type of log output.
14289c28a8SDan Handley  * The format expected is the same as for printf(). For example:
154ecca339SDan Handley  * INFO("Info %s.\n", "message")    -> INFO:    Info message.
16289c28a8SDan Handley  * WARN("Warning %s.\n", "message") -> WARNING: Warning message.
174ecca339SDan Handley  */
18289c28a8SDan Handley 
19289c28a8SDan Handley #define LOG_LEVEL_NONE			0
20289c28a8SDan Handley #define LOG_LEVEL_ERROR			10
21289c28a8SDan Handley #define LOG_LEVEL_NOTICE		20
22289c28a8SDan Handley #define LOG_LEVEL_WARNING		30
23289c28a8SDan Handley #define LOG_LEVEL_INFO			40
24289c28a8SDan Handley #define LOG_LEVEL_VERBOSE		50
25289c28a8SDan Handley 
261319e7b1SSoby Mathew #ifndef __ASSEMBLY__
271319e7b1SSoby Mathew #include <stdio.h>
28289c28a8SDan Handley 
29289c28a8SDan Handley #if LOG_LEVEL >= LOG_LEVEL_NOTICE
30289c28a8SDan Handley # define NOTICE(...)	tf_printf("NOTICE:  " __VA_ARGS__)
314ecca339SDan Handley #else
32289c28a8SDan Handley # define NOTICE(...)
33289c28a8SDan Handley #endif
34289c28a8SDan Handley 
35289c28a8SDan Handley #if LOG_LEVEL >= LOG_LEVEL_ERROR
36289c28a8SDan Handley # define ERROR(...)	tf_printf("ERROR:   " __VA_ARGS__)
37289c28a8SDan Handley #else
38289c28a8SDan Handley # define ERROR(...)
39289c28a8SDan Handley #endif
40289c28a8SDan Handley 
41289c28a8SDan Handley #if LOG_LEVEL >= LOG_LEVEL_WARNING
42289c28a8SDan Handley # define WARN(...)	tf_printf("WARNING: " __VA_ARGS__)
43289c28a8SDan Handley #else
444ecca339SDan Handley # define WARN(...)
454ecca339SDan Handley #endif
464ecca339SDan Handley 
47289c28a8SDan Handley #if LOG_LEVEL >= LOG_LEVEL_INFO
48289c28a8SDan Handley # define INFO(...)	tf_printf("INFO:    " __VA_ARGS__)
49289c28a8SDan Handley #else
50289c28a8SDan Handley # define INFO(...)
51289c28a8SDan Handley #endif
52289c28a8SDan Handley 
53289c28a8SDan Handley #if LOG_LEVEL >= LOG_LEVEL_VERBOSE
54289c28a8SDan Handley # define VERBOSE(...)	tf_printf("VERBOSE: " __VA_ARGS__)
55289c28a8SDan Handley #else
56289c28a8SDan Handley # define VERBOSE(...)
57289c28a8SDan Handley #endif
58289c28a8SDan Handley 
594ecca339SDan Handley 
60c6bc0710SDan Handley void __dead2 do_panic(void);
61a43d431bSSoby Mathew #define panic()	do_panic()
62a43d431bSSoby Mathew 
6351faada7SDouglas Raillard /* Function called when stack protection check code detects a corrupted stack */
6451faada7SDouglas Raillard void __dead2 __stack_chk_fail(void);
6551faada7SDouglas Raillard 
66dad25049SSandrine Bailleux void tf_printf(const char *fmt, ...) __printflike(1, 2);
67b79af934SSoby Mathew 
681319e7b1SSoby Mathew #endif /* __ASSEMBLY__ */
694ecca339SDan Handley #endif /* __DEBUG_H__ */
70