diff --git a/Kconfig b/Kconfig
index 03a2a872a505c246135820cf1d98312e4c27f48c..bc2e4316da339a0373d3177ca9b610905325e1ac 100644
--- a/Kconfig
+++ b/Kconfig
@@ -376,6 +376,12 @@ config ARCH_STDARG_H
 		ARCH_STDARG_H=y and providing. If ARCH_STDARG_H, is not defined, then
 		the stdarg.h header file will stay out-of-the-way in include/nuttx/.
 
+config ARCH_DEBUG_H
+	bool "debug.h"
+	default n
+	---help---
+                The debug.h contains architecture dependent debugging primitives
+
 endmenu # Customize Header Files
 
 menu "Debug Options"
diff --git a/include/debug.h b/include/debug.h
index b1bb2fc9d1210b09517ed843d478c6c939c31a84..0f89753072f051308a0324d191e1a2ea9a1e5866 100644
--- a/include/debug.h
+++ b/include/debug.h
@@ -43,6 +43,10 @@
 #include <nuttx/config.h>
 #include <nuttx/compiler.h>
 
+#ifdef CONFIG_ARCH_DEBUG_H
+# include <arch/debug.h>
+#endif
+
 #include <syslog.h>
 
 /****************************************************************************
@@ -94,6 +98,17 @@
 # define EXTRA_ARG
 #endif
 
+/*
+ * The actual logger function may be overridden in arch/debug.h if needed.
+ */
+
+#ifndef __arch_syslog
+# define __arch_syslog syslog
+#endif
+#ifndef __arch_lowsyslog
+# define __arch_lowsyslog lowsyslog
+#endif
+
 /* Debug macros will differ depending upon if the toolchain supports
  * macros with a variable number of arguments or not.
  */
@@ -104,30 +119,30 @@
 
 #ifdef CONFIG_DEBUG
 # define dbg(format, ...) \
-  syslog(LOG_ERR, EXTRA_FMT format EXTRA_ARG, ##__VA_ARGS__)
+  __arch_syslog(LOG_ERR, EXTRA_FMT format EXTRA_ARG, ##__VA_ARGS__)
 
 # ifdef CONFIG_ARCH_LOWPUTC
 #  define lldbg(format, ...) \
-   lowsyslog(LOG_ERR, EXTRA_FMT format EXTRA_ARG, ##__VA_ARGS__)
+   __arch_lowsyslog(LOG_ERR, EXTRA_FMT format EXTRA_ARG, ##__VA_ARGS__)
 # else
 #  define lldbg(x...)
 # endif
 
 # ifdef CONFIG_DEBUG_VERBOSE
 #  define vdbg(format, ...) \
-   syslog(LOG_DEBUG, EXTRA_FMT format EXTRA_ARG, ##__VA_ARGS__)
+   __arch_syslog(LOG_DEBUG, EXTRA_FMT format EXTRA_ARG, ##__VA_ARGS__)
 
 #  ifdef CONFIG_ARCH_LOWPUTC
 #    define llvdbg(format, ...) \
-     lowsyslog(LOG_DEBUG, EXTRA_FMT format EXTRA_ARG, ##__VA_ARGS__)
+     __arch_lowsyslog(LOG_DEBUG, EXTRA_FMT format EXTRA_ARG, ##__VA_ARGS__)
 #  else
 #    define llvdbg(x...)
 #  endif
 
-# else
+# else /* CONFIG_DEBUG_VERBOSE */
 #  define vdbg(x...)
 #  define llvdbg(x...)
-# endif
+# endif /* CONFIG_DEBUG_VERBOSE */
 
 #else /* CONFIG_DEBUG */