Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRanjith Kumaran <ranjith@cygnus.com>2000-03-18 01:48:54 +0300
committerRanjith Kumaran <ranjith@cygnus.com>2000-03-18 01:48:54 +0300
commit03261851a10dd2d6900a0a00a7515a0a46fb5d76 (patch)
tree7c22ac6cbbc99fd5cd1b5426853be8d4fd7bfcf1 /libgloss/m68k/idp-inbyte.c
parentfae4c299f14fc23e2829c8656992eba21f79242a (diff)
20000317 sourceware import
Diffstat (limited to 'libgloss/m68k/idp-inbyte.c')
-rw-r--r--libgloss/m68k/idp-inbyte.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/libgloss/m68k/idp-inbyte.c b/libgloss/m68k/idp-inbyte.c
new file mode 100644
index 000000000..41db57fc9
--- /dev/null
+++ b/libgloss/m68k/idp-inbyte.c
@@ -0,0 +1,41 @@
+/* idp-inbyte.c --
+ * Copyright (c) 1995 Cygnus Support
+ *
+ * The authors hereby grant permission to use, copy, modify, distribute,
+ * and license this software and its documentation for any purpose, provided
+ * that existing copyright notices are retained in all copies and that this
+ * notice is included verbatim in any distributions. No written agreement,
+ * license, or royalty fee is required for any of the authorized uses.
+ * Modifications to this software may be copyrighted by their authors
+ * and need not follow the licensing terms described here, provided that
+ * the new terms are clearly indicated on the first page of each file where
+ * they apply.
+ */
+
+#include <_ansi.h>
+#include "mc68681reg.h"
+
+/*
+ * The DUART is mapped into the IDP address space in an unusual
+ * manner. The mc68681 is an 8 bit device located on the least
+ * significant byte (byte0) of the data bus. Bytes 3, 2, and
+ * one have nothing in them and writes to these locations are
+ * not valid.
+ */
+
+#define DUART_ADDR 0x00B00000
+#define READREG(x) (*((volatile char *) DUART_ADDR + (x * 4) + 3))
+#define WRITEREG(x, y) (*((char *) DUART_ADDR + (x * 4) + 3) = y)
+
+/*
+ * inbyte -- get a byte from the DUART RX buffer. This only reads
+ * from channel A
+ */
+char
+_DEFUN_VOID (inbyte)
+{
+ while ((READREG (DUART_SRA) & 0x01) == 0x00)
+ ;
+
+ return (READREG (DUART_RBA)); /* read the byte */
+}