summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/dmv177/console/debugio.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1998-07-05 11:00:00 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1998-07-05 11:00:00 +0000
commit92a6454654b03e2ae1204f9ad2bac940ebad079a (patch)
treec42a9773ef38e2bd1f3f1655cd0a86c4aa26c2a7 /c/src/lib/libbsp/powerpc/dmv177/console/debugio.c
parentRenamed old_start340.s to startfor340only.s (diff)
downloadrtems-92a6454654b03e2ae1204f9ad2bac940ebad079a.tar.bz2
Converted the console driver to use libchip/serial and added support
for the z85c30 found on the DMV177. This effort started with the console driver from the Radstone PPC2. But some simplifications were made in the hope that console.c can be made a shared file at some point in the near future. Split the debugio from console. This was done so at some point in the future printk support as is found in the pc386 BSP can be shared across all BSPs.
Diffstat (limited to 'c/src/lib/libbsp/powerpc/dmv177/console/debugio.c')
-rw-r--r--c/src/lib/libbsp/powerpc/dmv177/console/debugio.c114
1 files changed, 114 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/powerpc/dmv177/console/debugio.c b/c/src/lib/libbsp/powerpc/dmv177/console/debugio.c
new file mode 100644
index 0000000000..d23df205a3
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/dmv177/console/debugio.c
@@ -0,0 +1,114 @@
+/*
+ * This file contains the debug IO support.
+ *
+ * COPYRIGHT (c) 1998 by Radstone Technology
+ *
+ *
+ * THIS FILE IS PROVIDED TO YOU, THE USER, "AS IS", WITHOUT WARRANTY OF ANY
+ * KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK
+ * AS TO THE QUALITY AND PERFORMANCE OF ALL CODE IN THIS FILE IS WITH YOU.
+ *
+ * You are hereby granted permission to use, copy, modify, and distribute
+ * this file, provided that this notice, plus the above copyright notice
+ * and disclaimer, appears in all copies. Radstone Technology will provide
+ * no support for this code.
+ *
+ * COPYRIGHT (c) 1989-1997.
+ * On-Line Applications Research Corporation (OAR).
+ * Copyright assigned to U.S. Government, 1994.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.OARcorp.com/rtems/license.html.
+ *
+ * $Id$
+ */
+
+#include <bsp.h>
+#include <rtems/libio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <termios.h>
+
+#include <libchip/serial.h>
+
+/*
+ * Load configuration table
+ */
+
+extern console_data Console_Port_Data[];
+extern rtems_device_minor_number Console_Port_Minor;
+
+/* PAGE
+ *
+ * DEBUG_puts
+ *
+ * This should be safe in the event of an error. It attempts to ensure
+ * that no TX empty interrupts occur while it is doing polled IO. Then
+ * it restores the state of that external interrupt.
+ *
+ * Input parameters:
+ * string - pointer to debug output string
+ *
+ * Output parameters: NONE
+ *
+ * Return values: NONE
+ */
+
+void DEBUG_puts(
+ char *string
+)
+{
+ char *s;
+ unsigned32 Irql;
+
+ rtems_interrupt_disable(Irql);
+
+ for ( s = string ; *s ; s++ ) {
+ Console_Port_Tbl[Console_Port_Minor].pDeviceFns->
+ deviceWritePolled(Console_Port_Minor, *s);
+ }
+
+ rtems_interrupt_enable(Irql);
+}
+
+/* PAGE
+ *
+ * DEBUG_puth
+ *
+ * This should be safe in the event of an error. It attempts to ensure
+ * that no TX empty interrupts occur while it is doing polled IO. Then
+ * it restores the state of that external interrupt.
+ *
+ * Input parameters:
+ * ulHexNum - value to display
+ *
+ * Output parameters: NONE
+ *
+ * Return values: NONE
+ */
+
+void DEBUG_puth(
+ unsigned32 ulHexNum
+)
+{
+ unsigned long i,d;
+ unsigned32 Irql;
+ void (*poll)(int minor, char cChar);
+
+ poll = Console_Port_Tbl[Console_Port_Minor].pDeviceFns->deviceWritePolled;
+
+ rtems_interrupt_disable(Irql);
+
+ (*poll)(Console_Port_Minor, '0');
+ (*poll)(Console_Port_Minor, 'x');
+
+ for ( i=32 ; i ; ) {
+ i -= 4;
+ d = (ulHexNum>>i)&0xf;
+ (*poll)(Console_Port_Minor, (d<=9) ? d+'0' : d+'a'-0xa);
+ }
+ rtems_interrupt_enable(Irql);
+}
+