[U-Boot] [PATCH 7/7] DEBUG: Fix debug macros

Marek Vasut marek.vasut at gmail.com
Tue Oct 25 11:41:42 CEST 2011


The current implementation of debug doesn't play well with GCC4.6.
This implementation also fixes GCC4.6 complaints about unused variables
while maintaining code size.

Also, drop the debugX() as that's not used anywhere anymore.

Signed-off-by: Mike Frysinger <vapier at gentoo.org>
Signed-off-by: Marek Vasut <marek.vasut at gmail.com>
Cc: Wolfgang Denk <wd at denx.de>
Cc: Simon Glass <sjg at chromium.org>
---
 include/common.h |   26 ++++++++++++++++----------
 1 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/include/common.h b/include/common.h
index a1683a2..e0d0af6 100644
--- a/include/common.h
+++ b/include/common.h
@@ -116,21 +116,27 @@ typedef volatile unsigned char	vu_char;
 #include <flash.h>
 #include <image.h>
 
-#ifdef	DEBUG
-#define debug(fmt,args...)	printf (fmt ,##args)
-#define debugX(level,fmt,args...) if (DEBUG>=level) printf(fmt,##args);
-#else
-#define debug(fmt,args...)
-#define debugX(level,fmt,args...)
-#endif	/* DEBUG */
-
 #ifdef DEBUG
-# define _DEBUG 1
+#define _DEBUG	1
 #else
-# define _DEBUG 0
+#define _DEBUG	0
 #endif
 
 /*
+ * Output a debug text when condition "cond" is met. The "cond" should be
+ * computed by a preprocessor in the best case, allowing for the best
+ * optimization.
+ */
+#define debug_cond(cond, fmt, args...)		\
+	do {					\
+		if (cond)			\
+			printf(fmt, ##args);	\
+	} while (0)
+
+#define debug(fmt, args...)			\
+	debug_cond(_DEBUG, fmt, ##args)
+
+/*
  * An assertion is run-time check done in debug mode only. If DEBUG is not
  * defined then it is skipped. If DEBUG is defined and the assertion fails,
  * then it calls panic*( which may or may not reset/halt U-Boot (see
-- 
1.7.6.3



More information about the U-Boot mailing list