xref: /rk3399_ARM-atf/include/common/debug.h (revision 2d7e82823dc28ccfa776dc0ecdaeeda8c465bf62)
14ecca339SDan Handley /*
251faada7SDouglas Raillard  * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved.
34ecca339SDan Handley  *
482cb2c1aSdp-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__
27*2d7e8282SSoby Mathew #include <stdarg.h>
281319e7b1SSoby Mathew #include <stdio.h>
29289c28a8SDan Handley 
30289c28a8SDan Handley #if LOG_LEVEL >= LOG_LEVEL_NOTICE
31289c28a8SDan Handley # define NOTICE(...)	tf_printf("NOTICE:  " __VA_ARGS__)
324ecca339SDan Handley #else
33289c28a8SDan Handley # define NOTICE(...)
34289c28a8SDan Handley #endif
35289c28a8SDan Handley 
36289c28a8SDan Handley #if LOG_LEVEL >= LOG_LEVEL_ERROR
37289c28a8SDan Handley # define ERROR(...)	tf_printf("ERROR:   " __VA_ARGS__)
38289c28a8SDan Handley #else
39289c28a8SDan Handley # define ERROR(...)
40289c28a8SDan Handley #endif
41289c28a8SDan Handley 
42289c28a8SDan Handley #if LOG_LEVEL >= LOG_LEVEL_WARNING
43289c28a8SDan Handley # define WARN(...)	tf_printf("WARNING: " __VA_ARGS__)
44289c28a8SDan Handley #else
454ecca339SDan Handley # define WARN(...)
464ecca339SDan Handley #endif
474ecca339SDan Handley 
48289c28a8SDan Handley #if LOG_LEVEL >= LOG_LEVEL_INFO
49289c28a8SDan Handley # define INFO(...)	tf_printf("INFO:    " __VA_ARGS__)
50289c28a8SDan Handley #else
51289c28a8SDan Handley # define INFO(...)
52289c28a8SDan Handley #endif
53289c28a8SDan Handley 
54289c28a8SDan Handley #if LOG_LEVEL >= LOG_LEVEL_VERBOSE
55289c28a8SDan Handley # define VERBOSE(...)	tf_printf("VERBOSE: " __VA_ARGS__)
56289c28a8SDan Handley #else
57289c28a8SDan Handley # define VERBOSE(...)
58289c28a8SDan Handley #endif
59289c28a8SDan Handley 
604ecca339SDan Handley 
61c6bc0710SDan Handley void __dead2 do_panic(void);
62a43d431bSSoby Mathew #define panic()	do_panic()
63a43d431bSSoby Mathew 
6451faada7SDouglas Raillard /* Function called when stack protection check code detects a corrupted stack */
6551faada7SDouglas Raillard void __dead2 __stack_chk_fail(void);
6651faada7SDouglas Raillard 
67dad25049SSandrine Bailleux void tf_printf(const char *fmt, ...) __printflike(1, 2);
68da5241cbSAntonio Nino Diaz int tf_snprintf(char *s, size_t n, const char *fmt, ...) __printflike(3, 4);
69*2d7e8282SSoby Mathew void tf_vprintf(const char *fmt, va_list args);
70*2d7e8282SSoby Mathew void tf_string_print(const char *str);
71b79af934SSoby Mathew 
721319e7b1SSoby Mathew #endif /* __ASSEMBLY__ */
734ecca339SDan Handley #endif /* __DEBUG_H__ */
74