patch-2.1.23 linux/arch/sparc/ap1000/apinline.h

Next file: linux/arch/sparc/ap1000/aplib.c
Previous file: linux/arch/sparc/ap1000/Makefile
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.22/linux/arch/sparc/ap1000/apinline.h linux/arch/sparc/ap1000/apinline.h
@@ -0,0 +1,86 @@
+  /*
+   * Copyright 1996 The Australian National University.
+   * Copyright 1996 Fujitsu Laboratories Limited
+   * 
+   * This software may be distributed under the terms of the Gnu
+   * Public License version 2 or later
+  */
+/* inline utilities to support the AP1000 code */
+
+#if 0
+/* MMU bypass access */
+
+static inline unsigned long phys_9_in(unsigned long paddr)
+{
+	unsigned long word;
+
+	__asm__ __volatile__("lda [%1] %2, %0\n\t" :
+			     "=r" (word) :
+			     "r" (paddr), "i" (0x29) :
+			     "memory");
+	return word;
+}
+
+static inline void phys_9_out(unsigned long paddr, unsigned long word)
+{
+	__asm__ __volatile__("sta %0, [%1] %2\n\t" : :
+			     "r" (word), "r" (paddr), "i" (0x29) :
+			     "memory");
+}
+
+static inline unsigned long phys_b_in(unsigned long paddr)
+{
+	unsigned long word;
+
+	__asm__ __volatile__("lda [%1] %2, %0\n\t" :
+			     "=r" (word) :
+			     "r" (paddr), "i" (0x2b) :
+			     "memory");
+	return word;
+}
+
+static inline void phys_b_out(unsigned long paddr, unsigned long word)
+{
+	__asm__ __volatile__("sta %0, [%1] %2\n\t" : :
+			     "r" (word), "r" (paddr), "i" (0x2b) :
+			     "memory");
+}
+
+static inline unsigned long phys_c_in(unsigned long paddr)
+{
+	unsigned long word;
+
+	__asm__ __volatile__("lda [%1] %2, %0\n\t" :
+			     "=r" (word) :
+			     "r" (paddr), "i" (0x2b) :
+			     "memory");
+	return word;
+}
+
+static inline void phys_c_out(unsigned long paddr, unsigned long word)
+{
+	__asm__ __volatile__("sta %0, [%1] %2\n\t" : :
+			     "r" (word), "r" (paddr), "i" (0x2b) :
+			     "memory");
+}
+
+#undef BIF_IN
+#undef BIF_OUT
+#undef DMA_IN
+#undef DMA_OUT
+#undef MSC_IN
+#undef MSC_OUT
+#undef MC_IN
+#undef MC_OUT
+
+#define BIF_IN(reg) phys_9_in(reg)
+#define BIF_OUT(reg,v) phys_9_out(reg,v)
+#define DMA_IN(reg) phys_9_in(reg)
+#define DMA_OUT(reg,v) phys_9_out(reg,v)
+#define MC_IN(reg) phys_b_in((reg) - MC_BASE0)
+#define MC_OUT(reg,v) phys_b_out((reg) - MC_BASE0,v)
+#define MSC_IN(reg) phys_c_in((reg) - MSC_BASE0)
+#define MSC_OUT(reg,v) phys_c_out((reg) - MSC_BASE0,v)
+#endif
+
+

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov