* the GNU General Public License.
*
* Copyright 2003, 2004, 2005, 2006, 2007 Develer S.r.l. (http://www.develer.com/)
- * Copyright 2000, 2001, 2002 Bernardo Innocenti <bernie@codewiz.org>
- *
+ * Copyright 2000, 2001, 2002 Bernie Innocenti <bernie@codewiz.org>
* -->
*
* \brief General pourpose debug support for embedded systems (implementation).
*
- * \version $Id$
- * \author Bernardo Innocenti <bernie@develer.com>
+ * \author Bernie Innocenti <bernie@codewiz.org>
* \author Stefano Fedrigo <aleph@develer.com>
*/
-#include <cpu/irq.h>
-#include <cpu/attr.h>
-#include <cpu/types.h>
-
+#include "cfg/cfg_debug.h"
#include <cfg/macros.h> /* for BV() */
#include <cfg/debug.h>
+#include <cfg/os.h>
-#include <appconfig.h>
-#warning what about these?
-//#include <hw_cpu.h> /* for CLOCK_FREQ */
-//#include <hw_ser.h> /* Required for bus macros overrides */
+#include <cpu/attr.h>
+#include <cpu/types.h>
#include <mware/formatwr.h> /* for _formatted_write() */
-#include <mware/pgm.h>
+#include <cpu/pgm.h>
#ifdef _DEBUG
#if OS_HOSTED
- #include <stdio.h>
+ #include <unistd.h> // write()
+
#define KDBG_WAIT_READY() do { /*nop*/ } while(0)
- #define KDBG_WRITE_CHAR(c) putc((c), stderr)
+ #define KDBG_WRITE_CHAR(c) do { char __c = (c); write(STDERR_FILENO, &__c, sizeof(__c)); } while(0)
#define KDBG_MASK_IRQ(old) do { (void)(old); } while(0)
#define KDBG_RESTORE_IRQ(old) do { /*nop*/ } while(0)
typedef char kdbg_irqsave_t; /* unused */
PGM_FUNC(kputs)(PGM_STR(": "));
}
-int PGM_FUNC(__assert)(const char * PGM_ATTR cond, const char * PGM_ATTR file, int line)
+int PGM_FUNC(__bassert)(const char * PGM_ATTR cond, const char * PGM_ATTR file, int line)
{
klocation(file, line);
PGM_FUNC(kputs)(PGM_STR("Assertion failed: "));
{
const unsigned char *buf = (const unsigned char *)_buf;
+ kprintf("Dumping buffer at addr [%p], %zu bytes", buf, len);
+ size_t i=0;
while (len--)
- kprintf("%02X", *buf++);
+ {
+ if ((i++ % 16) == 0)
+ kputs("\n");
+ kprintf("%02X ", *buf++);
+ }
kputchar('\n');
}